如果您在使用阿里云百炼应用的 RAG 功能时遇到知识召回不完整或内容不准确的问题,可以参考本文的建议和示例以提升 RAG 效果。
1. RAG 工作流程简介
RAG(Retrieval Augmented Generation,检索增强生成)是一种结合了信息检索和文本生成的技术,能够在大模型生成答案时利用外部知识库中的相关信息。
其工作流程包含解析与切片、向量存储、检索召回、生成答案等几个关键阶段。

2. RAG 效果优化
2.1 准备工作
首先,请确保导入阿里云百炼知识库的文档符合以下要求:
- 包含相关知识:如果知识库中没有相关知识,那么大模型大概率无法回答相关问题。解决方案就是更新知识库,补充相关知识。
-
使用Markdown格式(推荐):PDF内容格式复杂,解析效果可能不佳,建议先转成文本文档(Markdown/DOC/DOCX等)。例如,您可以使用阿里云百炼的DashScopeParse先将PDF转成Markdown格式,然后再使用大模型整理格式,同样可以取得不错的效果。更多说明请参见阿里云大模型ACP课程的 RAG 章节。
若文档含插图,应如何处理
知识库当前不支持文档中视频和音频内容的解析。
- 内容表达清晰、结构合理、无特殊样式:文档的内容排版也会显著影响 RAG 的效果,具体请参见文档应如何格式化排版有利于RAG。
- 与提示词语言一致:如果用户的提示词更多使用外语(例如英语),建议您的文档内容也使用相应语言。如有必要(例如文档中的专业术语),可进行双语言或多语言处理。
-
消除实体歧义:对文档中相同实体的表述进行统一。例如,“ML”、“Machine Learning”和“机器学习”可以统一规范为“机器学习”。
您可以尝试将文档输入到大模型中,让大模型来帮助您统一规范(如果文档较长,可先将其拆为多个部分,再逐一输入)。
2.2 解析与切片阶段
本段落仅介绍在 RAG 的切片阶段,阿里云百炼支持优化的配置项。首先,您导入知识库的文档会被解析和切片。切片的主要目的是在后续向量化过程中尽量减少干扰信息影响,同时保持语义的完整性。因此,您在创建知识库时所选择的文档切分chunk策略会对 RAG 的效果产生很大影响。如果切片方式不当,可能会导致下述问题:
文本切片过短 | 文本切片过长 | 明显的语义截断 |
|---|---|---|
切片样例:单个切片仅包含『参考售价:5999』一句,缺失产品名称等关键上下文信息。 | 切片样例:单个切片同时混合了百炼 Ace Ultra、百炼 Zephyr Z9、百炼 Flex Fold+ 等多款手机的完整介绍,主题相互干扰。 | 切片样例:切片01 末尾停在『内置10GB RAM 与』,后续配置信息被强制截断,导致语义不完整。 |
文本切片过短会出现语义缺失,导致检索时无法匹配。 | 文本切片过长会包含不相关主题,导致召回时返回无关信息。 | 文本切片出现了强制性的语义截断,导致召回时缺失内容。 |
- 在创建知识库时,文档切分chunk选择智能切分。
- 将文档成功导入知识库后,对文本切片的内容进行人工检查和修正。
2.2.1 智能切分
选择适合您知识库的文本切片长度并非易事,因为这必须考虑多种因素,例如:
- 文档的类型:例如,对于专业类文献,增加长度通常有助于保留更多上下文信息;而对于社交类帖子,缩短长度则能更准确地捕捉语义。
- 提示词的复杂度:一般来说,如果用户的提示词较复杂且具体,则可能需要增加长度;反之,缩短长度会更为合适。
- 首先利用系统内置的分句标识符将文档划分为若干段落。
- 基于划分的段落,根据语义相关性自适应地选择切片点进行切分(语义切分),而非根据固定长度进行切分。
2.2.2 修正文本切片内容
当然,在实际切片的过程中,仍然存在一定几率会出现意外的切分,或者出现其它问题(例如文本中的空格有时切片后会被解析为%20)。
在切片详情弹窗右上角单击编辑按钮,即可对解析异常或截断的文本切片内容进行修正。
因此,阿里云百炼建议您在成功将文档导入知识库后,进行一次人工检查,以确认文本切片内容的语义完整性和正确性。如果发现意外的切分或其他解析错误,您可以直接编辑文本切片进行修正(保存后,文本切片原有的内容将失效,新的内容将用于知识库检索)。
请注意,此处您只是修改了知识库中的文本切片,并未修改您在数据管理(临时存储)中的原文档或数据表。因此,后续再次导入知识库时,仍需您进行人工检查和修正。
2.3 检索召回阶段
本段落仅介绍在检索召回阶段,阿里云百炼支持优化的配置项。检索召回阶段面临主要问题是:难以从知识库众多的文本切片中,找出与提示词最相关且包含正确答案相关信息的文本切片。在此基础上进一步细化:
| 问题类型 | 改进策略 |
|---|---|
| 在多轮会话场景中,用户输入的提示词有时可能不够完整,或者存在歧义。 | 开启多轮会话改写,知识库会自动将用户的提示词改写为更完整的形式,从而更好地匹配知识。 |
| 知识库中包含多个类别的文档。希望在A类文档中检索时,召回结果中却包含其他类别(比如B类)的文本切片。 | 建议为文档添加标签。知识库检索时,会先根据标签筛选相关文档。仅文档搜索类知识库支持为文档添加标签。 |
| 知识库中有多篇结构内容相似的文档,例如都包含“功能概述”。希望在A文档的“功能概述”中检索,召回结果中却包含其他相似文档中的信息。 | 提取元数据。知识库会在向量检索前使用元数据进行结构化搜索,从而精准找到目标文档并提取相关信息。仅文档搜索类知识库支持建立文档元数据。 |
| 知识库的召回结果不完整,没有包含全部相关的文本切片。 | 建议降低相似度阈值,提高召回片段数,以召回一些原本应被检索到的信息。 |
| 知识库的召回结果中包含大量无关的文本切片。 | 建议提高相似度阈值,以排除与用户提示词相似度低的信息。 |
2.3.1 多轮对话改写
在多轮会话中,假设用户某次使用了类似“阿里云百炼手机X1”这样提示词进行提问。看似简短,却可能导致 RAG 系统在检索时缺乏必要的上下文信息,原因是:
- 一款手机产品通常会有多个代际版本同时在售。
- 对于同一代产品,厂家通常会提供多种存储容量选项,比如128GB、256GB等。 ...
2.3.2 标签过滤
本段落内容仅适用于文档搜索类知识库。想象一下,您在使用一些音乐APP时,可能有时会通过歌手名称来筛选歌曲,从而快速找到同一类(该歌手唱的)歌曲。 类似地,为您的非结构化文档添加标签可以引入额外的结构化信息。这样应用在检索知识库时,会先根据标签筛选文档,从而提升检索的准确性和效率。 目前阿里云百炼支持以下两种方式设置标签:
- 在上传文档时设置标签:控制台操作步骤请参见导入数据。
- 在数据管理页面编辑标签:对于已上传的文档,可单击文档右侧的标签进行编辑。
-
通过API调用阿里云百炼应用时,可以在请求参数
tags中指定标签。 -
在控制台编辑应用时设置标签(但本方式仅适用于智能体应用(Agent 1.0))。
请注意,此处的设置将应用于该智能体应用后续的所有用户问答。
在配置知识库对话框中,选择知识库高级配置Tab,在标签过滤字段的下拉列表中勾选需要的标签(如智能手机、硬件),已选标签将显示在输入框中。
2.3.3 提取元数据
本段落内容仅适用于文档搜索类知识库。将元数据嵌入文本切片,可以有效增强每个切片的上下文信息。在特定场景下,这种方法能够显著提升文档搜索类知识库的 RAG 效果。 假设以下场景: 某知识库中有大量手机产品说明文档,文档名称为手机的型号(比如阿里云百炼X1、阿里云百炼Zephyr Z9等),且所有文档都包含「功能概述」章节。 当该知识库未启用元数据时,用户输入以下提示词进行检索:
命中测试的召回结果只保证排名,相似值的绝对值大小仅供参考。当绝对值的差别不大时(5%以内),可基本认为召回概率一样。在未启用元数据时,命中测试结果显示:与查询实体无关的切片1(相似度41%,来自百炼手机Zephyr29)和切片2(相似度40%,来自百炼手机Flex Fold+)排名靠前,而目标切片(相似度仅37%,来自百炼手机X1)排名垫底。 接下来,我们将手机名称,按照metadata抽取中提到的步骤,设置为元数据(相当于让每篇文档相关的文本切片带上各自对应的手机名称信息),然后再进行一次相同的测试作为对比。 完成元数据配置后,在数据管理列表的操作列单击Meta信息按钮,可查看每个文件的元数据键值对(例如 name=百炼手机X1)。 此时,知识库会在向量检索前增加一层结构化搜索,完整过程如下:
- 从提示词中提取元数据 {"key": "name", "value": "阿里云百炼手机X1"}。
- 根据提取的元数据,找到所有包含“阿里云百炼手机X1”元数据的文本切片。
- 再进行向量(语义)检索,找到最相关的文本切片。
2.3.4 调整相似度阈值
当知识库找到和用户提示词相关的文本切片后,会先将它们发送给Rank模型(在创建知识库的自定义参数设置中)进行重排序,而相似度阈值则用于筛选经过Rank模型重排序后返回的文本切片,只有相似度分数超过此阈值的文本切片才有可能被提供给大模型。

命中测试建议步骤 | |
| ![]() |
2.3.5 提高召回片段数
召回片段数即多路召回策略中的K值。经过前面的相似度阈值筛选后,如果文本切片数量超过K,系统最终会选取相似度分数最高的 K 个文本切片提供给大模型。也正因为此,不合适的K值也可能会导致 RAG 漏掉正确的文本切片,从而影响大模型生成完整的回答。
比如下面的这个例子,用户通过以下提示词进行检索:
大量实验结果表明:在诸如“列举...”、“总结...”,“比较一下X、Y...”等场景中,提供更多高质量的文本切片(例如K=20)给大模型,比仅提供前10个或前5个文本切片效果更好。虽然这样做可能会引入噪声信息,但如果文本切片质量较高的话,大模型通常能够有效抵消噪声信息的影响。您可以在编辑阿里云百炼应用时调整召回片段数。 请注意,召回片段数也并非越大越好。因为有时召回的文本切片在拼装后,其总长度会超出大模型的输入长度限制,导致部分文本切片被截断,反而影响了 RAG 的效果。 因此,推荐您选择智能拼装。这一策略会在不超过大模型最大输入长度的前提下,尽可能多地为您召回相关的文本切片。
2.4 生成答案阶段
本段落仅介绍在生成答案阶段,阿里云百炼支持优化的配置项。至此,大模型已经可以根据用户的提示词以及从知识库检索召回的内容,生成最终的回答。然而,返回结果有可能还是不及您的预期。
问题类型 | 改进策略 |
|---|---|
大模型并未理解知识和用户提示词之间的关系,感觉答案是生硬拼凑的。 | 建议选择合适的大模型,从而有效地理解知识和用户的提示词之间的关系。 |
返回的结果没有按照要求,或者不够全面。 | 建议优化提示词模板。 |
返回的结果不够准确,其中包含了大模型自身的通用知识,并未完全基于知识库。 | 建议开启拒识,仅限于根据知识库检索到的知识回答。 |
相似的提示词,希望每次返回的结果相同或不同。 | 建议调整大模型参数。 |
2.4.1 选择合适的大模型
由于不同大模型在指令遵循、语言支持、长文本、知识理解等方面存在能力差异,可能导致:
模型A未能有效理解检索到的知识与提示词之间的关系,从而生成的答案无法准确回应用户的提示词。在更换为参数更多或者专业能力更强的模型B后,该问题可能就能得到解决。
您可以在编辑阿里云百炼应用时,根据实际需求选择模型。
您可以在编辑阿里云百炼应用时,根据实际需求选择模型。建议选择通义千问的商业模型,例如通义千问Max、通义千问Plus等大模型。这些商业大模型相比开源版本,具备最新的能力和改进。
- 如果只是简单的信息查询总结,小参数量的大模型足以满足需求,例如
通义千问Turbo。 - 如果您希望RAG能完成较为复杂的逻辑推理,建议选择参数量更大、推理能力更强的大模型,例如
通义千问Max。 - 如果您的问题需要查阅大量的文档片段,建议选择上下文长度更大的大模型,例如
通义千问Plus。 - 如果您构建的 RAG 应用面向一些非通用领域,例如法律领域,建议使用面向特定领域训练的大模型,例如
通义法睿。
2.4.2 优化提示词模板
我们知道,大模型本身是基于给定的文本来预测下一个Token的。这意味着您可以通过调整提示词来影响大模型的行为(例如怎样利用检索到的知识等),间接提升 RAG 的效果。
以下为您介绍三种比较常见的优化方法:
方法一:对输出的内容进行限定
您可以在提示词模板中提供上下文信息、指令以及预期的输出形式,用于指示大模型完成任务。例如,您可以加入以下输出指示要求大模型:
| 提示词模板 | 用户提示词和阿里云百炼应用返回的结果 |
|---|---|
| 回答以 JSON 形式输出 9 个字段(型号、屏幕尺寸、分辨率、刷新率、RAM、存储、电池容量、摄像头光圈值、参考售价范围),字段名由模型自行决定,未遵循统一命名规范。 | |
| 回答严格按照示例约定的 4 个英文字段(product、screen_size、ram_size、battery)输出 JSON,输出 token 数显著降低。 |
${documents}明确分开。
此外,为了保证效果,请确保您的提示词模板中变量${documents}只出现一次(请参考下方左边的正确示例)。
2.4.3 开启拒识
如果您希望阿里云百炼应用返回的结果严格基于从知识库中检索到的知识,排除大模型自身通用知识的影响,您可以在编辑阿里云百炼应用时设置回答范围为仅知识库范围。
对于在知识库中找不到相关知识的情况,您还可以设置固定回复(自动)。
回答范围:知识库 + 大模型知识 | 回答范围:仅知识库范围 |
回答列出营养早餐、定期团建活动、员工培训和发展、健康保险和福利、其他福利等 5 类内容,融合了知识库未必明确记录的通用福利知识(如医疗保险、HSA 健康储蓄账户等)。 | 回答严格限定在知识库已记录的范围内:营养早餐、丰盛午餐、健康晚餐及定期团建活动,不再补充模型通用知识。 |
阿里云百炼应用返回的结果将综合从知识库中检索到的知识和大模型自身的通用知识。 | 阿里云百炼应用返回的结果将严格基于从知识库中检索到的知识。 |

抱歉,未找到相关的手机型号。
用户提示词和阿里云百炼应用返回的结果(命中知识时) | 用户提示词和阿里云百炼应用返回的结果(未命中知识时) |
|---|---|
命中知识时,应用按知识库内容详细列出营养早餐、定期健康检查、员工培训和发展、健康保险和福利 4 项福利及其说明。 | 未命中知识时,应用仅返回简短的基础福利列表:营养早餐、丰盛午餐、健康晚餐及定期团建活动。 |
2.4.4 调整大模型参数
相似的提示词,如果您希望每次返回的结果相同或不同,您可以在编辑阿里云百炼应用时,修改参数配置来调整大模型参数。
温度系数可以控制大模型生成内容的随机性:温度越高,生成的文本越多样,反之,生成的文本越确定。
- 具有多样性的文本,适用于创意写作(如小说、广告文案)、头脑风暴、聊天应用等场景。
- 具有确定性的文本,适用于有明确答案(如问题分析、选择题、事实查询)或要求用词准确(如技术文档、法律文本、新闻报道、学术论文)的场景。
3. 常见问题
文档应如何格式化排版有利于RAG?
文档应如何格式化排版有利于RAG?
文档内容排版建议
- 文档的各级标题层次分明,各标题下的内容表达清晰。
- 文档中尽量不要有水印。
- 列表中间的某一条之下尽量不要再分级。
- 文档中尽量不要有表格和图片(复杂表格会影响整体文档解析结果)。



- 各标题下内容相对独立且清晰。
- 无水印。
- 标题之下是列表,但列表之下不再分级。
- 无表格、无图片。

