Każda nowa rozmowa zaczyna się od agenta, który zapomniał o Twoich dokumentach. Może je ponownie odczytać, kosztem czasu i kontekstu, albo może skorzystać z czegoś, co je pamięta. GroupDocs.Search.Mcp przechowuje nazwany indeks pełnotekstowy na dysku, lokalnie, który przetrwa między sesjami i ponownymi uruchomieniami kontenera, więc Claude Desktop, Cursor czy Copilot rozpoczynają każdą sesję z dokumentami projektu już gotowymi do przeszukiwania i odświeżają je jednym wywołaniem, gdy pliki się zmienią:
Edytowałem kilka umów. Odśwież indeks umów, a potem powiedz mi, które umowy teraz wspominają o karze.
Krok po kroku, wraz z konfiguracją i rozwiązywaniem problemów, znajduje się w dokumentacji: How to keep a document index current as files change.
Co oznacza „pamięć” dla agenta?
W praktyce dwie rzeczy: stan, który utrzymuje się poza rozmową, oraz tani sposób, aby ten stan był prawdziwy. Historia czatu nie spełnia żadnego z tych wymagań: kończy się wraz z sesją i nic jej nie aktualizuje, gdy dokument się zmieni. Indeks wyszukiwania lepiej pasuje do dokumentów. Żyje na dysku obok nich, odpowiada na pytanie „które pliki mówią X” bez ich ładowania i może być odświeżany przyrostowo.
session 1 add_to_index --> index "contracts" --+
| kept on disk in
session 2 search, get_text_fragments <--------+ /data/.groupdocs-search-
(nothing is re-read) index/contracts
files edit update_index --> re-reads changed, added, deleted files only
new project create_index {"indexName":"legal-2026"} --> a separate index
Jak działa odświeżanie?
update_index porównuje indeks z plikami na dysku i ponownie odczytuje tylko to, co się zmieniło. Oto co serwer zwrócił w naszym teście, po tym jak do jednej umowy dodano klauzulę kary pomiędzy dwoma wywołaniami:
-> get_index_info {"indexName":"contracts"}
<- { "documentCount": 5, "indexedPaths": [ "contracts" ],
"documentsWithErrors": [], "status": "Ready" }
-> update_index {"indexName":"contracts"}
<- Index 'contracts' updated: 0 added, 1 updated, 0 removed;
5 document(s) in the index.
-> search {"query":"penalty","indexName":"contracts"}
<- documentsFound 3, including the edited initech-nda.docx
Liczby mówią, co się stało: jeden plik został ponownie odczytany, nic innego nie zostało dotknięte. Usunięte pliki znikają przy tym samym wywołaniu.
Dlaczego jeden indeks na projekt?
Ponieważ odrębne korpusy zasługują na odrębne odpowiedzi. Pytanie o umowy z bieżącego roku nie powinno wyświetlać projektów z poprzedniego roku, a dokumenty jednego klienta nie powinny mieszać się z dokumentami innego klienta. Nazwy indeksów są tanie:
-> create_index {"indexName":"legal-2026"}
<- Index 'legal-2026' created. Add documents with add_to_index
(indexName: 'legal-2026').
Każdy indeks to folder w /data/.groupdocs-search-index, a get_index_info bez podania nazwy wypisuje je wszystkie. Rzadko potrzebujesz wywoływać create_index ręcznie, ponieważ add_to_index tworzy indeks przy pierwszym użyciu, ale nadanie im przemyślanych nazw zamienia „indeks” w „pamięć tego projektu”.
Jedna zasada dotycząca usuwania
Silnik usuwa ścieżki, które zostały dodane, a nie pojedyncze pliki w ich wnętrzu. Serwer jasno to komunikuje, gdy próbujesz:
-> remove_from_index {"documentPath":"contracts/hooli-supply-terms.txt",...}
<- Removal failed for 'contracts/hooli-supply-terms.txt':
'contracts/hooli-supply-terms.txt' is inside the indexed folder
'contracts'. GroupDocs.Search removes whole indexed paths only: ...
Projektuj więc z myślą o tym: jeśli zamierzasz później usunąć część korpusu, np. rok, klienta lub wersje robocze, indeksuj te części jako odrębne ścieżki (contracts/2025, contracts/2026) i każdą z nich można usunąć osobno. Usunięcie pliku z dysku i uruchomienie update_index także go usuwa.
Utrzymywanie aktualności bez pytania
create_index (optional)
|
v
add_to_index ---> search ---> get_text_fragments
^ ^
| | get_index_info: counts, paths, status
update_index (files changed on disk)
|
remove_from_index (only a path that was given to add_to_index)
Trzy praktyczne sposoby, aby odświeżanie było automatyczne:
- W instrukcjach agenta. Linijka w
CLAUDE.mdlubAGENTS.md: „wywołajupdate_indexdla indeksu tego projektu przed udzieleniem odpowiedzi, jeśli pliki mogły się zmienić”, sprawi, że agent zrobi to na początku sesji. - Na harmonogramie. Każda automatyzacja obsługująca MCP może wywoływać
update_indexco noc; gdy niewiele się zmieniło, wywołanie jest szybkie. - Po masowym kopiowaniu. Jedno wywołanie wykryje każdy dodany plik.
Indeksy przetrwają także aktualizacje: indeksy zbudowane przez GroupDocs.Search 22.7 do 26.8 są konwertowane przy pierwszym użyciu, przy czym kopia zapasowa jest przechowywana obok nich.
Co decyduje agent, a co robi indeks
| Co decyduje agent | Co robi indeks |
|---|---|
| do którego indeksu należy pytanie | przechowuje każdy nazwany indeks w osobnym folderze |
| kiedy pliki mogły się zmienić | ponownie odczytuje tylko zmienione, dodane i usunięte pliki |
| które słowa wyszukać i jakie warianty wypróbować | dopasowuje słowa, frazy, zakresy; raportuje znalezione terminy |
| ile kontekstu zacytować | zwraca fragmenty z żądaną liczbą słów wokół nich |
| co Ci powiedzieć | nic: zwraca liczbę, ścieżki i tekst, nigdy wnioski |
Podział jest celowy. Ocena pozostaje w gestii modelu, a fakty, na których model się opiera, pochodzą z narzędzia, którego wynik możesz sprawdzić.
Szczere ograniczenia
- W trybie ewaluacji indeks przechowuje maksymalnie 100 dokumentów, a wyszukiwanie zwraca maksymalnie 10 wyników. Wywołaj
get_license_statusprzed poleganiem na indeksie jako źródle prawdy. - Indeks utrzymuje się tylko wtedy, gdy
/data(lub wolumen indeksu) jest zamontowanym folderem hosta; w przeciwnym razie znika wraz z kontenerem. - Indeks zawiera tekst dokumentów: chroń go i usuń tak, jak same dokumenty.
- Tylko Docker; na Linuksie dodaj
--user "$(id -u):$(id -g)", aby kontener mógł zapisywać indeks.
FAQ
Czy agent pamięta moje dokumenty między sesjami?
Tak, przy trwałym indeksie: indeks pozostaje na dysku i kolejna sesja przeszukuje go bez ponownego odczytywania czegokolwiek.
Czy muszę przebudowywać indeks, gdy pliki się zmienią?
Nie. update_index ponownie odczytuje tylko zmienione, dodane i usunięte pliki.
Czy mogę trzymać indeks oddzielnie od dokumentów tylko do odczytu?
Tak. Zamontuj dokumenty jako read‑only, zamontuj zapisywalny folder w /index i ustaw GROUPDOCS_MCP_INDEX_PATH=/index.
Zagłęb się
- Dokumentacja, kanoniczny przewodnik: How to keep a document index current as files change
- Centrum dokumentacji: GroupDocs.Search MCP Server
- Zacznij tutaj: Do you need a vector database to ask questions about a folder of documents?
- Powiązane: grep can’t read PDF: give your coding agent a document index
- Powiązane: Why an AI agent should not read 300 contracts to answer one question
- Powiązane: Grounded answers from your files: quote the passage, not the model’s memory
- Powiązane: Search your email archive with an AI agent: PST, MSG, EML and the attachments inside
- Model on‑premise i bezpieczeństwo: 3 architectures for AI document processing, and the one that keeps files inside your network
- Wydanie silnika: GroupDocs.Search for .NET 26.10 – October 2026 Release Highlights
- Pytania: GroupDocs Search forum
- Źródło: GroupDocs.Search.Mcp on GitHub