“Which of our contracts carry a termination penalty?” ฟังดูเหมือนงานสำหรับ AI agent, และจริงด้วย, แต่ไม่ใช่โดยการอ่านสัญญาโดยตรง. Agent ที่เปิดไฟล์ทุกไฟล์เพื่อหาคำตอบจะใช้บริบทกับเอกสารที่ไม่เกี่ยวข้อง 297 ฉบับและยังต้องเชื่อว่าได้สังเกตข้อกำหนดในอีกสามฉบับ. ด้วย GroupDocs.Search.Mcp ที่รันใน Docker บนเครื่องของคุณ, Claude Desktop, Cursor หรือ Copilot จะทำการสร้างดัชนีโฟลเดอร์ครั้งเดียว, ถามดัชนีว่ามีสัญญาใดตรงกัน, แล้วอ่านเฉพาะข้อกำหนดเท่านั้น:
สัญญาของฉันใดบ้างที่กล่าวถึงค่าปรับการยกเลิก? อ้างอิงข้อกำหนดสำหรับแต่ละสัญญา
เวอร์ชันขั้นตอนโดยละเอียดพร้อมการตั้งค่าและการแก้ปัญหาอยู่ในเอกสาร: How to ask questions across a folder of contracts with an AI agent.
สิ่งที่ผิดพลาดเมื่อ agent อ่านทุกอย่าง?
สามประเด็น, เรียงตามระดับอันตรายที่เพิ่มขึ้น. มันช้าและมีค่าใช้จ่ายสูง: ทุกสัญญาต้องผ่านหน้าต่างบริบททุกครั้งที่คุณถาม. มันหมดพื้นที่: หลังจากเอกสารยาวหลายสิบฉบับ, เอกสารแรกๆ จะหลุดออกจากหน้าต่างหรือถูกสรุป, และสรุปคือที่ที่ข้อกำหนดอาจหายไป. และมันล้มเหลวโดยเงียบ: “ฉันพบสัญญาสองฉบับที่มีค่าปรับการยกเลิก” ฟังดูเหมือนกันไม่ว่า agent จะตรวจสอบทั้งหมด 300 ฉบับหรือแค่สแกน 40 ฉบับ. ไม่มีอะไรในคำตอบบอกคุณว่าเป็นไฟล์ใด.
ดัชนีจะแก้ปัญหาแรกและเปิดเผยปัญติที่สาม. คำถาม “ไฟล์ใดบ้างที่มีคำเหล่านี้” มีคำตอบที่แน่นอน, และเครื่องมือค้นหาจะคืนผลพร้อมจำนวนที่คุณตรวจสอบได้.
ลำดับที่ถูกต้องควรเป็นอย่างไร?
สร้างดัชนีครั้งเดียว, ค้นหา, แล้วอ่านผลที่ตรงกัน. นี่คือตัวอย่างผลลัพธ์จากเซิร์ฟเวอร์ในการทดสอบของเรา, กับสัญญาเทียม 5 ฉบับ: สองฉบับมีข้อกำหนดค่าปรับ, และ NDA หนึ่งฉบับที่กล่าวถึงทั้งสองคำแต่ปฏิเสธค่าปรับ.
-> add_to_index {"documentsPath":"contracts","indexName":"contracts"}
<- Indexed 'contracts' into index 'contracts': 5 document(s) added,
5 in the index.
-> search {"query":"termination penalty","indexName":"contracts"}
<- { "documentsFound": 0,
"hint": "Unquoted words separated by spaces do not match. Search the
phrase as \"termination penalty\", or combine the words with
AND / OR, e.g. termination AND penalty." }
-> search {"query":"termination AND penalty","indexName":"contracts"}
<- documentsFound 3: acme-master-services-agreement.pdf,
globex-consulting-agreement.docx, initech-nda.docx
-> get_text_fragments {"query":"\"termination penalty\"",...}
<- === contracts/acme-master-services-agreement.pdf ===
…a termination penalty of three monthly fees applies, payable
within 30…
=== contracts/globex-consulting-agreement.docx ===
…Early termination penalty: the Client pays 50 percent of the fees…
สิ่งที่ผลลัพธ์สามอย่างสอนเราได้อะไร?
การค้นหาแรกพลาด, และเซิร์ฟเวอร์บอกเหตุผล. ใน GroupDocs.Search, คำที่คั่นด้วยช่องว่างโดยไม่มีเครื่องหมายคำพูดจะไม่ตรงกับวลี. แทนที่จะคืนค่าเป็นศูนย์เปล่า, เซิร์ฟเวอร์จะแนบ hint ที่อธิบายวิธีแก้, และ agent จะปรับตัวในคำเรียกถัดไป. นี่เป็นความผิดพลาดครั้งแรกที่พบบ่อยที่สุด, และมันถูกจัดการในคำตอบเอง.
AND พบสามไฟล์, ส่วนวลีพบสองไฟล์. AND ถูกประเมินต่อเอกสาร. NDA ของ Initech มีทั้งสองคำในประโยค “There is no fee and no penalty associated with termination of this NDA”. โมเดลที่อ่านเฉพาะผลการค้นหาจะนับว่าเป็นผลลัพธ์; แต่เมื่ออ่านข้อความจริงแล้ว จะรายงาน NDA แยกต่างหากว่าเป็นสัญญาที่ชัดเจนว่าไม่มีค่าปรับ. ความแตกต่างนี้คือคุณค่าของการเรียกครั้งที่สาม.
รูปแบบไฟล์ไม่สำคัญ. ผลลัพธ์มาจาก PDF และ DOCX, และสัญญา TXT อยู่ในดัชนีเดียวกัน. เอนจินสามารถทำดัชนีได้ 82 รูปแบบ, ดังนั้นโฟลเดอร์ที่สะสมมานานสิบปีจากเครื่องมือต่างๆ จะตอบคำถามเดียวได้.
การเรียกใช้ตามลำดับ
user agent Search MCP server
| "Which contracts mention a termination penalty?" |
|---------------->| |
| |-- add_to_index (once) ------------------>|
| |-- search {"query":"termination AND |
| | penalty"} -------------------->|
| |<- 3 files --------------------------------|
| |-- get_text_fragments {"query": |
| | "\"termination penalty\""} ----------->|
| |<- the two clauses, with context ----------|
|<- "Acme: 3 monthly fees (12.3). Globex: 50% of remaining |
| fees. Initech NDA: explicitly no penalty." |
หลังจากทำการสร้างดัชนีครั้งแรก, คำถามใหม่แต่ละครั้งจะใช้สองการเรียกไม่ว่ามีสัญญากี่ฉบับ. “Which contracts have a force majeure clause?” คือ "force majeure". “Which leases renew automatically?” คือ renewal OR renews, และข้อความที่พบจะเป็น “renews automatically for 12 months unless notice is given”. ข้อกำหนดเกี่ยวกับระยะเวลาการแจ้งเตือนคือ terminat? AND notice, โดย ? แทนอักขระหนึ่งตัวและตรงกับ terminate.
จุดที่มนุษย์ยังคงอยู่ในลูป
นี่ไม่ใช่การตรวจสอบสัญญา, และไม่ควรทำตัวเหมือนเป็นการตรวจสอบ. ดัชนีค้นหาและอ้างอิงข้อความ; agent จะสรุปสิ่งที่อ้างอิง. มีสองนิสัยที่ทำให้มันซื่อสัตย์: ขออ้างอิงพร้อมทุกข้อเรียกร้อง, เพื่อให้สรุปที่ผิดพลาดปรากฏข้างประโยคที่อ่านผิด. และขอรายการที่ใกล้เคียงด้วย, “รายการสัญญาที่กล่าวถึงคำเหล่านี้แต่ไม่มีข้อกำหนด”, เพราะที่นั่นการตัดสินของผู้อ่านมีความสำคัญที่สุด.
ขีดจำกัดที่ซื่อสัตย์
- ในโหมดประเมินผล ดัชนีจะเก็บเอกสารสูงสุด 100 ฉบับและการค้นหาจะคืนผลสูงสุด 10 ฉบับ, และทุกคำตอบจะระบุเช่นนั้น. เรียก
get_license_statusก่อนการทำงานจริง, เพราะคำตอบที่ถูกจำกัดอาจดูสมบูรณ์. - สัญญาที่สแกนโดยไม่มีเลเยอร์ข้อความจะทำดัชนีเฉพาะคุณสมบัติไฟล์เท่านั้น; ไม่มี OCR.
- การค้นหาแบบเต็มข้อความตรงกับคำ: agent ต้องใช้คำศัพท์ของสัญญา, หรือทดลองรูปแบบอื่น.
- การลบไฟล์เดียวจากโฟลเดอร์ที่ทำดัชนีไม่รองรับ; ให้ลบโฟลเดอร์ทั้งหมดแล้วเพิ่มไฟล์ที่ต้องการกลับเข้าไปใหม่.
คำถามที่พบบ่อย
AI agent สามารถค้นหาสัญญาทั้งหมดของฉันโดยไม่ต้องอัปโหลดไฟล์ได้หรือไม่?
ใช่. ดัชนีถูกสร้างและค้นหาในคอนเทนเนอร์บนเครื่องของคุณ; เฉพาะข้อกำหนดที่ agent อ้างอิงเท่านั้นที่ส่งไปยังโมเดล.
สามารถจัดการสัญญาได้กี่ฉบับ?
ตามลิขสิทธิ์, จำนวนที่ดิสก์และหน่วยความจำของคุณรองรับ; ดัชนีสร้างครั้งเดียวและอัปเดตแบบเพิ่มส่วน. โหมดประเมินผลหยุดที่ 100 ฉบับต่อดัชนี.
ทำไมการค้นหาสำหรับสองคำจึงไม่ให้ผลลัพธ์?
คำที่ไม่ได้ใส่เครื่องหมายคำพูดจะไม่ตรงกับวลี. ใส่เครื่องหมายคำพูด, "termination penalty", หรือเชื่อมคำด้วย AND; hint ของเซิร์ฟเวอร์บอกเช่นเดียวกัน.
ไปลึกกว่าเดิม
- เอกสาร, วิธีทำแบบมาตรฐาน: How to ask questions across a folder of contracts with an AI agent
- ศูนย์รวมเอกสาร: GroupDocs.Search MCP Server
- เริ่มต้นที่นี่: Do you need a vector database to ask questions about a folder of documents?
- เกี่ยวข้อง: Grounded answers from your files: quote the passage, not the model’s memory
- เกี่ยวข้อง: grep can’t read PDF: give your coding agent a document index
- เกี่ยวข้อง: Search your email archive with an AI agent: PST, MSG, EML and the attachments inside
- เกี่ยวข้อง: Project memory for AI agents: one index per project, kept current
- โมเดลการติดตั้งในองค์กรและความปลอดภัย: 3 architectures for AI document processing, and the one that keeps files inside your network
- คำถาม: GroupDocs Search forum
- แหล่งที่มา: GroupDocs.Search.Mcp on GitHub