详细内容或原文请订阅后点击阅览
更大的上下文窗口无法修复 RAG — 所以我构建了一个可以修复 RAG 的系统
增加 RAG 系统中的上下文大小并不会提高聚合任务的准确性 - 它会使错误更难以检测。在本文中,我针对跨 100,000 行的确定性全扫描引擎对基于检索的管道进行了基准测试,并展示了为什么计算查询必须完全路由远离 RAG。更大的上下文窗口不修复 RAG — 所以我构建了一个可以修复 RAG 的帖子首先出现在《走向数据科学》上。
来源:走向数据科学TL;DR
我相信了错误的号码
上个月,我正在埋头为 EmiTechLogic 构建一个新功能。学习者现在可以上传自己混乱的 CSV 文件,并用简单的英语提出有关其数据的问题。听起来很适合 RAG,所以我全力以赴——嵌入、检索、漂亮的响应。
前几个演示看起来棒极了。干净的表格、自信的数字、专业的格式。实际上,我在内部测试中开始信任该系统。
然后我选择了一个数字来仔细检查。
数据集中的真实杂货支出:$1,140,033.24。
该模型按类别为我提供了精美的细分。它看起来合法。我把它返回的数字加起来。
还不到一半。
我坐在那里盯着屏幕思考“这不可能是正确的。”所以我做了任何工程师都会做的事情。我增加了上下文窗口。 4k…16k…32k…128k 代币。每次答案都变得更长、更详细,而且更肯定是错误的。
就在那时,它终于成功了。这不是检索问题。我要求检索系统对它只看到部分内容的数据执行大量计算。该模型并没有说它不确定或缺少信息,而是生成了看起来正确的精致、结构化的答案。
为什么 RAG 无法聚合
RAG 管道并不能真正理解结构化数据。它所做的就是获取每个 CSV 行并将其展平为纯文本。就是这样。对于模型来说,一行看起来像这样:
“2019-01-01grocery_pos 107.23 F NC 詹妮弗·班克斯...”
对于像“按类别划分的总支出是多少?”这样的查询,RAG 管道会执行以下操作:
1. Tokenise:[“总计”,“支出”,“类别”]
2. 按关键字重叠对所有 100,000 行进行评分
