生产环境中常见的10个RAG错误

生产环境中常见的10个RAG错误

生产环境中常见的10个RAG错误

📰 来源:Towards Data Science | 📅 翻译日期:2026年6月10日
🔗 原文查看原文
🤖 翻译:DeepSeek AI · 仅供参考

作者与系列背景

我是本系列与Angela Shi的合著者。这篇关于常见错误的文章列出了我们在生产RAG系统中反复看到的失败模式,这些模式首先促使我们提出了“四块砖”契约(four-brick contract)。

一次性的便利与企业级的挑战

我承认一件事:即使在我们编写本系列文章时,我们也会将大文档直接丢进ChatGPT。一个PDF,一个问题,发送,阅读答案。模型很好,供应商支付token账单,对于一次性任务,这是正确的路径。

本系列的存在是为了其他情况。在企业工作中,问题几乎从不涉及单个文档。理赔员对经纪人的整个历史档案运行同一个问题。合规团队扫描投资组合中的每一份合同。在这种规模下,“丢进ChatGPT”不再有效,而且成本会迅速飙升。

十个错误与四个修复原则

以下是我们在生产环境中反复看到的错误总结,逐一击破。修复方法请见第二部分。

十个陷阱,四块砖,每个卡片一个修复 —— 作者配图

1. 解析:文档如何失去结构

当团队将文档视为纯文本而非结构化对象时,解析就会失败。三种模式不断出现:丢弃表格和布局(陷阱1)、将整个文档塞进提示词(陷阱2)、以及将文档分割成忽略结构的固定大小窗口(陷阱3)。修复方法是使用结构解析器,生成类型化的表格而非字符串或任意窗口。

这三个错误的一个元版本贯穿全文。团队跳过解析的正确性,花费数周调整分块大小、重排序阈值、top-K和嵌入选择,却从未达到预期的精度。他们测量的每一个杠杆都建立在解析器的输出之上:一个将第47页表格拍平的解析器会产生任何分块器都无法恢复的噪声,一个丢失了列标题的解析器会产生任何重排序器都无法超越的歧义。文献也没有帮助。最常被引用的供应商关于RAG技术的报告有194页关于分块,而关于解析的为0页。先修复解析。检索调优适用于解析器已经保留了结构的流水线。

1.1 陷阱1:PDF中有表格,解析器返回了字符串

默认反应是将PDF提取为单一文本块,让LLM自行处理。现代解析器让这变得简单:一个函数调用,一个字符串返回,完成。

代价在表格带有分组行标签时首次显现。一份索赔合同有一个福利表格,其中相同的行名称(保费、免赔额)出现在两个类别下(健康、牙科)。拍平成文本后,类别消失在token流中,LLM看到“Plan A Plan B Plan C Health Premium 100 200 300 Deductible 5 10 15 Dental Premium 50 80 120 Deductible 2 4 6”。提问“Plan B的保费是多少?”有两个有效答案:200(健康)或80(牙科)。扁平字符串没有携带分组标记。模型选一个。有时会选错,而且没有信号表明它选错了。

Plan B的保费在健康下是200,在牙科下是80,扁平字符串无法区分 —— 作者配图

同样的问题也影响多列布局(带有脚注侧栏的合同页面)、页眉页脚(页码污染每次检索)以及扫描PDF的阅读顺序。每个都是不同的失败模式,但根源相同:解析器丢弃了文档携带的结构。

修复方法是使用关系型解析器,生成类型化表格(line_df, page_df, toc_df, …)而不是扁平字符串。每一行携带其边界框、页码、字体、章节。表格有自己的粒度。下游砖读取结构,而不是内容块。

1.2 陷阱2:每个问题支付1200页的费用

解析方面的第二个错误是Angela和我在小项目上也会犯的:完全跳过解析,把整个PDF塞进聊天窗口。写起来很快,适用于单个文档,供应商在免费层支付token账单。

在真实语料上,同样的习惯会通过三步变得昂贵。首先,PDF不再是12页,而是1200页。其次,问题不再是一个,而是每天200个。第三,团队在聊天中再添加五个文档以“给模型更多上下文”,每个问题的token数线性增长。账单从几美分涨到每月数千美元,而且答案变得更差,因为模型有了更大的草堆和同样的针。

修复方法是将技术与文档和问题匹配:当答案适合三页时,发送三页,而不是1200页。同样的原则:解析一次,检索限定范围,生成基于包含答案的最小上下文。

以下是真实企业场景的账单:一份1200页的再保险合同,合规团队每天查询200次。两种方法,相同问题。第一种提取PDF中每一行文本并将结果塞入每个提示词。第二种是本系列构建的流水线:解析产生结构化表格,检索返回三页相关页面,生成只读取这些页面。

直接丢入花费每年131,000美元,而限定流水线花费330美元 —— 作者配图

对于1200页的合同,直接丢入花费大约是限定流水线输入成本的400倍。直接丢入成本随文档和问题数量增长;流水线成本只随答案增长。每份合同,每天200个问题,持续一年,差别是烧掉131,000美元与烧掉329美元。

提示缓存会改变数字但不会扭转局面。Anthropic的90%折扣缓存读取和OpenAI的50%折扣缓存输入仅在缓存命中时适用,按团队无法控制的TTL驱逐,并在未命中时收取全价。即使以90%的折扣率,直接丢入在同一工作量下每年仍花费13,140美元,是限定流水线的40倍,并且仍然随文档大小而非答案大小增长。

托管RAG(OpenAI的file_search、AWS Knowledge Bases等)介于两者之间:比直接丢入便宜,因为供应商会分块,但仍不如限定流水线高效。


📌 *本文由 DeepSeek AI 自动翻译排版,如有不准确之处欢迎指正* 🏠 [返回首页](https://www.suiyuanlu.cn) · 📖 [查看原文](https://towardsdatascience.com/10-common-rag-mistakes-we-keep-seeing-in-production/)
©版权声明
THE END
喜欢就支持一下吧
点赞0 分享
评论 抢沙发

评论已关闭