ความรู้ทางธุรกิจจำนวนมากอยู่ในอีเมล, และส่วนที่คุณต้องการมักอยู่ในไฟล์แนบ: ใบเสนอราคา, การแก้ไขที่ลงนาม, ตารางที่ปรับปรุงใหม่. GroupDocs.Search.Mcp ที่ทำงานใน Docker บนเครื่องท้องถิ่นเปิดไฟล์อีเมลและคลังเก็บ (PST, OST, MSG, EML) และทำดัชนีทุกข้อความและทุกไฟล์แนบ, ดังนั้น Claude Desktop, Cursor หรือ Copilot สามารถค้นหาคลังเก็บโดยตรงและบอกได้อย่างแม่นยำว่าไฟล์แนบใดที่เป็นแหล่งที่มาของผลลัพธ์:
ดัชนีโฟลเดอร์เมล. ข้อความใดกล่าวถึงการเพิ่มราคา, และบอกว่าอย่างไรบ้าง?
เวอร์ชันขั้นตอนต่อขั้นตอนพร้อมการกำหนดค่าและการแก้ไขปัญหาอยู่ในเอกสาร: วิธีค้นหาคลังเก็บอีเมลและไฟล์แนบด้วยเอเจนต์ AI, บนเครื่องท้องถิ่น.
ทำไมอีเมลจึงยากสำหรับเอเจนต์?
เพราะคลังเก็บเป็นคอนเทนเนอร์ของคอนเทนเนอร์. PST มีโฟลเดอร์, โฟลเดอร์มีข้อความ, ข้อความมีไฟล์แนบ, และไฟล์แนบเป็นไฟล์ Word, PDF และสเปรดชีตในตัวของมันเอง. เอเจนต์ที่ใช้เครื่องมือไฟล์จะมองเห็นไฟล์ไบนารีขนาดใหญ่หนึ่งไฟล์. การส่งออกคลังเก็บเป็นไฟล์แยกก่อนทำงานได้, แต่ช้า, ทำสำเนาข้อมูลที่ละเอียดอ่อนลงดิสก์, และต้องทำใหม่เมื่อคลังเก็บเปลี่ยนแปลง. และโมเดลไม่สามารถอ่าน PST ได้เลย.
เครื่องมือค้นหาจัดการการซ้อนกันนี้เอง. แต่ละข้อความและแต่ละไฟล์แนบกลายเป็นรายการที่สามารถค้นหาได้, และผลลัพธ์บันทึกทั้งตำแหน่งของคอนเทนเนอร์และตำแหน่งภายในที่พบการจับคู่.
การจับคู่ภายในไฟล์แนบมีลักษณะอย่างไร?
นี่คือผลลัพธ์ที่เซิร์ฟเวอร์ส่งกลับในการทดสอบของเราที่มีสามข้อความ EML. วลี “price increase” ปรากฏเฉพาะในใบเสนอราคา Word ที่แนบมากับหนึ่งในนั้น; เนื้อความของข้อความเพียงแค่บอกว่า “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 คือข้อความ; innerPath คือไฟล์แนบ. เอเจนต์สามารถตอบว่า “ข้อความ Re: Q3 pricing จาก Contoso, ในใบเสนอราคา Q-2026-118 ที่แนบมานั้น: เพิ่มขึ้น 6 เปอร์เซ็นต์ตั้งแต่ 1 พฤศจิกายน”, และทุกส่วนของประโยคนี้สามารถตรวจสอบได้.
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..."
คำถามที่ทำงานกับเมล
ภาษาคำค้นทั่วไปใช้ได้, และรูปแบบบางอย่างมีประโยชน์เป็นพิเศษสำหรับการสื่อสาร. ทั้งหมดนี้ได้ถูกทดสอบกับกล่องเมลทดสอบเดียวกัน:
- “ข้อความใดจาก Fabrikam กล่าวถึงความล่าช้าการจัดส่ง?”:
fabrikam AND delay. ที่อยู่อีเมลของผู้ส่งถูกทำดัชนีพร้อมกับข้อความ, ดังนั้นcontosoยังพบใบแจ้งหนี้ที่เนื้อความไม่เคยกล่าวถึงบริษัทนั้น. - “ค้นหาอีเมลทั้งหมดที่กล่าวถึงคำสั่งซื้อ 77812” :
77812. ตัวเลขเต็มเป็นคำ. - “ใบแจ้งหนี้ใดที่ครบกำหนดในเดือนตุลาคม?”:
invoice AND content: daterange(2026-10-01 ~~ 2026-10-31). จะจับคู่วันที่ที่เขียนในข้อความ, เช่น “due on 2026-10-22”. คำสั่งcontent:มีความสำคัญ: หากไม่มี, ช่วงวันที่ยังจับคู่กับวันที่ที่เอนจินบันทึกสำหรับแต่ละไฟล์ด้วย.
ทำไมการทำงานบนเครื่องท้องถิ่นจึงสำคัญกว่าสำหรับเมล
อีเมลเป็นแหล่งที่มีข้อมูลที่ละเอียดอ่อน: ข้อมูลส่วนบุคคล, การเจรจาต่อรอง, กระทู้ HR, คำแนะนำทางกฎหมาย. เครื่องมือค้นหาที่ต้องอัปโหลดหรือซิงค์กล่องเมลไปยังบริการเป็นสิ่งที่หลายทีมไม่ยอมรับ. ที่นี่คลังเก็บถูกเมานท์แบบอ่านอย่างเดียวเข้าไปในคอนเทนเนอร์บนเครื่อง, ทำดัชนีที่นั่น, และค้นหาที่นั่น. ข้อความที่ออกไปเพียงข้อความที่เอเจนต์อ้างอิงในคำตอบ, และเมื่อใช้โมเดลที่โฮสต์บนเครื่องท้องถิ่น, แม้แต่ข้อความนั้นก็ไม่ออกไป.
สำหรับการตั้งค่าที่แน่นหนาขึ้น, เมานท์คลังเก็บแบบอ่านอย่างเดียวและให้ดัชนีมีโวลุ่มของตัวเอง:
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
การกำหนดขอบเขตคลังเก็บขนาดใหญ่
คลังเก็บที่มีข้อความหลายหมื่นฉบับทำดัชนีได้ดีด้วยใบอนุญาต, แต่ควรทำอย่างรอบคอบ. ทำดัชนีตามโฟลเดอร์หรือปีเป็นเส้นทางแยก (mail/2025, mail/2026), เพื่อให้สามารถลบหรือสร้างใหม่ตามปีได้โดยอิสระ, เนื่องจากเอนจินลบเส้นทางที่ทำดัชนีทั้งหมดแทนการลบไฟล์เดี่ยว. เก็บเมลในดัชนีของมันเอง, แยกจากสัญญาหรือรายงาน, เพื่อให้คำถามเกี่ยวกับการสื่อสารไม่ต้องคัดกรองข้อมูลอื่นทั้งหมด. และเมื่อคลังเก็บเติบโต, update_index จะดึงข้อความใหม่เข้ามาโดยไม่ต้องอ่านซ้ำข้อความเก่า.
ขีดจำกัดที่ต้องระวัง
- ในโหมดประเมินผล ดัชนีจะเก็บได้สูงสุด 100 เอกสารและการค้นหาจะคืนผลสูงสุด 10 รายการ, และ ทุกข้อความและไฟล์แนบนับเป็นเอกสาร, ดังนั้นคลังเก็บจริงต้องมีใบอนุญาต. เรียก
get_license_statusก่อน. - PST ขนาดใหญ่ต้องใช้เวลาทำดัชนี: ทุกข้อความและไฟล์แนบต้องเปิด. ทำดัชนีครั้งแรก, แล้วใช้
update_index. - ไฟล์แนบที่สแกนโดยไม่มีชั้นข้อความจะทำดัชนีเฉพาะคุณสมบัติไฟล์; ไม่มี OCR.
- ใช้ Docker เท่านั้น; บน Linux ให้เพิ่ม
--user "$(id -u):$(id -g)"เว้นแต่คุณใช้การตั้งค่าอ่านอย่างเดียวข้างต้น.
คำถามที่พบบ่อย
ฉันสามารถค้นหาไฟล์ PST ด้วย AI ได้โดยไม่ต้องใช้ Outlook หรือไม่?
ได้. เอนจินอ่าน PST, OST, MSG และ EML โดยตรง; Outlook ไม่ได้มีส่วนเกี่ยวข้อง, และไม่มีการส่งออกใด ๆ.
มันค้นหาภายในไฟล์แนบของอีเมลหรือไม่?
ได้. ไฟล์แนบถูกทำดัชนีเป็นรายการของข้อความของมัน, และการจับคู่ภายในไฟล์แนบจะกลับมาพร้อมกับ innerPath ที่ระบุไฟล์แนบนั้น.
กล่องเมลของฉันถูกอัปโหลดไปที่ไหนหรือไม่?
ไม่. มันถูกอ่านภายในคอนเทนเนอร์ท้องถิ่น; เพียงข้อความที่เอเจนต์อ้างอิงถึงเท่านั้นที่ถึงผู้ให้บริการโมเดลของคุณ.
ไปให้ลึกขึ้น
- เอกสาร, วิธีทำอย่างเป็นทางการ: วิธีค้นหาคลังเก็บอีเมลและไฟล์แนบด้วยเอเจนต์ AI, บนเครื่องท้องถิ่น
- ศูนย์รวมเอกสาร: GroupDocs.Search MCP Server
- เริ่มต้นที่นี่: คุณต้องการฐานข้อมูลเวกเตอร์เพื่อถามคำถามเกี่ยวกับโฟลเดอร์เอกสารหรือไม่?
- เกี่ยวข้อง: ทำไมเอเจนต์ AI ไม่ควรอ่านสัญญา 300 ฉบับเพื่อตอบคำถามหนึ่งข้อ
- เกี่ยวข้อง: คำตอบที่อิงจากไฟล์ของคุณ: อ้างอิงข้อความ, ไม่ใช่ความจำของโมเดล
- เกี่ยวข้อง: grep ไม่สามารถอ่าน PDF: ให้เอเจนต์โค้ดของคุณมีดัชนีเอกสาร
- เกี่ยวข้อง: หน่วยความจำของโครงการสำหรับเอเจนต์ AI: ดัชนีหนึ่งต่อโครงการ, รักษาให้เป็นปัจจุบัน
- โมเดลการทำงานบนเครื่องและความปลอดภัย: 3 สถาปัตยกรรมสำหรับการประมวลผลเอกสาร AI, และสถาปัตยกรรมที่เก็บไฟล์ไว้ภายในเครือข่ายของคุณ
- คำถาม: GroupDocs Search forum
- แหล่งที่มา: GroupDocs.Search.Mcp บน GitHub