Tool: rag_retrieve — Hybrid retrieval contract หลักของ MCP-RagMax

rag_retrieve คือ tool หลักของ MCP-RagMax สำหรับดึงหลักฐานจาก knowledge base โดยไม่เปิด chat model และไม่ใช้ LLM rerank ภายใน backend
Input
รับ query เป็น string เดียวหรือ list ของ query variants แบบ bounded พร้อมตัวเลือก:
mode:chunks,files,source_firsttagsfilename_containscreated_after/created_before(YYYY-MM-DD)source_type
ถ้าใช้หลาย query ทุกตัวต้องเป็น same intent เช่นประโยคไทยเดิม, คำแปลอังกฤษ และ keyword ของคำถามเดียวกัน ไม่ควรใช้ list เพื่อยัดหลาย subquestion ที่ต่างกันเข้ามาใน call เดียว
Retrieval pipeline
query variant
├─ multilingual MiniLM dense search
└─ Thai-aware BM25
│
▼
RRF fusion
│
▼
deterministic unique-parent selection
การใช้ RRF ทำให้ระบบรวม ranking จาก dense กับ lexical search ได้โดยไม่ต้องเทียบ raw score คนละสเกล และไม่ต้องโหลด LLM เพิ่มเพื่อ rerank
เลือก mode ให้ตรงงาน
chunks— เหมาะเมื่อ caller ต้องการ context ไปตอบคำถามfiles— เหมาะเมื่ออยากได้ candidate files ก่อนอ่านต่อsource_first— เหมาะเมื่อ provenance/source selection สำคัญก่อนเนื้อหา
Caller agent เป็นคนตัดสินใจว่าจะอ่าน source เพิ่มหรือสรุปอย่างไรต่อ ไม่ใช่ backend
Read-only และ source-confined
rag_retrieve ไม่เปิด arbitrary filesystem read, shell, Python หรือ memory-write tool และทำงานกับ index/source root ที่ backend กำหนดไว้เท่านั้น
ทำไมไม่ใช้ LLM rerank
รุ่นก่อนของ RAG บางแบบใช้ LLM ช่วยขยาย query หรือ rerank candidate แต่ MCP-RagMax ตั้งใจให้ retrieval backend deterministic เพื่อให้ behavior reproducible, test ได้ และไม่ผูกกับโมเดลของ caller
ถ้า caller อยากใช้ LLM ช่วยแตก query ให้ดีขึ้น ก็ทำได้ที่ชั้น agent แล้วส่ง same-intent variants เข้ามา แต่ ranking ฝั่ง backend ยังคงเป็น Dense + BM25 + RRF เหมือนเดิม
ความคิดเห็น
กำลังโหลดความคิดเห็น...