查询分解无法解决上下文饥饿——只是把它挪了个位置
这件事讲了什么
文章作者做了一个实验:给 GitLab 公开文档做了一个聊天问答系统,拿一句包含五个不同问题的话去测试。主流做法是把复杂问题拆成五个小问题分别检索,再合并、重排、塞进有限的上下文窗口。结果五个正确答案虽然都被检索到了,但最终只有一条被保留,另外四条被排在前面的答案挤掉了;不拆分反而能保留三条。作者把这种现象叫“上下文饥饿”:某个子问题虽然找到了答案,却在最后分配上下文空间时被挤掉,而且常规召回率指标完全看不出来。文章指出,查询分解只解决了检索阶段的问题,分配阶段仍由“谁分高谁上”的不公平策略决定,需要引入公平性约束。目前这是作者在 GitLab 公开文档上做的实验,配套评测方法尚未说明是否开放使用。
可以使用的工具
文中可用工具
- LlamaIndex SubQuestionQueryEngine把复杂问题拆成多个子问题并分别检索、再汇总答案
- LangChain MultiQueryRetriever为同一个问题生成多种查询改写,合并去重后返回检索结果
- RAG-Fusion用倒数排名融合把多次查询的检索结果合并成一个列表
讨论 0
登录后参与讨论,阅读资讯无需注册。
还没有评论,来分享第一个看法。