按 RAG 各阶段诊断问题并针对性改进,系统性提升检索与回答质量
RAG(Retrieval Augmented Generation)的效果由三个阶段决定:
优化前需要一套可量化的评估标准,否则无法判断改进是否有效。
准备至少 100 条测试用例,每条包含一个问题和对应的预期结果。建议覆盖以下类型:
使用问答服务的调试窗口或 chat API 完整运行一次评测集,记录每条用例的召回内容和回答结果。这份报告是后续所有优化的对照基准。
逐条分析基线报告中效果不佳的用例,按以下分类定位问题并应用对应方案。
知识库中确实存在相关内容,但检索未能命中。
知识库有相关内容,但召回的是不相关的切片。
切片方式不当会导致以下问题:
切片已被召回,但排序不合理导致最终结果不理想。
正确的切片已被召回,但大模型生成的回答不准确。
绑定多个知识库时,以下策略可提升联合检索效果:
每次完成配置变更后:
- 建立索引:文档的解析、切片与向量化
- 检索召回:根据查询从索引中匹配并召回相关切片
- 生成回答:大模型根据召回内容和查询生成最终回答
第一步:建立评估基线
优化前需要一套可量化的评估标准,否则无法判断改进是否有效。
构造评测集
准备至少 100 条测试用例,每条包含一个问题和对应的预期结果。建议覆盖以下类型:
| 类型 | 示例 |
|---|---|
| 事实型 | "产品 X 的保修期是多久?" |
| 比较型 | "对比产品 X 和产品 Y 的主要差异" |
| 教程型 | "如何安装产品 X?" |
| 分析型 | "为什么近 3 个月产品 X 的销量在上升?" |
运行基线测试
使用问答服务的调试窗口或 chat API 完整运行一次评测集,记录每条用例的召回内容和回答结果。这份报告是后续所有优化的对照基准。
第二步:诊断与改进
逐条分析基线报告中效果不佳的用例,按以下分类定位问题并应用对应方案。
2.1 检索无效:没有找到相关知识
知识库中确实存在相关内容,但检索未能命中。
补充知识库内容
补充知识库内容
如果知识库中缺少相关知识,大模型无法回答问题。检查知识库是否覆盖了评测用例涉及的主题,缺失的内容需要及时补充。
优化源文档内容与排版
优化源文档内容与排版
文档格式问题可能导致关键内容在解析时丢失。建议:
- 确保标题层次分明,内容结构清晰
- 移除页面水印
- 避免使用包含合并或跨页单元格的复杂表格
- 优先使用 Markdown 格式;PDF/DOCX 等格式建议先转换为 Markdown 再导入
与查询语言保持一致
与查询语言保持一致
如果查询更多使用英语等外语,建议源文档内容也使用相应语言。对于专业术语,可进行多语言处理(如中英双语标注)。
消除实体歧义
消除实体歧义
对相同实体的表述进行统一。例如将文档中的 "ML"、"Machine Learning"、"机器学习" 统一规范为 "机器学习"。
可以将文档输入大模型,让模型帮助统一术语。文档较长时,先拆分为多个部分再逐一处理。
2.2 检索无效:召回知识不相关
知识库有相关内容,但召回的是不相关的切片。
使用标签过滤
使用标签过滤
启用元数据抽取
启用元数据抽取
典型问题:知识库中有多篇结构相似的文档(如都包含"功能概述"章节),检索时召回了错误文档的内容。解决方案:为文档定义元数据,系统在向量检索前先进行结构化搜索,精准定位目标文档。工作原理:
- 从查询中提取元数据(如
{"key": "name", "value": "手机X1"}) - 根据元数据筛选包含该信息的切片
- 在筛选结果上进行向量检索
2.3 切片不完整
切片方式不当会导致以下问题:
| 问题 | 表现 | 影响 |
|---|---|---|
| 切片过短 | 单个切片仅包含一句话,缺失上下文 | 检索时无法匹配到相关内容 |
| 切片过长 | 单个切片混合了多个主题 | 召回时返回大量无关信息 |
| 语义截断 | 切片在句子中间被强制截断 | 召回的内容不完整 |
选择智能切分策略
选择智能切分策略
人工检查和修正切片
人工检查和修正切片
自动切片仍可能出现意外截断或解析错误(如空格被解析为
%20)。建议导入完成后人工抽检切片质量。在知识库详情页的切片详情 Tab 中查看切片列表,发现问题后直接编辑修正。修正后的内容立即生效用于检索。修正仅影响索引中的切片,不会修改源文档。重新导入文档时需要再次检查。
手动新增或删除切片
手动新增或删除切片
当自动切分无法覆盖的边界情况出现时,可直接在切片层做更细粒度的调整:
- 新增切片:补充被遗漏的关键信息或额外上下文。需选择所属文档,最多 6000 字符
- 删除切片:移除包含错误信息或重复内容的切片,不影响同文档其他切片
2.4 重排不佳
切片已被召回,但排序不合理导致最终结果不理想。
调整相似度阈值
调整相似度阈值
增加最大召回数量
增加最大召回数量
最大召回数量决定最终返回的切片数。对于需要总结、列举或比较的复杂问题,提供更多高质量切片(如 K=20)通常比仅提供 5 个效果更好。但召回数量也非越大越好——过多的切片拼装后可能超出大模型的输入长度限制,导致内容被截断。配置位置:知识库独立配置中的最大召回数量(1~20)。
选择排序模型和模式
选择排序模型和模式
排序模型对初步召回的切片进行重排序,决定最终送给大模型的切片顺序。可选模式:
| 模式 | 适用场景 |
|---|---|
| 问答模式(默认) | 用户输入完整问题,期望从切片中找到答案 |
| 相似模式 | 查询与切片表述风格相近,如查找历史记录、政策条款 |
| 自定义高级模式 | 需要特殊排序规则,如"优先返回最近一年的内容" |
- 知识库独立配置:在检索服务或问答服务中,展开知识库配置面板选择排序模型和模式
- 全局混排模型:在知识检索中配置,对所有绑定知识库统一排序
2.5 模型理解有误
正确的切片已被召回,但大模型生成的回答不准确。
更换生成模型
更换生成模型
典型问题:回答看起来是生硬拼凑的,模型未能理解知识与问题之间的关系。不同模型在指令遵循、知识理解、长文本处理等方面存在能力差异:
在问答服务的配置页中切换模型即可。
| 场景 | 建议模型 |
|---|---|
| 简单信息查询和总结 | 参数较小的模型(如 qwen3-flash) |
| 复杂逻辑推理 | 参数更大的模型(如 qwen3-max) |
| 需要查阅大量切片 | 上下文长度更大的模型 |
优化提示词
优化提示词
典型问题:返回结果没有按照要求,或不够全面。三种常见优化方法:方法一:限定输出内容方法二:添加少样本示例在提示词中给出期望的输入-输出示例,引导模型按照指定格式和风格回答。方法三:分隔知识内容将提示词中的指令和知识库内容用分隔标记明确分开,便于大模型理解结构。
启用拒答策略
启用拒答策略
典型问题:回答中包含了模型自身的通用知识,未严格基于知识库。在问答服务配置中开启拒答功能。开启后,当检索结果不足以回答问题时,模型拒绝回答并返回自定义话术,而非编造答案。配置位置:知识问答中的拒答开关。
调整模型参数
调整模型参数
典型问题:相同问题每次回答不同,或期望不同但回答雷同。通过模型配置按钮调整 temperature 参数:
图标调整。
- 值越高:生成的内容越多样,适合创意写作、头脑风暴
- 值越低:生成的内容越确定,适合事实查询、技术文档
2.6 多知识库场景优化
绑定多个知识库时,以下策略可提升联合检索效果:
| 策略 | 说明 |
|---|---|
| 设置知识库权重/优先级 | 为核心知识库设置更高的权重或排序,使其结果在最终排序中占主导 |
| 启用知识库路由 | 系统根据查询意图自动判断需要检索哪些库,减少无关库的干扰。在知识检索中配置 |
| 选择混排模型模式 | 问答模式适合 QA 场景;相似模式适合查找语义相近的段落;自定义高级模式适合特殊排序需求 |
第三步:持续迭代
每次完成配置变更后:
- 重新评测:用同一评测集重跑,量化改进效果
- 对比分析:与基线报告对比,确认变更解决了哪些问题、是否引入了新问题
- 补充用例:将线上发现的新 bad case 加入评测集,持续扩大覆盖范围