Mỗi cuộc trò chuyện mới bắt đầu với một tác nhân đã quên các tài liệu của bạn. Nó có thể đọc lại chúng, với chi phí về thời gian và ngữ cảnh, hoặc nó có thể tham khảo một thứ gì đó nhớ được. GroupDocs.Search.Mcp giữ một chỉ mục toàn văn có tên trên đĩa, cục bộ, tồn tại qua các phiên và khởi động lại container, vì vậy Claude Desktop, Cursor hoặc Copilot bắt đầu mỗi phiên với các tài liệu của dự án đã có thể tìm kiếm và làm mới chúng bằng một lời gọi khi các tệp thay đổi:
Tôi đã chỉnh sửa một số hợp đồng. Làm mới chỉ mục hợp đồng, sau đó cho tôi biết hợp đồng nào hiện đang đề cập đến phạt.
Phiên bản từng bước với cấu hình và khắc phục sự cố có trong tài liệu: Cách giữ chỉ mục tài liệu luôn cập nhật khi tệp thay đổi.
“Bộ nhớ” có nghĩa là gì đối với một tác nhân?
Trong thực tế, có hai điều: trạng thái tồn tại bên ngoài cuộc trò chuyện, và một cách rẻ tiền để giữ trạng thái đó đúng. Lịch sử trò chuyện không đáp ứng cả hai: nó kết thúc cùng phiên, và không có gì cập nhật nó khi tài liệu thay đổi. Một chỉ mục tìm kiếm phù hợp hơn cho tài liệu. Nó tồn tại trên đĩa bên cạnh chúng, trả lời “các tệp nào nói X” mà không cần tải chúng, và có thể được làm mới một cách tăng dần.
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
Cách làm mới hoạt động như thế nào?
update_index so sánh chỉ mục với các tệp trên đĩa và chỉ đọc lại những gì đã thay đổi. Đây là kết quả server trả về trong thử nghiệm của chúng tôi, sau khi một hợp đồng được thêm điều khoản phạt giữa hai lần gọi:
-> 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
Số lượng cho bạn biết những gì đã xảy ra: một tệp được đọc lại, không có gì khác bị chạm tới. Các tệp bị xóa sẽ biến mất trong cùng một lần gọi.
Tại sao lại có một chỉ mục cho mỗi dự án?
Vì các tập hợp riêng biệt xứng đáng có câu trả lời riêng. Một câu hỏi về các hợp đồng của năm nay không nên hiển thị các bản nháp của năm trước, và tài liệu của một khách hàng không nên trộn lẫn với tài liệu của khách hàng khác. Tên chỉ mục rất rẻ:
-> create_index {"indexName":"legal-2026"}
<- Index 'legal-2026' created. Add documents with add_to_index
(indexName: 'legal-2026').
Mỗi chỉ mục là một thư mục dưới /data/.groupdocs-search-index, và get_index_info không có tên sẽ liệt kê tất cả chúng. Bạn hiếm khi cần create_index một cách rõ ràng, vì add_to_index sẽ tạo chỉ mục khi dùng lần đầu, nhưng việc đặt tên có chủ ý là cách biến “một chỉ mục” thành “bộ nhớ của dự án này”.
Quy tắc duy nhất về việc xóa
Engine chỉ xóa các đường dẫn đã được thêm vào, không phải các tệp riêng lẻ bên trong chúng. Server nói rõ điều này khi bạn thử:
-> 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: ...
Vì vậy hãy thiết kế cho trường hợp này: nếu bạn dự định bỏ một phần của tập hợp sau này, chẳng hạn một năm, một khách hàng hoặc các bản nháp, hãy đánh chỉ mục các phần đó dưới các đường dẫn riêng (contracts/2025, contracts/2026) và mỗi phần có thể được xóa riêng. Xóa một tệp trên đĩa và chạy update_index cũng sẽ loại bỏ nó.
Giữ chỉ mục luôn cập nhật mà không cần hỏi
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)
Ba cách thực tế để tự động làm mới:
- Trong hướng dẫn của tác nhân. Một dòng trong
CLAUDE.mdhoặcAGENTS.md, “gọiupdate_indexcho chỉ mục của dự án này trước khi trả lời nếu các tệp có thể đã thay đổi”, sẽ khiến tác nhân thực hiện việc này khi bắt đầu một phiên. - Theo lịch trình. Bất kỳ tự động hoá nào hỗ trợ MCP đều có thể gọi
update_indexhàng đêm; khi có ít thay đổi, lời gọi này nhanh. - Sau khi sao chép hàng loạt. Một lời gọi sẽ bắt mọi tệp mới được thêm.
Các chỉ mục cũng tồn tại qua các bản nâng cấp: các chỉ mục được xây dựng bởi GroupDocs.Search 22.7 đến 26.8 sẽ được chuyển đổi khi dùng lần đầu, với bản sao lưu được giữ bên cạnh chúng.
Những gì tác nhân quyết định, và những gì chỉ mục thực hiện
| Tác nhân quyết định | Chỉ mục thực hiện |
|---|---|
| chỉ mục nào mà một câu hỏi thuộc về | giữ mỗi chỉ mục được đặt tên trong thư mục riêng của nó |
| khi các tệp có thể đã thay đổi | đọc lại chỉ các tệp đã thay đổi, được thêm và bị xóa |
| các từ nào để tìm kiếm, và các biến thể cần thử | khớp các từ, cụm từ, phạm vi; báo cáo các thuật ngữ đã tìm thấy |
| bao nhiêu ngữ cảnh để trích dẫn | trả về các đoạn văn với số lượng từ yêu cầu xung quanh chúng |
| những gì sẽ nói với bạn | không có gì: nó trả về số lượng, đường dẫn và văn bản, không bao giờ là kết luận |
Sự phân chia này là có chủ ý. Phán đoán vẫn ở mô hình, và các sự kiện mà nó suy luận đến đến từ một công cụ mà bạn có thể kiểm tra đầu ra.
Giới hạn trung thực
- Trong chế độ đánh giá, một chỉ mục chứa tối đa 100 tài liệu và một tìm kiếm trả về tối đa 10. Gọi
get_license_statustrước khi dựa vào chỉ mục như là nguồn sự thật. - Chỉ mục chỉ tồn tại nếu
/data(hoặc volume chỉ mục) là một thư mục host được gắn; nếu không nó sẽ biến mất cùng container. - Chỉ mục chứa văn bản của tài liệu: hãy bảo vệ và xử lý nó như các tài liệu.
- Chỉ hỗ trợ Docker; trên Linux thêm
--user "$(id -u):$(id -g)"để container có thể ghi chỉ mục.
Câu hỏi thường gặp
Tác nhân có nhớ các tài liệu của tôi giữa các phiên không?
Với một chỉ mục bền vững, có: chỉ mục vẫn nằm trên đĩa và phiên tiếp theo sẽ tìm kiếm nó mà không cần đọc lại bất kỳ thứ gì.
Tôi có cần xây dựng lại chỉ mục khi các tệp thay đổi không?
Không. update_index chỉ đọc lại các tệp đã thay đổi, được thêm và bị xóa.
Tôi có thể giữ chỉ mục riêng biệt khỏi các tài liệu chỉ đọc không?
Có. Gắn các tài liệu ở chế độ chỉ đọc, gắn một thư mục có thể ghi tại /index, và đặt GROUPDOCS_MCP_INDEX_PATH=/index.
Đi sâu hơn
- Tài liệu, hướng dẫn chuẩn: Cách giữ chỉ mục tài liệu luôn cập nhật khi tệp thay đổi
- Trung tâm tài liệu: GroupDocs.Search MCP Server
- Bắt đầu tại đây: Bạn có cần một cơ sở dữ liệu vector để đặt câu hỏi về một thư mục tài liệu không?
- Liên quan: grep không thể đọc PDF: cung cấp cho tác nhân lập trình của bạn một chỉ mục tài liệu
- Liên quan: Tại sao một tác nhân AI không nên đọc 300 hợp đồng để trả lời một câu hỏi
- Liên quan: Câu trả lời có nền tảng từ các tệp của bạn: trích dẫn đoạn văn, không phải bộ nhớ của mô hình
- Liên quan: Tìm kiếm lưu trữ email của bạn với một tác nhân AI: PST, MSG, EML và các tệp đính kèm bên trong
- Kiến trúc nội bộ và mô hình bảo mật: 3 kiến trúc cho xử lý tài liệu AI, và kiến trúc giữ tệp trong mạng nội bộ của bạn
- Phát hành engine: GroupDocs.Search for .NET 26.10 – October 2026 Release Highlights
- Câu hỏi: GroupDocs Search forum
- Nguồn: GroupDocs.Search.Mcp on GitHub