知识检索-j9九游会登录
知识检索节点是工作流的“外部知识存储器”。它通过rag(检索增强生成)技术,从预先上传的知识库中根据用户意图匹配相关片段。
核心作用:解决大模型无法掌握的私有领域数据,实时信息以及易产生幻觉的问题。
rag工作流数据运行机制如下:
用户原始问题 → 知识检索节点 → 进行知识检索 → 匹配到的切片 → 大模型总结 → 生成回答
添加节点
在工作流编辑页面,单击下方“添加节点”,选择“知识检索”节点。
配置知识检索节点
配置知识检索节点的详细参数说明如下:
| 配置参数 | 说明 |
|---|---|
| 输入参数 | 固定只有1个且名称为query(不可修改),类型为string,表示待检索的问题。通常引用开始节点作为搜索词。 |
| 知识库 | 选择关联的知识库(支持关联多个)。可通过“仅查询指定标签的文档”功能结合标签过滤,缩小查询范围。 |
| 指定标签检索 | 支持通过文档标签限制检索范围。提供“基础检索”(多标签取并集)与“高级检索”(支持布尔逻辑“与、或、非”,最多三级嵌套)。 |
| 检索策略 | 选择检索方式:语义检索(理解意图,向量)、关键词检索(精准倒排匹配)、混合检索(兼顾两者,推荐)、faq检索(匹配问答对)。 |
| faq直出阈值 | 开启后优先检索faq。若得分超过预设阈值(0~1之间),将跳过常规文档检索并直接返回给大模型总结,以提升检索效率。 |
| 相关度阈值 | 设置0~1之间的阈值,得分低于此阈值的切片将被舍弃,防止噪音干扰。建议参考命中测试进行微调。 |
| topk召回数量 | 单次检索最大返回切片数(取值范围1~50之间)。 |
| 查看图片 | 开启后,当知识库配置了“图片解析 > 仅保留原图”时,支持查看并提取检索结果中的图片切片。 |
| 输出参数 | 固定变量为output_list(对象数组)。包含文件名、子标题、分片内容和匹配分数等属性。 |
成本与计费说明:
- 知识检索节点召回的所有分片,会作为参考知识拼接输入下游大模型节点中。
- 如果您的“topk召回数量”设置过大(例如 20~50),或者单分片长度过长,将会导致下游大模型节点在处理提示词时的输入token消耗量增加,从而带来token账单增加。
- 建议根据知识库的分片切片长度,将top-k 召回数量合理限制在 3~5 个,以保证大模型运行在最佳的成本区间内。
输入参数
输入参数固定只有1个,参数名称为query且不可修改,类型是字符串,表示待知识检索的问题。通常引用开始节点的值,该变量决定了检索的搜索词。
设置参数值时,支持“引用”和“输入”两种方式。
- 引用:支持用户选择工作流中已包含的前置节点的输出变量值以及全局配置中的记忆变量,限制string类型,适用于需要从前置节点输出中获取知识检索问题的场景。 系统参数列举如下:
- “conversation_history”:存储当前对话的历史消息记录。
- “current_time”:获取当前的系统时间戳或时间字符串。
- “user_id”:识别当前用户的唯一标识符。
- “conversation_id”:当前工作流的唯一对话标识。
- “dialogue_count”:当前对话的轮次数计数。
- 输入:支持用户输入固定值,适用于知识检索问题固定的场景。
知识库
您可以选择一个或者多个知识库,知识库支持设置按标签检索、检索策略、相关度阈值、topk召回数量等信息。
- agentarts基础版:最多支持关联1个知识库。
指定标签检索
- 指定标签检索功能目前不支持第三方接入的知识库。
- 布尔条件配置中添加条件组最多支持三级嵌套。
创建知识库过程中,对于“知识文档”类型的文件,可以配置文档标签。工作流中的“知识检索”节点,通过标签控制检索范围,用来提高检索的准度,避免不相关文档的干扰。
配置检索标签时,可以指定只检索某类标签的文档,支持“基础检索”、“高级检索”两种标签设置模式。
- 基础检索:基于并集逻辑的快速检索方式,可以选择一个或者多个标签的文档进行检索。
- 高级检索:可以使用布尔逻辑(如“或”、“且”、“not(≠)”)来更精细地配置检索条件。例如检索“教育”或“科普”标签的文档。
检索策略
- 语义检索:使用向量检索技术检索,对文档及结构化数据中知识进行检索,召回与用户意图相关性高的切片内容,推荐在需要结合上下文相关性、并对用户意图进行理解场景中使用。
- 关键词检索:使用倒排检索技术,对文档及结构化数据中知识进行检索,召回与query关键词匹配度高的切片内容,推荐在需要用户提问关键词匹配度高的场景中使用。
- 混合检索:使用向量检索和关键词检索两种策略混合检索知识库,推荐在需要兼顾用户意图理解及关键词匹配度场景中使用。
faq直出阈值
启用faq功能后,系统将优先检索faq数据。当faq检索结果超过预设阈值时,将直接提交给大模型进行总结,不再进行文档检索;如果未超过阈值或未命中结果,则将继续进行文档检索(可能会带来一定的性能开销)。
相关度阈值
得分低于相关度阈值的搜索结果会被过滤,可以参考知识库命中测试的相关度分值调整该阈值。
取值范围为0~1。
topk召回数量
从知识库中召回的最大切片数量,如topk召回数量为5,则得分不在前5的切片将被过滤。
取值范围为1~50。
查看图片
开启此功能后,当知识库配置了“图片解析 > 仅保留原图”功能时,可查看检索结果中的图片信息(新建知识库时、停用知识库后可以修改图片解析配置)。
输出参数
知识检索节点的输出是一个名为output_list的对象数组,表示所有满足检索要求的知识切片。数组中对象有七个属性:
- document_name,知识切片所在的知识文档名称。
- subtitle,知识切片子标题。
- content,知识切片的内容。
- score,知识切片的匹配度得分,output_list中的元素按照得分由高到低排序。
- knowledge_base_id,文件所属知识库id。
- knowledge_base_type,文件所属知识库类型。
- file_id,文件id。
后续节点引用该输出参数,可以引用output_list,此时将获取全量的检索结果,包括文档名、切片子标题、切片内容和分数。也可以直接引用切片的属性,比如content,此时将获取output_list中第一条记录的切片内容。
配置示例
本示例建立一个带有知识检索功能的工作流,详细配置介绍请参考搭建知识库问答工作流。
- 节点连接:将“开始节点”连接至“知识检索节点”,再连接“大模型节点”和“结束节点”。 图9 知识库问答工作流
- 变量引用:
- 所有节点的输入参数均使用“引用”关系,引用前置节点的内容作为本节点的输入。
- 知识检索节点引用输入节点的query参数,将用户输入的原始问题作为搜索词。
- 大模型节点的query参数引用开始节点,用于将用户原始问题传递给模型;新增output_list参数,引用知识检索节点的输出;“用户提示词”设置为:请根据检索到的知识:{{output_list}},回答用户问题:{{query}}。如果没有检索到,回答不知道。
- 结束节点引用大模型节点的输出。
- 调试与结果验证
- 在工作流编辑页面右上角,单击“试运行”。
- 在输入参数中,输入已上传至知识库中的相关业务问题。
- 预期验证标准:在右侧测试面板的“调试”中,展开知识检索节点的“输出”,检查output_list数组中是否已精准召回对应分片内容;同时验证大模型节点是否将召回的切片内容顺利整合成为了最终回答。
相关操作
- 单击节点名称,可修改节点名称。
- 单击
图标,可对节点进行重命名、复制、删除或更换节点;也可以将节点连接到结束节点。 - 单击
图标,可对节点进行测试。 - 单击名称下面的节点说明,可修改节点的描述信息。
- 单击
图标,可查看文档信息。
常见问题
- 为什么知识库中明明有文件,但是检索不到结果。
检查知识检索节点的“相关度阈值”参数是否设置过高(如0.9)。尝试在“知识库”中进行“命中测试”,观察真实阈值得分。
图10 知识库命中测试
- 检索到的内容与用户问题无关。
知识检索节点建议开启“混合检索”,或检查知识库切片长度,过短的切片可能丢失上下文背景信息。
- 如何查看检索到的图片。
知识检索节点需要开启“查看图片”功能,并且知识库本身需要启用“仅保留原图”功能(新建知识库、停用知识库后可以修改图片解析配置,配置完成后需重新启用知识库)。
图11 修改知识库配置
图12 设置知识库仅保留原图
相关文档
意见反馈
文档内容是否对您有帮助?
如您有其它疑问,您也可以通过华为云社区问答频道来与我们联系探讨