本课目录(18 节)
4.3 知识库质量与 RAG 调优
当知识问答效果不稳定时,先判断问题出在知识、切分、检索,还是生成。
智能体知识问答的效果,不只取决于模型回复能力,更取决于知识是否准备得清楚、是否被正确切分、是否能被检索到、是否能被稳定传入模型上下文。学完本节,当知识库里明明有资料,智能体却没答对、答不全、引用不准或命中了旧内容时,你将能够从 ADP 的知识库设置和调试结果出发,判断如何从知识质量、切分方式、检索召回、问答 和引用配置中定位原因。
4.3.1 先判断:是不是知识与检索问题
RAG 的完整含义是“检索增强生成”。在知识问答场景中,模型并不是自动阅读整个知识库后回答,而是先根据用户问题从知识库中检索出相关片段,再把这些片段作为上下文交给模型生成答案。因此,知识库里“有答案”和智能体“能答对”之间,还隔着检索、切分、重排、上下文拼接和生成约束等多个环节。
一个典型的 RAG 链路可以理解为:用户问题进入应用后,系统先理解问题并可能结合上下文改写;随后在知识库中召回相关文档、问答或数据库内容;再通过匹配度、重排等机制筛选更相关的片段;最后把片段、提示词和用户问题一起传给模型生成答案。如果任何一环出现问题,最终回答都会受影响。
| 链路环节 | 作用 | 常见问题 |
|---|---|---|
| 用户问题 | 表达真实意图,可能包含口语化、上下文省略或模糊指代。 | 问法和文档表达差异大,导致检索不到。 |
| 知识准备 | 提供可解析、可检索、可信的知识来源。 | 文档过期、重复、标题混乱、表格不规范。 |
| 文档切分 | 把文档拆成可被检索和召回的 Chunk。 | 切片过大混入噪声,切片过小丢失上下文。 |
| 检索召回 | 通过语义检索、混合检索等方式找到候选片段。 | 召回数量太少、匹配度过高或知识范围错误。 |
| 重排筛选 | 对候选片段做二次相关性排序。 | 正确片段召回了但排在后面,未进入最终上下文。 |
| 增强生成 | 把片段和提示词拼接后生成答案。 | 命中正确但回答不按依据,引用缺失或引用错误。 |
知识问答效果不好时,最容易走偏的做法是直接改 Prompt 或换模型。实际上,很多问题的根因并不在生成,而在前面的知识准备和检索环节。你可以先用三个问题做快速判断。
| 判断问题 | 怎么看 | 优先处理 |
|---|---|---|
| 知识库里有没有可靠答案? | 查看正式文档、问答 或数据库中是否有明确、最新、可引用的答案。 | 没有答案时先补知识,不要让模型猜。 |
| 有没有命中正确片段? | 在调试结果中查看命中文档、Chunk、问答 或数据库结果。 | 没命中时先看切分、检索范围、召回数量和匹配度。 |
| 命中后有没有按依据回答? | 对比命中片段和最终回复,看是否扩展、遗漏或误读。 | 命中了但答错,再调整 Prompt、引用要求或模型配置。 |
排查顺序
先确认有没有知识,再确认有没有命中,最后再看有没有正确生成。这个顺序能避免把知识缺失、切分错误或检索范围错误误判为 Prompt 问题。
常见现象
| 现象 | 更可能的问题 | 不要先做什么 |
|---|---|---|
| 知识库有答案但没命中 | 问法和文档表达差异大、Chunk 不合适、匹配度过高、检索范围不对。 | 不要只加长 Prompt。 |
| 命中了旧制度 | 版本管理、到期时间、标签或分类没有维护。 | 不要只调召回数量。 |
| 命中了正确文档但答不全 | Chunk 太短,条件、例外和结论被拆开。 | 不要直接降低匹配度。 |
| 答案正确但没有引用 | 参考来源或回复策略未配置,或 Prompt 未要求引用。 | 不要把它当成检索失败。 |
最后把 RAG 最常见的四类问题现象与优先排查项整理成一张对照表。排障时先定位现象,再按顺序逐项排查:
| 问题现象 | 优先排查项 |
|---|---|
| 没命中 | 确认目标文档是否已上传、解析成功并处于可用状态 检查问题关键词、召回范围和权限过滤 查看切片是否包含可独立理解的答案信息 用测试问题逐项验证召回结果 |
| 命中旧文档 | 核对文档版本、更新时间和生效状态 下线或删除过期知识并重新索引 检查同名文档与重复切片 建立版本与发布管理流程 |
| 答案不完整 | 检查切片是否过短或割裂上下文 调整切片重叠、召回数量和相关性阈值 确认问题是否需要多段信息组合 优化 Prompt,要求覆盖关键字段 |
| 引用错误 | 对照回答与实际召回片段 检查引用字段、文档元数据和节点变量映射 避免模型生成未召回的来源 用标准问题集回归验证引用准确率 |
4.3.2 知识库质量:把资料整理成可用知识
知识库质量决定了后续调优的上限。文档本身如果过期、重复、标题混乱、表格不规范,即使检索参数调得再细,也容易出现命中错误或回答不稳定。
这里的重点不是“上传更多资料”,而是让资料更适合被检索、被引用、被维护。建议先把知识按业务主题整理成清单,再决定哪些放文档、哪些做 问答、哪些适合数据库。
| 调优对象 | 检查重点 | 配置与维护动作 |
|---|---|---|
| 文档命名 | 名称是否能体现主题、版本、适用范围。 | 上传前统一命名;在文档列表中按分类管理。 |
| 文档结构 | 标题、段落、表格、步骤是否清晰。 | 上传前整理源文件;导入后检查解析结果。 |
| 版本管理 | 是否存在旧制度、重复文档、冲突说明。 | 删除旧文档,或设置到期时间、分类和标签。 |
| 表格资料 | 是否有空行、空列、合并单元格、重复表头。 | 清理表格后导入;必要时使用按行切分或数据库。 |
| 权限范围 | 不同身份、部门、地区是否应看到不同知识。 | 用标签和检索范围限制知识可见范围。 |
(1)三类知识的准备规范
文档、问答和数据库都可以作为知识来源,但它们适合解决的问题不同,准备规范也不同。调优时不要把所有资料都当作文档上传,而要先判断知识的形态。例如,制度、手册、SOP 更适合文档;高频标准问题更适合问答;需要按字段查询、聚合或筛选的数据更适合数据库。
| 知识类型 | 适合场景 | 准备规范 |
|---|---|---|
| 文档 | 制度、手册、SOP、产品说明、政策条款。 | 设置生效范围、文档标签、到期时间、展示参考来源和文档分类;导入后关注解析状态,必要时做解析切分干预。 |
| 问答 | 高频问题、标准客服口径、容易误解或需要固定答案的问题。 | 支持批量导入、手动录入、从文档生成;批量导入文件 5MB 以内,单个问题和答案不超过 2000 字符,单次最多 10000 条,分类标题不超过 10 个字符。 |
| 数据库 | 商品、门店、订单、库存、指标等结构化数据查询。 | 数据库名称 50 字符以内,描述 100 字符以内;数据表要补充中文名、表描述、列中文名称、列描述和单位信息,帮助模型理解字段含义。 |
-
文档类知识要重点关注“ 可解析 ”和“ 可追溯 ”。如果文档到期后仍被检索,可能导致过期答案;如果没有打开参考来源,学员在测试时可能无法判断答案来自哪里。
-
问答类知识要重点关注“ 可校验 ”和“ 无冲突 ”。从文档生成的问答必须经过人工校验后再采纳,冲突问答需要合并处理。
-
数据库类知识要重点关注“ 字段可理解 ”。表名、列名、单位和描述写得越清楚,模型越容易判断应该查询哪张表、哪个字段。
(2)不要直接上传的典型资料
-
只适合人看的活动海报、复杂宣传页、截图合集。
-
大量设计元素混在一起的 PPT 页面。
-
拍照模糊、倾斜、遮挡或表格线不清晰的扫描件。
-
多人反复修改后没有版本标识的制度汇总。
调优建议
如果资料本身适合人读但不适合机器检索,先提取关键信息再入库。例如活动海报可以整理成“活动名称、适用时间、参与条件、优惠规则、限制条件、咨询入口”。
4.3.3 Chunk 切分:让片段既能命中,也能看懂
Chunk 是知识检索时被命中的基本片段。切分调优的目标不是追求越细越好,而是让每个片段都围绕一个相对完整的问题:既容易被用户问题命中,又能提供足够上下文让模型回答。
判断切分是否合适,可以看命中片段本身是否“能独立支撑回答”。如果片段只命中了结论,却没有条件;只命中了表格数据,却没有表头;只命中了流程步骤,却缺少前置条件,说明切分还需要调整。
| 切分问题 | 学员怎么判断 | 优化方向 |
|---|---|---|
| 切片过大 | 命中片段很长,包含多个主题,答案容易混入无关内容。 | 按标题、条款、问题或业务单元重新切。 |
| 切片过小 | 命中片段只有结论,没有条件、适用范围或例外。 | 增加切片长度或重叠,必要时用父子级切分。 |
| 表格被切坏 | 表头和数据分离,字段含义丢失。 | 表格按行切分,并保留表头范围。 |
| 问答被拆散 | 问题和答案不在同一个片段里。 | 按一问一答整理,或使用问答知识。 |
ADP 中常用切分方式
| 方式 | 适合场景 | 使用提示 |
|---|---|---|
| 默认切分 | 普通制度、说明文、手册类文档。 | 适合先快速验证,不适合所有特殊文档。不支持用户干预。 |
| 通用标识符切分 | 文档已有清晰章节、符号或固定分隔。 | 可设置标识符、切片最大长度、切片重叠长度。 |
| 父子级标识符切分 | 检索需要精确,回答需要完整上下文。 | 子级用于检索,父级用于召回给模型。 |
| 按行切分 | 每行或每几行是独立知识的表格。 | 适合 SKU、规则清单、门店表等。 |
参数边界
通用标识符切分可设置切片最大长度和切片重叠长度,切片最大长度不超过 4800 字符;重叠长度建议为切片最大长度的 10%,最高为 25%。 父子级切分中,子级切片最大长度不能超过父级最大长度,且最大可设置 1500 字符。表格按行切分时,表头范围最大支持 5 行。
🖼 图:4.3-01 知识库质量与RAG调优
4.3.4 检索召回:让合适的内容排到前面
切分解决**“知识怎么存”,检索召回解决“用户问的时候怎么找”**。调优时不要只盯着一个参数,而要看召回数量、匹配度、检索策略、重排、检索范围是否共同影响了结果。
检索参数的调整要围绕测试样本进行,而不是围绕单条问题反复试。召回数量调大,可能让某条问题命中,但也会带入更多噪声;匹配度调低,可能提高覆盖率,但也可能让弱相关片段进入上下文。更稳妥的做法是固定一组样本,看整体命中率、引用准确性和最终答案质量是否改善。
(1)先看召回结果,再调参数
如果调试时没有看到正确片段,优先检查检索范围和召回设置;如果正确片段出现了但排序靠后,再考虑重排;如果召回结果很多但都不相关,说明匹配度、知识质量或文档表达需要调整。
| 配置项 | 影响什么 | 调优提醒 |
|---|---|---|
| 向量模型 | 影响语义匹配能力。 | 当知识库中已经上传文档或关联数据库后,将不可变更该知识库的向量模型。如知识库内容清空,方可继续更改向量模型。 可在应用内“知识管理-更多-知识处理模型”里更改向量模型。 |
| 召回数量 | 返回多少个候选片段。 | 太少会漏,太多会带入噪声。 可在应用内“应用设置-知识-知识库检索设置-检索召回”里更改文档和问答的召回数量。 |
| 检索匹配度 | 控制片段达到什么相关度才被召回。 | 阈值高更精准但可能漏召回;阈值低覆盖广但噪声增加。 可在应用内“应用设置-知识-知识库检索设置-检索召回”里更改文档和问答的检索匹配度。 |
| 检索策略 | 结合语义和关键词匹配。 | 适合既有自然语言问题,又有编号、产品名、专有名词的场景。 可在应用内“应用设置-知识-知识库检索设置-检索召回”里更改检索策略。 |
| 重排 | 对候选片段二次排序。 | 适合“正确片段召回了但不靠前”的问题。 可在应用内“应用配置-知识-检索召回设置”里更改重排序模型,选择用于优化检索召回结果排序的模型,对召回阶段候选结果进行更精细化的重新排序。 |
| 检索范围 | 控制哪些标签、分类或知识可被检索。 | 可在应用内“应用设置-知识-知识库检索设置-检索范围”里更改检索范围。 |
**(2)**典型调参判断
| 现象 | 优先动作 |
|---|---|
| 一条都没命中 | 检查知识范围、匹配度是否过高、问法是否需要 配置问答或同义词。 |
| 命中太多无关内容 | 提高匹配度,清理低质量文档,优化文档标题和结构。 |
| 正确片段在结果里但靠后 | 开启或调整重排,减少无关召回。 |
| 表格查询不稳定 | 清理表格结构,评估按行切分、Excel 检索增强或数据库。 |
4.3.5 问答、引用与 Badcase 回归
(1)用问答稳住高频问题
问答适合解决用户真实问法和正式文档表达不一致的问题。高频问题、口语化问题、风险问题、需要固定话术的问题,都可以优先沉淀为问答。
设计问答时,不要只把制度标题改成问题。好的问答应该来自真实用户问法,并且答案要和正式文档保持一致。比如用户不会问“市内交通费报销规则是什么”,更可能问“打车票怎么报”“网约车发票能不能报”。这些问法都可以映射到同一条标准答案。
| 适合做问答 | 示例 | 注意 |
|---|---|---|
| 高频咨询 | 年假怎么休?报销多久到账? | 答案要短、准、可直接回复。 |
| 口语问法 | 打车票怎么报? | 对应正式制度条款,避免凭经验写。 |
| 风险口径 | 投诉赔付能不能承诺? | 明确不能承诺时的转人工或工单流程。 |
| 跨文档答案 | 请假审批要找谁? | 把分散规则整理成标准答案。 |
问答维护提醒
增补问答前,先检查是否已有相似问题,避免同一问题出现不同答案。通过文档生成问答后,需要人工校验;未采纳或未校验的问题不应直接作为正式答案使用。
(2)引用是可信度的一部分
知识问答不是只要“答得像”就可以。对企业制度、售后政策、合规说明等场景,用户需要知道答案来自哪里。引用缺失会降低可信度,引用错误则说明检索、重排、文档版本或生成约束可能存在问题。
| 引用问题 | 排查方向 |
|---|---|
| 没有引用 | 检查参考来源展示设置,以及 Prompt 是否要求基于引用回答。 |
| 引用旧文档 | 检查旧文档是否删除、到期或被正确打标签。 |
| 引用正确但答案扩展 | 优化 Prompt,要求仅依据引用内容回答,资料不足时说明无法确认。 |
(3)常见Badcase
调试和评测过程中出现的 Badcase 不要只记录“答错了”,而要记录“错在哪里、优先怀疑哪一环、改了什么、改完是否真的变好”。建议至少保留四类信息:**问题现象、优先归因、调整动作、调整后效果。**这样后续再次做评测时,才能判断问题是否被真正修复,而不是只在某一次测试中偶然答对。
| 问题现象 | 优先归因 | 调整动作 | 调整后效果 |
|---|---|---|---|
| 知识库有答案但没命中 | 可能是检索范围设置不正确、匹配度阈值过高、召回数量过少,也可能是用户问法和文档表达差异较大,或缺少对应问答。 | 先查看本轮调试的命中结果,确认是否检索到了正确知识库、分类、标签和文档; 如果知识存在但没有召回,可适当调整召回数量和匹配度;对于高频口语化问法,补充问答或同义问法。 | 同类问题能够稳定命中正确文档、Chunk 或问答; 用户换一种常见问法时,也能召回相同或相近的知识依据。 |
| 命中了正确文档但答不全 | 可能是 Chunk 不完整,关键条件、适用范围、例外说明或后续步骤被切到其他片段中,模型只拿到了一部分依据。 | 查看命中的 Chunk 内容,确认是否包含完整的“条件—结论—例外—下一步”; 如果片段过短,可调整切分最大长度、切分重叠长度,或使用父子级切分,让检索保持精准,同时给模型召回更完整的父级上下文。 | 答案能够覆盖关键条件、限制、例外和操作步骤; 同类问题不再只回答一半,引用内容也能支撑完整答案。 |
| 命中了错误文档 | 可能是知识库中存在旧版本、重复文档、相似标题文档,或文档标签、分类、检索范围设置不准确,导致系统召回了不该使用的知识。 | 检查被命中的文档是否为最新版本,清理或停用旧版资料;为不同版本、部门、地区、用户身份的文档设置分类、标签或到期时间; 必要时优化文档命名,让标题体现主题、版本和适用范围。 | 同一问题优先命中最新、正确、适用范围匹配的文档; 旧版内容不再参与回答,引用来源与当前业务口径一致。 |
| 表格类问题答不准 | 可能是表格结构不适合直接检索,例如存在合并单元格、空行空列、重复表头、字段含义不清;也可能是切分方式不适合,导致表头和数据分离。 | 先清理表格结构,确保表头明确、字段不重复、无无效空行空列;如果每行是独立知识,可按行切分并保留表头范围; 如果问题需要按字段查询、筛选或统计,可考虑使用数据库,并补充表描述、列描述和单位信息。 | 表格问题能够命中正确行、正确字段或正确数据表; 答案中的数值、字段含义和单位更稳定,减少因表头丢失导致的误答。 |
| 高频问题反复不稳定 | 可能是正式文档表达和用户真实问法差异较大,模型每次命中的片段不一致;也可能是该问题需要固定口径,不适合只依赖长文档检索。 | 将高频问题沉淀为问答,使用用户真实问法作为问题表达,答案与正式文档保持一致; 补充常见同义问法; 将该问题加入评测集,后续每次调整知识库、切分或检索配置后都做测试。 | 高频问题能够稳定命中问答或固定知识依据; 不同用户问法下回答口径一致,后续版本调整后也能通过评测集验证。 |
如果同一个 Badcase 多次复发,说明它不只是单条问题,而是某一类知识组织、切分或检索策略存在系统性问题,应把它升级为专项优化项。
4.3.6 ADP的知识库与RAG调优流程总结
在 ADP 中,建议按照“知识准备—导入配置—单次调试—批量评测—回归沉淀”的顺序推进知识库与RAG的调优。
| 步骤 | 在 ADP 中做什么 | 产出 |
|---|---|---|
| 1. 梳理知识 | 确定知识类型:文档、问答、数据库、网页;清理旧版本和重复内容。 | 知识目录、文档清单、FAQ 清单。 |
| 2. 设置知识处理模型 | 在知识库设置中确认向量模型、文档解析模型、问答对生成模型、Schema 生成模型等 | 稳定的知识处理配置。 |
| 3. 设置文档切分 | 上传文档时或解析切分干预中选择默认切分、自定义切分、父子级切分或按行切分。 | 可检索、语义完整的 Chunk。 |
| 4. 调整检索召回 | 在应用设置的知识库设置中调整检索策略、召回数量、匹配度、重排和检索范围。 | 更稳定的命中结果。 |
| 5. 配置引用与回复 | 设置参考来源展示方式,结合 Prompt 要求基于引用回答。 | 可信、可追溯的答案。 |
| 6. 建立评测集 | 收集真实问题和典型问题,覆盖高频、口语化、边界、表格和版本问题。 | 可回归的评测样本。 |
| 7. 沉淀 Badcase集 | 把线上问题归类为知识、切分、检索、生成或引用问题,并回写优化动作。 | 持续优化闭环。 |
4.3 练习:优化员工制度问答助手
某企业搭建员工制度问答助手,上传了考勤、报销、请假和福利制度。测试时出现以下问题,请判断优先优化方向。
| 测试问题 | 现象 | 优先优化方向 |
|---|---|---|
| 年假怎么休? | 回答很泛,没有说明适用条件。 | 检查 Chunk 是否包含条件;必要时补 问答。 |
| 打车票怎么报? | 没有命中交通费报销规则。 | 补充口语化 问答,检查报销文档标题和切分。 |
| 病假工资怎么算? | 命中了旧版制度。 | 清理旧文档,设置到期时间,修正版本标签。 |
| 请假要找谁审批? | 命中流程但缺少岗位差异。 | 调整切分,确保岗位条件和审批规则在同一上下文。 |
| 福利补贴有没有上限? | 回答正确但没有引用。 | 检查参考来源展示设置和回答 Prompt。 |
参考调优路径
这个练习的关键不是一次性把所有参数都改掉,而是先把问题归类,再按归因逐项优化。文档旧、切分断、问答缺失、引用缺失,分别对应不同的处理动作。
-
整理制度版本,删除或到期旧版文档,统一命名规则。
-
检查关键问题对应 Chunk,确认条件、结论、例外没有被拆断。
-
为高频口语问法补充问答,例如“打车票怎么报”。
-
检查应用中的知识库检索设置:召回数量、匹配度、重排和检索范围。
-
配置参考来源展示,并要求答案基于引用内容生成。
-
把修复后的问题加入评测集,每次调整后做回归。
提示
**运维 Tips|知识变更必须可审核、可回归:**新增制度文件前先核验版本、生效时间、重复内容和与旧资料的冲突;记录知识库版本及变更清单,完成审核后再发布。每次大批量新增、删除或调整切分/检索配置,都要用关键问题回归测试,确认旧问题没有反弹、部门权限没有串库,再逐步扩大使用范围。
4.3 小结
-
知识库质量与 RAG 调优的关键,是先定位问题发生在知识、切分、检索、引用还是生成。
-
文档调优重点是结构清晰、版本准确、表格规范、标签和范围可控。
-
Chunk 调优重点是让片段既容易命中,又包含足够上下文。
-
检索调优要结合召回数量、匹配度、重排和检索范围,不要只为单条问题调参。
-
问答 适合沉淀高频、口语化、风险口径和跨文档答案。
-
每个 Badcase 都应记录现象、归因、调整动作和复测结果,沉淀为后续回归样本。
提示
进 入 下 一 节 下一节 4.4「Workflow优化」会继续讲:当问题不是知识召回本身,而是工作流的配置问题导致效果不稳定时,应该如何优化执行链路。
随堂测
逐题作答,即时反馈
1. 当出现“知识库有答案但没命中”的现象时,本课提醒的正确做法是?
2. 本课建议的 RAG 问题快速判断顺序是?
3. 关于 ADP 文档切分的参数边界,下列说法与课文一致的是?