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:

  1. W instrukcjach agenta. Linijka w CLAUDE.md lub AGENTS.md: „wywołaj update_index dla indeksu tego projektu przed udzieleniem odpowiedzi, jeśli pliki mogły się zmienić”, sprawi, że agent zrobi to na początku sesji.
  2. Na harmonogramie. Każda automatyzacja obsługująca MCP może wywoływać update_index co noc; gdy niewiele się zmieniło, wywołanie jest szybkie.
  3. 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_status przed 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ę