Self-contained multi-format agentic RAG system with parsing, chunking, hybrid retrieval, and generation. Exposes knowledge base retrieval as MCP tools with HTTP and stdio transports.
Pharos RAG provides 6 well-named, read-only retrieval tools with detailed Chinese descriptions and comprehensive input schemas. Tool names follow verb_noun convention (retrieve, list_documents, get_outline, get_document, expand, retrieve_grouped). Schemas include types, enums, and descriptions for most parameters. However, descriptions are lengthy (200-400+ chars) and written in Chinese, making them harder for English-speaking LLMs to parse optimally. Output schemas are partially documented in code comments but not formally exposed in tool definitions. Error handling is structured (status/retriable/hint pattern) but lacks recovery guidance in tool descriptions. No tool annotations (readOnlyHint, etc.) despite all being read-only. Missing parameter constraints (e.g., top_k bounds, context_size ranges).
围绕某 chunk 取更大上下文:给定 chunk_id,返回该块的扩展上下文(同节更多内容或跨节邻近块),供 agent 补全不完整的 section_window 片段。
通读整篇:返回指定文档的全部内容(按 section_path 组织),适合总结/通读核对。
某文档目录:返回指定文档的章节树(section_path 层级),供 agent 快速定位内容位置。
库存+覆盖:返回当前身份可见的全部文档清单,含各 doc_type 篇数(coverage),供 agent 判断问题是否在本库覆盖范围。
混合检索,可 doc_ids/doc_type/kind 过滤、strategy=hybrid|dense|sparse 选路、mode=concise 先扫。返回结构化命中列表,含 context_status 标记完整段 vs 降级碎片 vs concise/already_returned/omitted_budget。
跨多篇分组对比/汇总:按 doc_id 分组返回检索结果,供 agent 做跨文档对比分析。
Lengthy descriptions waste tokens and bury key intent signals.
No tool annotations (readOnlyHint, destructiveHint, idempotentHint) despite all 6 tools being read-only. Annotations enable agents to reason about safety and retry semantics.
Output schemas not formally declared in tool definitions. Code comments document context_status, hits[], and error structure, but LLMs cannot parse comments. Formal schema documentation required.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 54 | 2026-07-28+ | v2 |
Missing numeric parameter constraints: top_k unbounded (should be 1-100), context_size unbounded (should be 500-9999 per code), rerank_top_n unbounded. Unbounded params invite absurd LLM values.
Error recovery guidance missing from tool descriptions. Code defines status values (empty, no_access, config_error, backend_unavailable, inference_unavailable) but tool descriptions do not explain when/why each occurs or how to recover.