知识检索
知识检索节点是工作流的“外部知识存储器”。它通过RAG(检索增强生成)技术,从预先上传的知识库中根据用户意图匹配相关片段。
核心作用:解决大模型无法掌握的私有领域数据,实时信息以及易产生幻觉的问题。
数据流转:输入用户问题>检索匹配文档>输出检索信息。
添加节点
在工作流编辑页面,单击下方“添加节点”,选择“知识检索”节点。
配置知识检索节点
输入参数:
输入参数固定只有1个,参数名称为query且不可修改,类型是字符串,表示待知识检索的问题。通常引用开始节点的值,该变量决定了检索的搜索词。
设置参数值时,支持“引用”和“输入”两种方式。
- 引用:支持用户选择工作流中已包含的前置节点的输出变量值以及全局配置中的记忆变量,限制String类型,适用于需要从前置节点输出中获取知识检索问题的场景。
- 输入:支持用户输入固定值,适用于知识检索问题固定的场景。
知识库:
您可以选择一个或者多个知识库,知识库支持设置按标签检索、检索策略、相关度阈值、topk召回数量等信息。
- AgentArts基础版:最多支持关联1个知识库。
- AgentArts企业版:最多支持关联10个知识库。
指定标签检索:
- 指定标签检索功能目前不支持第三方接入的知识库。
- 布尔条件配置中添加条件组最多支持三级嵌套。
创建知识库过程中,对于“知识文档”类型的文件,可以配置文档标签。工作流中的“知识检索”节点,通过标签控制检索范围,用来提高检索的准度,避免不相关文档的干扰。
配置检索标签时,可以指定只检索某类标签的文档,支持“基础检索”、“高级检索”两种标签设置模式。
- 基础检索:基于并集逻辑的快速检索方式,可以选择一个或者多个标签的文档进行检索。
- 高级检索:可以使用布尔逻辑(如“或”、“且”、“NOT(≠)”)来更精细地配置检索条件。例如检索“教育”或“科普”标签的文档。
检索策略:
- 语义检索:使用向量检索技术检索,对文档及结构化数据中知识进行检索,召回与用户意图相关性高的切片内容,推荐在需要结合上下文相关性、并对用户意图理解场景中使用。
- 关键词检索:使用倒排检索技术,对文档及结构化数据中知识进行检索,召回与Query关键词匹配度高的切片内容,推荐在需要用户提问关键词匹配度高的场景中使用。
- 混合检索:使用向量检索和关键词检索两种策略混合检索知识库,推荐在需要兼顾用户意图理解及关键词匹配度场景中使用。
FAQ直出阈值:
当创建知识库时上传了“FAQ问答对”、“FAQ文档”类型的文档,可以开启FAQ直出阈值。FAQ检索超过阈值的结果将直接返回,不再进行文档检索。如果没有超过阈值的结果,将进行文档检索。
取值范围为0~1。
启用FAQ功能后,系统将优先检索FAQ数据。如果未命中结果,则会继续查询切片内容,可能会带来一定的性能开销。当FAQ检索结果超过预设阈值时,将直接提交给大模型进行总结,不再进行文档检索。如果未超过阈值,则将继续进行文档检索。
相关度阈值:
得分低于相关度阈值的搜索结果会被过滤,可以参考知识库命中测试的相关度分值调整该阈值。
取值范围为0~1。
topk召回数量:
从知识库中召回的最大切片数量,如topk召回数量为5,则得分不在前5的切片将被过滤。
取值范围为1~50。
查看图片:
开启后此功能后,当知识库配置了“图片解析 > 仅保留原图”功能时,可查看检索结果中的图片信息(新建知识库时、停用知识库后可以修改图片解析配置)。
输出参数:
知识检索节点的输出是一个名为output_list的对象数组,表示所有满足检索要求的知识切片。数组中对象有四个属性:
- document_name,知识切片所在的知识文档名称。
- subtitle,知识切片子标题。
- content,知识切片的内容。
- score,知识切片的匹配度得分,output_list中的元素按照得分由高到低排序。
后续节点引用该输出参数,可以引用output_list,此时将获取全量的检索结果,包括文档名、切片子标题、切片内容和分数。也可以直接引用切片的属性,比如content,此时将获取output_list中第一条记录的切片内容。
配置示例
本示例建立一个带有知识检索功能的工作流,详细配置介绍请参考搭建知识库问答工作流。
- 节点连接:将“开始节点”连接至“知识检索节点”,再连接“大模型节点”和“结束节点”。
图9 知识库问答工作流
- 变量引用:
- 所有节点的输入参数均使用“引用”关系,引用前置节点的内容作为本节点的输入。
- 知识检索节点引用输入节点的query参数,将用户输入的原始问题作为搜索词。
- 大模型节点的query参数引用开始节点,用于将用户原始问题传递给模型;新增output_list参数,引用知识检索节点的输出;“用户提示词”设置为:请根据检索到的知识:{{output_list}},回答用户问题:{{query}}。如果没有检索到,回答不知道。
- 结束节点引用大模型节点的输出。
相关操作
- 单击
图标,可修改知识检索节点名称,修改完成后单击空白区域进行保存。 - 单击
图标,可重命名知识检索节点名称,复制一个知识检索节点或删除知识检索节点;可以将知识检索节点连接到结束节点。 - 单击
图标,可以运行知识检索节点,进行测试。 - 双击名称下面的节点说明,可修改节点的描述信息。
- 单击
图标,可查看文档信息。
常见问题
- 为什么知识库中明明有文件,但是检索不到结果。
检查知识检索节点的“相关度阈值”参数是否设置过高(如0.9)。尝试在“知识库”中进行“命中测试”,观察真实阈值得分。
图11 知识库命中测试
- 检索到的内容与用户问题无关。
知识检索节点建议开启“混合检索”,或检查知识库切片长度,过短的切片可能丢失上下文背景信息。
- 如何查看检索到的图片。
知识检索节点需要开启“查看图片”功能,并且知识库本身需要启用“仅保留原图”功能(新建知识库、停用知识库后可以修改图片解析配置,配置完成后需重新启用知识库)。
图12 修改知识库配置
图13 设置知识库仅保留原图