
为什么你的 RAG 管道会在客户上传的数据上失效(以及如何修复)
格式错误的 PDF、编码问题、PII 污染和重复内容会静默降低 RAG 检索质量。以下是如何在向量数据库上游构建数据质量管道的方法。
RAG 检索上游的数据质量问题是这样的:你的管道是在干净、格式规范的文档上构建和测试的——而你的客户上传的是其他所有东西。格式错误的 PDF、编码错误、含有 PII 的文本、重复内容和格式不一致会静默降低检索质量,而不会抛出错误。RAG 系统看起来在工作;只是返回了更差的答案,引用了被污染或冗余的来源,却没有任何迹象表明有什么问题。
客户数据破坏 RAG 的五种方式
1. 格式错误的 PDF
并非所有 PDF 都是平等的。常见的失效模式:
- 零字节或截断文件:在上传或传输过程中损坏的 PDF。解析器静默失败或返回空的提取内容。
- 受密码保护的 PDF:需要解密才能解析的文件。没有预先筛查,这些文件在没有提供信息性错误的情况下就会失败。
- 内容流损坏的 PDF:看起来有效但包含格式错误内部结构的文件。解析器可能提取部分内容,产生出现在检索中但无法回答任何真实问题的片段。
- 仅有图像内容且没有 OCR 层的 PDF:在传统扫描档案中很常见。没有 OCR,就不会提取文本——文档以零长度或近零长度的块进入向量存储,能被检索到但不提供任何信息。
一个没有预先筛查就摄取 50,000 份客户文档的 RAG 系统,可能有 5–15% 的文档处于损坏状态。这些失败都不会以系统错误的形式出现;它们以降低的检索质量出现。
2. 编码问题
企业文档档案在多年的系统迁移过程中积累了编码不一致性。常见问题:
- 单批次中的混合编码:UTF-8、Windows-1252 和 ISO-8859-1 文件在同一次上传中共存。在 UTF-8 文本上训练的嵌入模型对非 UTF-8 输入产生降级的嵌入。
- 乱码:错误编码的字符显示为乱码文本(
’替代',é替代é)。这些会破坏文档的语义内容,导致嵌入模型产生无法准确代表文档含义的嵌入。 - 空字节和不可打印字符:传统数据库导出或某些文档转换工具引入空字节和控制字符。这些以不可预测的方式破坏文本分块逻辑。
编码问题特别有害,因为它们看起来像内容。一个到处都是 é 的文档会被嵌入、分块和检索——但嵌入与使用正确字符的查询不会对齐。
3. 重复内容
客户文档档案包含的重复内容远超大多数从业者的预期。来源包括:
- 同一文档归档在多个目录位置
- 同一合同的多个版本,有细微的修订差异
- 转发的电子邮件,嵌入了完整的线程历史,显示为独立文档
- 在数百份文档中逐字出现的样板部分(标准条款和条件、免责声明)
在 RAG 系统中,重复表现为检索从多个来源返回相同内容,为基于该内容的响应人为地提高了置信度评分。主要基于样板文字训练的系统会用样板文字来响应。拥有十份同一过时政策文档副本的系统会自信地反复检索那份过时的政策。
4. PII 污染
客户文档常规性地包含 PII:支持工单中的客户姓名和联系信息、临床记录中的患者标识符、HR 文档中的员工社会安全号码、账单记录中的金融账户号码。当这些数据进入向量存储时,它们变得可检索:
- 关于客户投诉的查询可能检索到包含特定客户联系方式的文档
- 关于员工绩效的查询可能检索到包含该员工社会安全号码的文档
- 关于账单历史的查询可能检索到包含支付卡号码的文档
这不是假设性风险。这是将未筛查的客户数据摄取到可被不应访问该 PII 的用户访问的检索系统中的直接后果。对于受 GDPR 保护的数据,这可能构成数据泄露。对于受 HIPAA 保护的数据,这是具有直接监管后果的违规行为。
5. 格式不一致
客户上传跨越多个文档世代和系统来源。一个"文档档案"可能包含:
- 文本密度差异很大的 PDF(200 词的单页文档和 50,000 词的技术手册)
- 需要不同分块策略的混合文档类型(结构化表单 vs. 叙事文本)
- 具有非标准章节结构的文档,导致分块在语义错误的位置进行拆分
- 表格在提取为线性化文本时失去赋予其意义的结构关系
格式不一致不会阻止摄取——它会降低检索精度。来自提取效果差的表格的块可能以语义表示较弱的方式嵌入。来自在错误边界拆分的文档的块可能在单一嵌入中结合不相关的概念。