GEOZ

RAG 效果差,先别急着换模型:按这五层排查更有效

2026/9/24
RAG 效果差,先别急着换模型:按这五层排查更有效

AIAI Summary (BLUF)

RAG效果不好,问题可能出在索引、检索或生成任何一个环节。这篇文章按「诊断→解决」的思路,帮你定位具体问题并给出对应的优化方案,还教你如何建立评估基线来量化改进效果。

核心洞察

这篇文章最有意思的点是它把 RAG 优化拆成了一条清晰的诊断链路:先建基线,再按“检索不到、召回不相关、切片不完整、重排不佳、模型理解有误”逐层排查。很多人调 RAG 效果不好时第一反应是换模型,但大部分问题其实出在索引和检索阶段,换模型解决不了。另外,文中的元数据抽取方案有具体的效果对比数据,这个在实际调优中参考价值比较大。

RAG(检索增强生成)的效果由三个阶段决定:

  1. 建立索引:文档的解析、切片与向量化
  2. 检索召回:根据查询从索引中匹配并召回相关切片
  3. 生成回答:大模型根据召回内容和查询生成最终回答

每个阶段都可能引入效果问题。本文按诊断 → 解决的模式,帮你定位问题并给出对应的优化方案。

核心结论

  1. RAG 效果优化应遵循“建立基线 → 逐层诊断 → 迭代验证”的链路,按“检索不到、召回不相关、切片不完整、重排不佳、模型理解有误”五个层级依次排查,大部分问题出在索引和检索阶段,换模型解决不了。

  2. 优化前需构造至少 100 条测试用例的评测集,覆盖事实型、比较型、教程型、分析型四类问题,并完整运行一次基线测试作为后续所有优化的对照基准。

  3. 元数据抽取可显著提升检索精度:未启用时无关文档切片(相似度 40-41%)可能排在目标切片(37%)之前;启用后目标切片相似度提升至 65% 并跃居第一。

  4. 切片策略直接影响召回质量:切片过短会丢失上下文导致无法匹配,切片过长会混合多主题引入无关信息,语义截断会导致召回内容不完整;建议使用智能切分并人工抽检修正。

  5. 效果优化是迭代过程,通常需要 2-3 轮调整,建议先从索引和检索侧入手,再优化生成侧,每次变更后用同一评测集重跑并对比基线报告。

第一步:建立评估基线

优化前需要一套可量化的评估标准,否则你没法判断改进是否有效。

构造评测集

准备至少 100 条测试用例,每条包含一个问题和对应的预期结果。建议覆盖以下类型:

类型 示例
事实型 “产品 X 的保修期是多久?”
比较型 “对比产品 X 和产品 Y 的主要差异”
教程型 “如何安装产品 X?”
分析型 “为什么近 3 个月产品 X 的销量在上升?”

运行基线测试

使用问答服务的调试窗口或 chat API 完整运行一次评测集,记录每条用例的召回内容和回答结果。这份报告是后续所有优化的对照基准。

第二步:诊断与改进

逐条分析基线报告中效果不佳的用例,按以下分类定位问题并应用对应方案。

2.1 检索无效:没有找到相关知识

知识库中确实存在相关内容,但检索未能命中。

补充知识库内容

如果知识库中缺少相关知识,大模型无法回答问题。检查知识库是否覆盖了评测用例涉及的主题,缺失的内容需要及时补充。

优化源文档内容与排版

文档格式问题可能导致关键内容在解析时丢失。建议:

  • 确保标题层次分明,内容结构清晰
  • 移除页面水印
  • 避免使用包含合并或跨页单元格的复杂表格
  • 优先使用 Markdown 格式;PDF/DOCX 等格式建议先转换为 Markdown 再导入

与查询语言保持一致

如果查询更多使用英语等外语,建议源文档内容也使用相应语言。对于专业术语,可进行多语言处理(如中英双语标注)。

消除实体歧义

对相同实体的表述进行统一。例如将文档中的 “ML”、“Machine Learning”、“机器学习” 统一规范为 “机器学习”。

可以将文档输入大模型,让模型帮助统一术语。文档较长时,先拆分为多个部分再逐一处理。

启用 Query 改写

在多轮对话中,用户的输入可能不完整或存在上下文省略。启用 Query 改写后,系统根据会话历史自动将查询补全为更完整的形式,提升检索匹配度。

示例:用户输入 手机X1,系统改写为 请提供产品库中所有在售版本的手机X1及其参数信息

知识检索知识问答的知识库独立配置中启用 Query 改写 开关。

2.2 检索无效:召回知识不相关

知识库有相关内容,但召回的是不相关的切片。

使用标签过滤

典型问题:知识库包含多个类别的文档,希望检索 A 类文档时,召回结果中混入了 B 类内容。

解决方案:为文档添加标签,检索时通过标签筛选缩小范围。

设置方式:

  • 导入时设置:在导入数据的第三步中添加标签
  • 导入后编辑:在文档列表的“更多”菜单中点击“标签”

使用方式:

  • 知识检索知识问答的知识库独立配置中设置标签过滤
  • 通过 API 调用时在请求参数中指定 tags

启用元数据抽取

典型问题:知识库中有多篇结构相似的文档(如都包含“功能概述”章节),检索时召回了错误文档的内容。

解决方案:为文档定义元数据,系统在向量检索前先进行结构化搜索,精准定位目标文档。

工作原理

  1. 从查询中提取元数据(如 {"key": "name", "value": "手机X1"}
  2. 根据元数据筛选包含该信息的切片
  3. 在筛选结果上进行向量检索

效果对比:未启用元数据时,无关文档的切片(相似度 40-41%)可能排在目标切片(37%)之前。启用后,目标切片相似度提升至 65% 并跃居第一。

在文档列表中点击“Meta信息”查看和配置元数据。元数据的常见应用还包括嵌入日期信息以过滤最近的内容。

2.3 切片不完整

切片方式不当会导致以下问题:

问题 表现 影响
切片过短 单个切片仅包含一句话,缺失上下文 检索时无法匹配到相关内容
切片过长 单个切片混合了多个主题 召回时返回大量无关信息
语义截断 切片在句子中间被强制截断 召回的内容不完整

选择智能切分策略

智能切分基于语义相关性自适应地选择切片点,而非固定长度切分:

  1. 系统先利用内置分句标识符将文档划分为段落
  2. 再根据段落间的语义相关性决定切片边界

适用于大部分场景,在创建知识库导入数据时选择。

人工检查和修正切片

自动切片仍可能出现意外截断或解析错误(如空格被解析为 %20)。建议导入完成后人工抽检切片质量。

在知识库详情页的切片详情 Tab 中查看切片列表,发现问题后直接编辑修正。修正后的内容立即生效用于检索。

修正仅影响索引中的切片,不会修改源文档。重新导入文档时需要再次检查。

手动新增或删除切片

当自动切分无法覆盖的边界情况出现时,可直接在切片层做更细粒度的调整:

  • 新增切片:补充被遗漏的关键信息或额外上下文。需选择所属文档,最多 6000 字符
  • 删除切片:移除包含错误信息或重复内容的切片,不影响同文档其他切片

操作方式见文档管理的切片管理部分。

2.4 重排不佳

切片已被召回,但排序不合理导致最终结果不理想。

调整相似度阈值

相似度阈值用于过滤排序后分数低于阈值的切片。

  • 阈值过高:可能丢弃所有相关切片,大模型无法获取足够信息
  • 阈值过低:可能召回大量低相关度切片,引入噪音

没有通用的最佳阈值,需要通过调试窗口反复测试,观察不同阈值下的召回结果。建议从 0.2 开始调整。

配置位置:知识检索知识问答的知识库独立配置中的相似度阈值(0.01~1.0)。

增加最大召回数量

最大召回数量决定最终返回的切片数。对于需要总结、列举或比较的复杂问题,提供更多高质量切片(如 K=20)通常比仅提供 5 个效果更好。

但召回数量也非越大越好,过多的切片拼装后可能超出大模型的输入长度限制,导致内容被截断。

配置位置:知识库独立配置中的最大召回数量(1~20)。

选择排序模型和模式

排序模型对初步召回的切片进行重排序,决定最终送给大模型的切片顺序。可选模式:

模式 适用场景
问答模式(默认) 用户输入完整问题,期望从切片中找到答案
相似模式 查询与切片表述风格相近,如查找历史记录、政策条款
自定义高级模式 需要特殊排序规则,如“优先返回最近一年的内容”
  • 知识库独立配置:在检索服务或问答服务中,展开知识库配置面板选择排序模型和模式
  • 全局混排模型:在知识检索的全局检索配置中配置,对所有绑定知识库统一排序

2.5 模型理解有误

正确的切片已被召回,但大模型生成的回答不准确。

更换生成模型

典型问题:回答看起来是生硬拼凑的,模型未能理解知识与问题之间的关系。

不同模型在指令遵循、知识理解、长文本处理等方面存在能力差异:

场景 建议模型
简单信息查询和总结 参数较小的模型(如 qwen3-flash)
复杂逻辑推理 参数更大的模型(如 qwen3-max)
需要查阅大量切片 上下文长度更大的模型

在问答服务的配置页中切换模型即可。

优化提示词

典型问题:返回结果没有按照要求,或不够全面。

三种常见优化方法:

方法一:限定输出内容

如果所提供的信息不足以回答问题,请明确告知
“根据现有信息,我无法回答这个问题”。切勿编造答案。

方法二:添加少样本示例

在提示词中给出期望的输入-输出示例,引导模型按照指定格式和风格回答。

# 要求
请从下方文本中提取技术规格,并按示例的字段格式输出 JSON。

# 示例
## 输入:星尘S9Pro, 6.9英寸, 512GB存储, 16GB RAM, 6000mAh电池
## 输出:{"product":"星尘S9 Pro","screen_size":"6.9inch","ram_size":"16GB","battery":"6000mAh"}

方法三:分隔知识内容

将提示词中的指令和知识库内容用分隔标记明确分开,便于大模型理解结构。

启用拒答策略

典型问题:回答中包含了模型自身的通用知识,未严格基于知识库。

在问答服务配置中开启拒答功能。开启后,当检索结果不足以回答问题时,模型拒绝回答并返回自定义话术,而非编造答案。

配置位置:知识问答的生成控制参数中的拒答开关。

调整模型参数

典型问题:相同问题每次回答不同,或期望不同但回答雷同。

通过模型配置按钮调整 temperature 参数:

  • 值越高:生成的内容越多样,适合创意写作、头脑风暴
  • 值越低:生成的内容越确定,适合事实查询、技术文档

在问答服务配置页,点击模型右侧的 设置 图标调整。

2.6 多知识库场景优化

绑定多个知识库时,以下策略可提升联合检索效果:

策略 说明
设置知识库权重/优先级 为核心知识库设置更高的权重或排序,使其结果在最终排序中占主导
启用知识库路由 系统根据查询意图自动判断需要检索哪些库,减少无关库的干扰。在知识检索的全局检索配置中配置
选择混排模型模式 问答模式适合 QA 场景;相似模式适合查找语义相近的段落;自定义高级模式适合特殊排序需求

第三步:持续迭代

每次完成配置变更后:

  1. 重新评测:用同一评测集重跑,量化改进效果
  2. 对比分析:与基线报告对比,确认变更解决了哪些问题、是否引入了新问题
  3. 补充用例:将线上发现的新 bad case 加入评测集,持续扩大覆盖范围

重要:效果优化是迭代过程,通常需要 2-3 轮调整。建议先从索引和检索侧入手,再优化生成侧。

常见问题(FAQ)

RAG效果不好,应该先换模型还是先建评估基线?

应先建评估基线。准备至少100条测试用例,覆盖事实、比较、教程、分析等类型,运行基线测试记录召回和回答结果。这份报告是后续优化的对照基准,没有它无法判断改进是否有效。

知识库有相关内容但检索不到,有哪些优化方法?

可补充知识库内容、优化源文档排版、统一查询与文档语言、消除实体歧义、启用Query改写。例如将文档中的“ML”和“机器学习”统一为“机器学习”,或让系统根据会话历史补全查询。

召回的知识不相关,如何精准定位目标文档?

可使用标签过滤或启用元数据抽取。元数据抽取会先从查询中提取元数据(如产品名),筛选包含该信息的切片,再进行向量检索。效果对比显示,目标切片相似度可从37%提升至65%并跃居第一。

Roger深圳
本文由 Roger 审核,最后更新于 2026年9月24日
联系编辑 →
← 返回文章列表
分享到:微博

版权与免责声明:本文仅用于信息分享与交流,不构成任何形式的法律、投资、医疗或其他专业建议,也不构成对任何结果的承诺或保证。

文中提及的商标、品牌、Logo、产品名称及相关图片/素材,其权利归各自合法权利人所有。本站内容可能基于公开资料整理,亦可能使用 AI 辅助生成或润色;我们尽力确保准确与合规,但不保证完整性、时效性与适用性,请读者自行甄别并以官方信息为准。

若本文内容或素材涉嫌侵权、隐私不当或存在错误,请相关权利人/当事人联系本站,我们将及时核实并采取删除、修正或下架等处理措施。也请勿在评论或联系信息中提交身份证号、手机号、住址等个人敏感信息。