这篇文章先给大家介绍一下不同阶段RAG遇到的问题,然后针对这些问题目前都有哪些好用的解决途径。由于不同的提升RAG质量的方式原理不同,构建起来的难易程度也不一样。在文章中我先初步给大家介绍,后续会单独对需要展开的办法技巧另写文章。所以这篇文章允许看成是“提升RAG质量途径”的绪论。
一、构建索引阶段
在RAG系统中,构建索引阶段是整个流程的基石。如果索引阶段的数据处理不当,后续的检索和生成效果都会大打折扣。我们来系统性地梳理一下在该阶段三大常见问题 ——数据质量差、多模态信息、复杂PDF提取。
(1)面临挑战
数据质量差:企业数据(特别是非结构化素材)普遍存在治理不足的问题,关键表现为:数据标注缺失、元数据不完整、包括敏感内容、信息过时、表述矛盾以及文档重复。此外,素材质量也受到各类噪声的影响,如乱码、水印和页眉页脚等干扰因素。
例如:某银行RAG系统因缺乏版本管理,同时导入新旧信贷政策文件(2020年规定最高可贷500万,2023年改为300万),可能导致AI向客户错误承诺贷款额度,引发合规风险。
多模态信息:文档中包含图像、表格、颜色、字体样式、布局结构等非纯文本元素。这些视觉/结构信息可能承载重点语义(如“红色标注=紧急”)传统文本提取会丢失这些上下文。
例如:某制造企业设备维护手册中,关键安全提示"温度超过85°C必须立即关机"因PDF提取丢失红色加粗格式,未体现紧急级别。当运维人员查询"紧急停机条件"时,框架未突出该条目,可能导致严重事故。
繁琐PDF提取:PDF本质是“页面+坐标”的排版格式,不是语义结构。存在扫描件(图片型PDF)、加密PDF、双栏排版、浮动文本框等问题。直接用pypdf等器具提取会导致文本错乱、顺序错误。
例如:某律所导入双栏排版合同扫描件时,pypdf错误拼接左右栏内容(如"甲方同意支付乙方"与"违约金上限为5%"合并为"支付违约金"),导致语义扭曲,将原"服务费用另行约定"误读为"支付违约金",引发法律风险。
(2)解决方案
RAG系统在索引构建阶段常面临困难,可通过建立体系化的完整的数据准备流程并集成智能文档技术予以解决。
① 信息准备流程
主要步骤 | 具体操作 |
---|---|
1. 数据评估与分类 | • 数据审计:全面审查现有数据,识别敏感、过时、矛盾或不准确的信息。 • 数据分类:按类型、来源、敏感性和重要性对内容进行分类,便于后续处理。 |
2. 内容清洗 | • 去重:删除重复数据 • 纠错:修正格式错误、拼写错误等 • 更新:替换过时信息,确保数据时效性 • 一致性检查:解决数据矛盾,确保逻辑一致 |
3. 敏感信息处理 | • 识别敏感数据:使用软件或正则表达式识别敏感信息,如个人身份信息 • 脱敏或加密:对敏感数据进行脱敏处理,确保合规 |
4. 数据标记与标注 | • 元数据标记:为数据添加元数据,如来源、创建时间等 • 内容标注:对非结构化数据进行标注,便于后续检索和分析 |
5. 数据治理框架 | • 制定政策:明确数据管理、访问控制和更新流程 • 责任分配:指定数据治理负责人,确保政策执行 • 监控与审计:定期监控数据质量,进行审计 |
②智能文档技术
智能文档技术是一种对非结构化或半结构化的文档进行自动识别、理解、解析和转换的技术体系。其目标是将难以处理的原始文档(如PDF、图片、Word、网页等)转化为可被计算机高效分析和利用的结构化数据,从而提升信息提取、检索、分析与应用的效率。
二、知识检索阶段
RAG的核心优势在于基于外部知识生成内容,而非依赖模型内部参数。检索阶段通过从知识库中精准提取相关文档片段,为后续生成提供可验证的事实依据。在这段中针对RAG架构中“知识检索阶段” 出现的三大典型问题 ——内容缺失、错过排名靠前的文档、不在上下文中。进行全面分析,协助大家深入理解挑战本质,并提供可落地的优化路径。
(1)面临挑战
内容缺失:在用户提问后,检索系统未能返回具备答案的关键文档或段落,导致后续生成的回答缺乏依据,出现“编造”或“答非所问”的情况。
例如:用户问“2024年公司Q2营收是多少?”,但检索结果中没有财报材料。 导致LLM只能“猜测”回答。
错过排名靠前的文档:虽然相关文档存在于知识库中并被检索到,但其排序靠后,未进入最终送入生成模型的 top-k 结果中,导致答案质量下降。
例如:排名第11的相关文档才是最准确的,但只取 top-5。导致错失关键信息。
不在上下文中:检索系统成功找到了包含答案的文档,但在生成阶段未将其纳入上下文输入,导致LLM“视而不见”。
例如:检索出5个文档,其中第4个有正确资料,但生成时只用了前3个。导致答案错误。
(2)解决方案
RAG系统在索引构建阶段常面临难题,可利用查询重写(又叫查询改写、查询转换)澄清用户意图,明确用户意图,提高检索准确性;采用混合检索和重排策略,确保最相关的文档被优先处理,生成更准确的答案。
① 通过查询重写澄清用户意图
在用户提问模糊时,系统需通过查询改写技术明确其真实意图,并精准检索答案。用户输入:“如何申请信用卡?”。此挑战可能包含以下几种潜在意图:可能是申请流程,还可能是申请信用卡所需材料,也有可能是申请资格条件。由于用户未明确指出具体需求,系统需自动识别并澄清意图。
② 混合检索和重排策略
在用户提问如“信用卡年费是多少?”时,仅依赖单一检索方式可能导致相关文档遗漏或排名靠后。为解决这一问题,采用 混合检索 + 重排策略,从而提升答案准确率。用户提问:“信用卡年费是多少?”。直接检索会导致的问题:
- 关键词匹配可能漏掉语义相近但用词不同的文档(如“年费减免政策”)。
- 语义检索可能召回不精确的结果。
- 最相关文档可能排在靠后位置,导致系统生成错误或不完整答案。
具体步骤包括:首先进行混合检索,结合关键词检索(如“信用卡年费”)和语义检索(使用嵌入模型检索与“信用卡年费”语义相近的文档);然后对检索结果进行重排;最后从重排后的文档中生成答案。
关键词检索的优势是精度高、延迟低。而语义检索(也就是向量相似度匹配)的好处在于高召回并能理解同义表达。所以使用混合搜索可以实现优势互补。混合检索后,系统得到一个初步结果列表,但顺序未必最优。此时引入重排模型对结果重新打分排序。
例如:用户输入“信用卡年费是多少?”后,框架进行混合检索,结合关键词和语义检索,重排后最相关的文档(如“信用卡年费政策”)排名靠前,系统生成准确答案:“信用卡年费根据卡类型不同,普通卡年费为100元,金卡为300元,白金卡为1000元。”
三、增强生成阶段
将检索阶段返回的零散文档片段重组为符合用户需求的完整答案。这段聚焦 RAG 框架增强生成阶段的四大核心挑战:就是增强生成信息缺失、内容不完整、提示词格式错误与生成幻觉。进行问题分析并给予解决方案,结合场景案例加以说明。
(1)面临挑战
未提取:答案与所提供的上下文相符,但大语言模型却无法准确提取。这种情况通常发生在上下文中存在过多噪音或相互冲突的信息时。
例如:医疗知识库中说阿司匹林禁用于水杨酸过敏者,慎用于胃溃疡患者。用户问“哪些人不能服用”,模型却答“胃溃疡患者需谨慎”,忽略关键禁忌症。原因:禁用信息被夹在中间,且“慎用”在训练资料中更高频。
不完整:尽管能够利用上下文生成答案,但信息缺失会导致对用户查询的答复不完整。
例如:用户要求“列出2024年Q1-Q3销售额并计算同比增长率”。检索到财报数据:Q1 1.2亿、Q2 1.5亿、Q3 1.8亿。模型仅罗列季度销售额,未计算增长率且未结构化呈现,未能满足完整指令要求。
格式错误:当prompt中的附加指令格式不正确时,大语言模型可能误解或曲解这些指令,从而导致错误的答案。
分析以下数据并生成摘要:
员工姓名:张三 部门:销售 绩效:A
员工姓名:李四 部门:工艺 绩效:B
注意:绩效为A的员工需标注"高潜力"
请勿透露具体姓名### 资料输入
员工姓名:张三 部门:销售 绩效:A
员工姓名:李四 部门:手艺 绩效:B### 任务指令
1. 生成数据摘要
2. 绩效为A的员工标注"高潜力"
3. **禁止输出任何姓名**
幻觉:大模型生成了看似合理但实际不存在于上下文或事实错误的信息。
多少?”模型回答:“公司在泰国投资5000万元人民币,用于建设仓储中心。” 生成完全虚构数字和项目,属于典型幻觉。就是上下文仅提到:“公司计划在2025年拓展东南亚市场。”用户问:“公司在泰国的投资金额
(2)解决方案
RAG系统在答案生成阶段常面临障碍,可通过改进提示词模板和实施动态防护栏两种方式实现。
① 改进提示词模板
提示词的质量直接决定输出答案的准确性与完整性。通过针对不同场景优化提示词,并结合推理模型自动优化,可显著提升用户体验。好的提示词 = 明确指令 + 结构要求 + 上下文引导
用户问题 | 原始提示词 | 存在问题 | 优化后提示词 |
---|---|---|---|
如何申请信用卡? | 根据以下上下文回答问题:如何申请信用卡? | 回答笼统,可能遗漏关键信息 | 根据以下上下文,提取与申请信用卡相关的具体步骤和所需材料:如何申请信用卡? |
信用卡年费是多少? | 根据以下上下文回答疑问:信用卡的年费是多少? | 忽略减免政策、卡种差异 | 根据以下上下文,详细列出不同信用卡的年费信息,并说明是否有减免政策:信用卡的年费是多少? |
什么是零存整取? | 根据以下上下文回答问题:什么是零存整取? | 定义不清,缺少适用人群 | 根据以下上下文,准确解释零存整取的定义、特点和适用人群,确保信息真实可靠:什么是零存整取? |
那么如何对原有的优化呢?可能通过 DeepSeek-R1 或 Qwen3 的推理链,对提示词进行优化。
- 信息提取:从原始提示词中提取关键信息。
- 需求分析:分析用户的需求,明确用户希望获取的具体信息。
- 提示词优化:根据需求分析的结果,优化提示词,使其更具体、更符合用户的需求。
② 实施动态防护栏
动态防护栏是一种在生成式AI系统中用于实时监控和调整模型输出的机制,旨在确保生成的内容符合预期、准确且安全。它通过设置规则、约束和反馈机制,动态地干预模型的生成过程,避免生成错误、不完整、不符合格式要求或含有虚假信息(幻觉)的内容。下图是动态防护栏的工作机制。
RAG系统中,它重要解决四类难题:
- 防止未提取(确保从上下文正确获取信息)
- 避免答案不完整(覆盖所有必要信息)
- 纠正格式错误(符合指定格式要求)
- 消除幻觉(杜绝虚假或无关内容)
如何解决的呢?技术实现方式如下表
规则类型 | 判断依据 | 技术实现方式 |
---|---|---|
内容完整性检查 | 是否包含关键信息项 | 关键词匹配 + NLP实体识别 |
项目全覆盖检查 | 是否遗漏已知类别 | 上下文枚举对比 + 集合匹配 |
语义一致性检查 | 是否与原文矛盾或虚构 | 向量相似度、NLI模型 |
格式合规性检查 | 是否结构清晰(分点、列表) | 正则表达式 + 格式模板校验 |