Кожен новий чат починається з агента, який забув ваші документи. Він може перечитати їх, витрачаючи час і контекст, або звернутися до чогось, що пам’ятає. GroupDocs.Search.Mcp зберігає іменований повнотекстовий індекс на диску, локально, який зберігається між сеансами та перезапусками контейнера, тому Claude Desktop, Cursor або Copilot запускаються кожен сеанс з уже доступними для пошуку документами проєкту і оновлюють їх одним викликом, коли файли змінюються:
Я відредагував деякі контракти. Оновіть індекс контрактів, а потім повідомте, які контракти зараз містять пункт про штраф.
Крок‑за‑кроком з конфігурацією та усуненням проблем описано в документації: Як підтримувати індекс документів актуальним під час зміни файлів.
Що означає «пам’ять» для агента?
На практиці це два поняття: стан, що зберігається поза розмовою, і недорогий спосіб підтримувати цей стан актуальним. Історія чату не підходить: вона закінчується разом із сеансом, і нічого не оновлює, коли документ змінюється. Пошуковий індекс краще підходить для документів. Він живе на диску поруч із ними, відповідає на запит «які файли містять X», не завантажуючи їх, і може оновлюватися інкрементально.
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
Як працює оновлення?
update_index порівнює індекс з файлами на диску і перечитує лише те, що змінилося. Ось що сервер повернув у нашому тесті після того, як до одного контракту було додано пункт про штраф між двома викликами:
-> 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
Лічильники показують, що сталося: один файл перечитано, інше не торкнулося. Видалені файли зникають під час того ж виклику.
Чому один індекс на проєкт?
Тому що окремі корпуси заслуговують окремих відповідей. Питання про контракти цього року не повинно піднімати чернетки минулого року, і документи одного клієнта не повинні змішуватись з документами іншого. Імена індексів недорогі:
-> create_index {"indexName":"legal-2026"}
<- Index 'legal-2026' created. Add documents with add_to_index
(indexName: 'legal-2026').
Кожен індекс — це папка в /data/.groupdocs-search-index, а get_index_info без вказання імені виводить їх усі. Рідко потрібно явно викликати create_index, бо add_to_index створює індекс при першому використанні, проте навмисне їх іменування перетворює «якийсь індекс» у «пам’ять цього проєкту».
Єдине правило щодо видалення
Двигун видаляє шляхи, які були додані, а не окремі файли всередині них. Сервер повідомляє про це чітко, коли ви намагаєтесь:
-> 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: ...
Тому плануйте заздалегідь: якщо ви плануєте згодом відкинути частину корпусу, наприклад рік, клієнта або чернетки, індексуйте ці частини як окремі шляхи (contracts/2025, contracts/2026) і кожен з них можна буде видалити окремо. Видалення файлу з диска та запуск update_index також його прибирає.
Підтримка актуальності без запитів
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)
Три практичні способи автоматизувати оновлення:
- У інструкціях агента. Рядок у
CLAUDE.mdабоAGENTS.md: «викликатиupdate_indexдля індексу цього проєкту перед відповіддю, якщо файли могли змінитися», змусить агента робити це на початку сеансу. - За розкладом. Будь‑яка автоматизація, сумісна з MCP, може викликати
update_indexщовечора; коли змін мало, виклик швидкий. - Після масового копіювання. Один виклик підхоплює всі додані файли.
Індекси також переживають оновлення: індекси, створені GroupDocs.Search 22.7‑26.8, конвертуються при першому використанні, з резервною копією, що зберігається поруч.
Що вирішує агент, а що робить індекс
| Що вирішує агент | Що робить індекс |
|---|---|
| який індекс використати для питання | зберігає кожен іменований індекс у власній папці |
| коли файли могли змінитися | перечитує лише змінені, додані та видалені файли |
| які слова шукати і які варіанти пробувати | знаходить слова, фрази, діапазони; повідомляє знайдені терміни |
| скільки контексту цитувати | повертає уривки з потрібною кількістю слів навколо |
| що сказати вам | нічого: повертає лише лічильники, шляхи та текст, без висновків |
Розподіл навмисний. Судження залишається за моделлю, а факти, на яких вона базується, надходять від інструменту, вихід яких ви можете перевірити.
Чесні обмеження
- У режимі оцінки індекс містить не більше 100 документів, а пошук повертає не більше 10 результатів. Виконайте
get_license_statusперед тим, як покладатися на індекс як на джерело правди. - Індекс зберігається лише якщо
/data(або том індексу) змонтовано як папка хоста; інакше він зникає разом із контейнером. - Індекс містить текст документів: захищайте та утилізуйте його так само, як і самі документи.
- Тільки Docker; у Linux додайте
--user "$(id -u):$(id -g)", щоб контейнер міг записувати індекс.
FAQ
Чи пам’ятає агент мої документи між сеансами?
При наявності постійного індексу — так: індекс залишається на диску, і наступний сеанс шукає в ньому без перечитування.
Чи потрібно перебудовувати індекс, коли файли змінюються?
Ні. update_index перечитує лише змінені, додані та видалені файли.
Чи можу я тримати індекс окремо від документів лише для читання?
Так. Змонтуйте документи лише для читання, змонтуйте записувану папку в /index і встановіть GROUPDOCS_MCP_INDEX_PATH=/index.
Поглиблене вивчення
- Документація, канонічний посібник: Як підтримувати індекс документів актуальним під час зміни файлів
- Центр документації: GroupDocs.Search MCP Server
- Почніть тут: Чи потрібна вам векторна база даних, щоб ставити питання щодо папки документів?
- Пов’язано: grep не може читати PDF: дайте вашому кодуючому агенту індекс документів
- Пов’язано: Чому AI‑агент не повинен читати 300 контрактів, щоб відповісти на одне питання
- Пов’язано: Обґрунтовані відповіді з ваших файлів: цитуйте уривок, а не пам’ять моделі
- Пов’язано: Пошук у вашому архіві електронної пошти за допомогою AI‑агента: PST, MSG, EML та вкладення всередині
- On‑premise та модель безпеки: 3 архітектури для AI‑обробки документів і та, що тримає файли всередині вашої мережі
- Випуск двигуна: GroupDocs.Search for .NET 26.10 – Основні моменти випуску жовтня 2026
- Питання: GroupDocs Search forum
- Джерело: GroupDocs.Search.Mcp on GitHub