Nhiều kiến thức kinh doanh tồn tại trong email, và phần bạn cần thường nằm trong tệp đính kèm: báo giá, phụ lục đã ký, lịch trình đã sửa đổi. GroupDocs.Search.Mcp, chạy cục bộ trong Docker, mở các tệp email và kho lưu trữ (PST, OST, MSG, EML) và lập chỉ mục mọi tin nhắn và mọi tệp đính kèm, vì vậy Claude Desktop, Cursor hoặc Copilot có thể tìm kiếm trong kho lưu trữ ngay tại chỗ và nói chính xác tệp đính kèm nào đã chứa kết quả phù hợp:
Lập chỉ mục thư mục mail. Tin nhắn nào đề cập đến việc tăng giá, và nó nói gì chính xác?
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 tìm kiếm kho lưu trữ email và tệp đính kèm bằng một AI agent, cục bộ.
Tại sao email lại khó cho một agent?
Bởi vì một kho lưu trữ là một container của các container. Một PST chứa các thư mục, các thư mục chứa tin nhắn, tin nhắn chứa tệp đính kèm, và tệp đính kèm là các tệp Word, PDF và bảng tính tự chúng. Một agent có công cụ file chỉ nhìn thấy một tệp nhị phân lớn. Xuất kho lưu trữ ra các tệp rời rạc trước tiên có thể hoạt động, nhưng nó chậm, sao chép dữ liệu nhạy cảm lên đĩa, và phải thực hiện lại khi kho lưu trữ thay đổi. Và một mô hình không thể đọc PST được.
Công cụ tìm kiếm tự xử lý việc lồng nhau này. Mỗi tin nhắn và mỗi tệp đính kèm trở thành một mục có thể tìm kiếm, và kết quả ghi lại cả vị trí của container và vị trí bên trong nó mà kết quả khớp được tìm thấy.
Kết quả khớp bên trong một tệp đính kèm trông như thế nào?
Đây là những gì máy chủ trả về trong thử nghiệm của chúng tôi với ba tin nhắn EML. Cụm từ “price increase” chỉ xuất hiện trong báo giá Word đính kèm với một trong số chúng; phần thân tin nhắn chỉ nói “please find the updated quotation attached”.
-> add_to_index {"documentsPath":"mail","indexName":"mail"}
<- Indexed 'mail' into index 'mail': 3 document(s) added, 3 in the index.
-> search {"query":"\"price increase\"","indexName":"mail"}
<- { "documentsFound": 1, "documents": [
{ "filePath": "mail/2026-09-18-re-q3-pricing.eml",
"innerPath": "quotation-Q-2026-118.docx",
"occurrences": 1 } ] }
-> get_text_fragments {"query":"\"price increase\"","indexName":"mail"}
<- === mail/2026-09-18-re-q3-pricing.eml → quotation-Q-2026-118.docx
(1 occurrence(s)) ===
…Due to raw material costs we announce a price increase
of 6 percent from 2026-11-01.…
filePath là tin nhắn; innerPath là tệp đính kèm. Agent có thể trả lời “tin nhắn Re: Q3 pricing từ Contoso, trong báo giá đính kèm Q-2026-118: tăng 6 % từ ngày 1 Tháng 11”, và mọi phần của câu trả lời đều có thể truy xuất.
mail/2026-09-18-re-q3-pricing.eml <- filePath
|- body: "please find the updated quotation attached"
'- attachment: quotation-Q-2026-118.docx <- innerPath
"...we announce a price increase of 6 percent..."
Các câu hỏi hoạt động trên mail
Ngôn ngữ truy vấn thông thường vẫn áp dụng, và một vài mẫu đặc biệt hữu ích cho thư từ. Tất cả các mẫu này đã được kiểm tra trên cùng một hộp thư thử nghiệm:
- “Tin nhắn nào từ Fabrikam đề cập đến sự chậm trễ giao hàng?”:
fabrikam AND delay. Địa chỉ người gửi được lập chỉ mục cùng với tin nhắn, vì vậycontosocũng tìm thấy một hoá đơn mà nội dung không bao giờ đề cập đến công ty. - “Tìm mọi email đề cập đến đơn hàng 77812” :
77812. Các số nguyên được coi là từ. - “Các hoá đơn nào đến hạn trong tháng 10?”:
invoice AND content: daterange(2026-10-01 ~~ 2026-10-31). Điều này khớp với các ngày viết trong nội dung tin nhắn, ở đây “due on 2026-10-22”. Tiền tốcontent:quan trọng: nếu không có nó, một khoảng thời gian ngày cũng sẽ khớp với các ngày mà engine ghi lại cho mỗi tệp.
Tại sao việc chạy cục bộ quan trọng hơn đối với mail hơn bất kỳ thứ gì khác
Email là nơi chứa tài liệu nhạy cảm: dữ liệu cá nhân, đàm phán, chuỗi HR, tư vấn pháp lý. Các công cụ tìm kiếm yêu cầu hộp thư được tải lên hoặc đồng bộ tới một dịch vụ là không thể chấp nhận đối với nhiều đội ngũ. Ở đây, kho lưu trữ được gắn vào container ở chế độ chỉ đọc, lập chỉ mục tại chỗ và tìm kiếm tại chỗ. Văn bản duy nhất rời khỏi máy là những đoạn mà agent trích dẫn trong câu trả lời, và với mô hình được lưu trữ cục bộ, thậm chí không có điều đó.
Để thiết lập chặt chẽ hơn, gắn kho lưu trữ ở chế độ chỉ đọc và cấp cho chỉ mục một volume riêng:
docker run --rm -i \
-v /srv/mail:/data:ro \
-v /srv/mail-index:/index -e GROUPDOCS_MCP_INDEX_PATH=/index \
ghcr.io/groupdocs-search/search-net-mcp:latest
Phạm vi một kho lưu trữ lớn
Một kho lưu trữ hàng chục ngàn tin nhắn có thể lập chỉ mục tốt với giấy phép, nhưng cần lên kế hoạch cẩn thận. Lập chỉ mục theo thư mục hoặc theo năm dưới dạng các đường dẫn riêng (mail/2025, mail/2026), để một năm có thể được xóa hoặc tái tạo độc lập, vì engine xóa toàn bộ các đường dẫn đã lập chỉ mục thay vì từng tệp riêng lẻ. Giữ mail trong một chỉ mục riêng, tách biệt với hợp đồng hoặc báo cáo, để câu hỏi về thư từ không phải lục lọi mọi thứ khác. Khi kho lưu trữ mở rộng, update_index sẽ lấy các tin nhắn mới mà không cần đọc lại các tin cũ.
Giới hạn thực tế
- Ở 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, và mọi tin nhắn và tệp đính kèm đều được tính, vì vậy một kho lưu trữ thực tế cần giấy phép. Hãy gọi
get_license_statustrước. - Một PST lớn mất thời gian để lập chỉ mục: mọi tin nhắn và tệp đính kèm đều được mở. Lập chỉ mục một lần, sau đó dùng
update_index. - Các tệp đính kèm được quét mà không có lớp văn bản chỉ được lập chỉ mục dựa trên thuộc tính tệp; không có OCR.
- Chỉ hỗ trợ Docker; trên Linux thêm
--user "$(id -u):$(id -g)"trừ khi bạn sử dụng thiết lập chỉ đọc ở trên.
Câu hỏi thường gặp
Tôi có thể tìm kiếm tệp PST bằng AI mà không cần Outlook không?
Có. Engine đọc trực tiếp PST, OST, MSG và EML; Outlook không tham gia, và không có gì được xuất ra.
Nó có tìm kiếm bên trong các tệp đính kèm email không?
Có. Các tệp đính kèm được lập chỉ mục như các mục của tin nhắn, và một kết quả khớp bên trong một tệp sẽ trả về với innerPath chỉ tên tệp đính kèm.
Hộp thư của tôi có được tải lên bất kỳ nơi nào không?
Không. Nó được đọc bên trong một container cục bộ; chỉ những đoạn mà agent trích dẫn mới tới nhà cung cấp mô hình của bạn.
Đi sâu hơn
- Tài liệu, hướng dẫn chuẩn: Cách tìm kiếm kho lưu trữ email và tệp đính kèm bằng một AI agent, cục bộ
- 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: Tại sao một AI agent 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ó căn cứ 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: grep không thể đọc PDF: cung cấp cho coding agent của bạn một chỉ mục tài liệu
- Liên quan: Bộ nhớ dự án cho AI agents: một chỉ mục cho mỗi dự án, luôn được cập nhật
- Kiến trúc tại chỗ 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ữ file trong mạng nội bộ của bạn
- Câu hỏi: GroupDocs Search forum
- Nguồn: GroupDocs.Search.Mcp trên GitHub