管理知识检索流
知识检索流是一种特殊的工作流,除工作流基础节点外,还具备检索规划、召回、重排序三个节点。
通常可以使用检索规划节点对原始查询内容进行意图识别、拆解或改写,提升查询的准确性,然后使用召回节点从知识库中检索并召回所有与查询相关的信息,最后通过重排序节点对召回结果进行重排序,确保最相关的信息能够排在前面,从而优化知识检索过程。
在Agent中添加知识检索流,可以提升用户体验和Agent响应质量。
前提条件
需要具备AI原生应用引擎管理员或开发者权限,权限申请操作请参考AppStage组织成员申请权限。
创建知识检索流
- 进入AI原生应用引擎。
- 在AI原生应用引擎的左侧导航栏选择“知识中心 > 知识检索流”,单击“创建知识检索流”。
- 在“基本信息”弹窗,设置检索流名称、描述,单击“确认”。
- 单击“起始节点”,配置表1所示参数。
当接收到匹配的请求时,起始节点会解析请求中的参数,并根据这些参数来初始化检索流实例。
起始节点是流的入口,可以接收和存储初始化参数,当Agent调用检索流时,会提取起始节点入参,并初始化检索流实例,随后按照检索流定义的逻辑顺序执行各个节点。表1 起始节点配置参数说明 参数
说明
API请求方式
仅支持post,用于向服务器提交数据,通常将数据放在请求体中。
API请求体架构
请求头
HTTP请求消息的组成部分之一,请求头负责通知服务器有关于客户端请求的信息。
单击“添加header参数”可添加多行请求头;单击
即可删除不需要的请求头。
请求参数
请求参数是API请求的一部分,如果被调用API没有请求参数则可以不填。如果请求为查询参数,则查询参数会追加到URL。例如,在 /items?id=#### 中,查询参数为ID。
单击“添加query参数”可添加多行请求参数;单击
即可删除不需要的请求参数。
请求体
HTTP请求消息的组成部分之一,请求体呈现发送给服务器的数据。
知识检索流默认在起始节点的请求体中引入了WISEAGENT_USER_INPUT参数,表示在Agent调用知识检索流时,以用户在问答对话中输入的内容作为知识检索流的请求参数。
您也可以单击请求体操作列的
,新增参数。支持数据类型为:string、number、boolean、integer、array、object。
节点备注
输入节点备注信息,方便后续查阅节点功能。
- 添加其他节点,设置执行动作。
在画布中单击“
> 添加执行动作”或“添加执行动作”,选择节点和执行动作,并参考知识检索流相关节点说明和工作流基础节点说明在参数配置面板中配置节点参数。
图1 添加执行动作 - (可选)单击起始节点,在参数配置面板中单击“设置参数”,输入起始节点的请求参数,用于调测知识检索流。
- (可选)单击其他后续节点,在参数配置面板中单击“调测节点”,对当前节点进行正确性测试。
调测成功后,会将测试的输出数据(即样本数据)及输入数据进行展示,并会在该条节点的左上角标记
图标。如果提示“调测失败,请检查接口参数配置是否准确”,请检查并重新配置参数后重试。
图2 调测节点 - 执行动作设置完成后,单击“保存”。
- 在“流保存成功”弹框中选择是否开启检索流。
- 单击“确定”,立即开启流,启用后的检索流才可在Agent中引用或通过API调用。
- 单击“取消”,暂不开启,如有需要可参考更多操作开启检索流。
知识检索流相关节点说明
本节仅介绍知识检索流特有的检索规划、召回及重排序三个节点,工作流其他基础节点说明请参见工作流基础节点说明。
- 检索规划
检索规划包含“Query拆解”、“Query改写”、“意图识别”三个执行动作,执行动作参数配置说明如表2所示。
- Query拆解:配置适当的模型将原始查询内容拆解为更简单、易理解的请求。
- Query改写:配置适当的模型对原始查询内容进行改写、优化,使得原始请求更准确。
- 意图识别:配置适当的模型对原始内容进行意图判断。
表2 检索规划执行动作参数说明 参数
说明
输入
模型服务调用ID
执行检索规划所调用的模型。
- 对于平台接入的第三方厂商模型服务或平台预置的模型服务,可在AI原生应用引擎的左侧导航栏选择“资产中心”,进入“大模型”页签后单击模型卡片进入模型详情页面,在“模型信息”区域查看模型服务调用ID。
- 对于用户自接入的模型和路由策略,请单击“获取模型服务调用ID”,进入模型服务页面,选择“我的模型服务”页签,在模型服务列表中复制模型服务调用ID。
原始查询内容
当执行动作为“拆解/改写”时,需要配置此参数。
表示待处理(拆解/改写)的原始内容。支持自定义文本或引入前置节点的输出,也支持两者组合使用。
原始文本内容
当执行动作为“意图识别”时,需要配置此参数。
表示待进行意图识别的原始内容。支持自定义文本或引入前置节点的输出,也支持两者组合使用。
意图类别
当执行动作为“意图识别”时,需要配置此参数。
定义意图类别,大模型会按照定义的意图类别对用户问题进行归类。支持自定义数组或选择数组类型的节点输出,例如,["儿科医疗问题","消化科医疗问题"]。
输出
无需配置,根据用户定义的内容输出指定参数。
节点实例
首次调用检索规划节点需要新增实例,实例是节点的鉴权方式,如果未配置实例,节点就无法调通。
- 实例名称:必填项,自定义实例名称。由1~64个字符组成,包含中文、大小写字母、数字、下划线、空格、中划线、英文小括号,不能以下划线、空格、中划线、英文小括号开头。
- 描述:选填项,输入实例相关描述信息。
- API Key:必填项,输入在AI原生应用引擎平台申请的API Key,获取方式请参见创建API Key。
节点备注
输入节点备注信息,方便后续查阅节点功能。
- 召回
召回节点包含“召回”一个执行动作,用于从知识库中检索并召回所有与查询相关的信息,参数配置说明如表3所示。
表3 召回执行动作参数说明 参数
说明
输入
知识库ID
指定检索目标知识库的唯一标识,通过此ID精准定位并召回对应信息。
单击“获取知识库ID”,在知识库列表中单击“知识库ID”列的
进行复制。
向量化检索内容
通过将数据转换为向量表示、建立高效的索引结构和使用相似度度量方法,向量化检索能够快速地找到与查询最相似的数据。
用于向量化检索的文本内容。支持自定义文本或引入前置节点的输出,也支持两者组合使用。
相似度阈值
检索的关键字和返回内容的相似度阈值,取值范围0~1,默认为0.5,表示返回相似度大于等于0.5的结果。
召回数量
从检索结果中返回的内容片段数量,取值范围:0~10,默认为10条。
文本过滤
配置文本过滤规则。依据知识库索引字段配置的文本过滤字段对检索结果进行筛选,以保障结果的精准性和相关性。默认为空,支持填入SearchSqlFilter类对象,SearchSqlFilter参数说明如表4所示。
如下示例表示:在知识库索引字段配置时选择了file_name和path字段作为文本过滤字段,此处对这两个字段配置过滤条件,筛选元数据中file_name字段等于 “四大名著介绍.txt”或元数据中path字段等于 “四大名著介绍.txt”的内容。
{ "group_type": "OR", "expressions": [ { "field": "metadata.file_name", "field_type": "STRING", "operator": "EQUAL", "values": [ "四大名著介绍.txt" ] }, { "field": "metadata.path", "field_type": "STRING", "operator": "EQUAL", "values": [ "四大名著介绍.txt" ] } ] }
召回排序
配置排序规则,依据元数据中的order字段进行排序,以保障结果的精准性和相关性。默认为空,支持填入SqlOrder类对象,SqlOrder参数说明如表6所示。
如下示例表示:按order字段的整数值降序排列,即order值最大的内容排在检索结果最前方。
{ "order_items": [ { "field": "metadata.order", "field_type": "INT", "order_type": "DESC" } ] }
输出
根据用户定义的内容输出指定参数。
节点实例
首次调用检索规划节点需要新增实例,实例是节点的鉴权方式,如果未配置实例,节点就无法调通。
- 实例名称:必填项,自定义实例名称。由1~64个字符组成,包含中文、大小写字母、数字、下划线、空格、中划线、英文小括号,不能以下划线、空格、中划线、英文小括号开头。
- 描述:选填项,输入实例相关描述信息。
- API Key:必填项,输入在AI原生应用引擎平台申请的API Key,获取方式请参见创建API Key。
节点备注
输入节点备注信息,方便后续查阅节点功能。
表4 SearchSqlFilter 参数
是否必选
参数类型
描述
group_type
否
String
参数解释:
过滤条件运算符。
约束限制:
只有一个expression时,不需要group_type,group_type可以为null。
取值范围:
可以为null,如果不为null,枚举值AND和OR。
默认取值:
不涉及。
expressions
否
Array of Expression objects
参数解释:
过滤条件。
约束限制:
不涉及。
取值范围:
非空,条件数量为1~10。
默认取值:
不涉及。
表5 Expression 参数
是否必选
参数类型
描述
field
否
String
参数解释:
过滤字段。
约束限制:
不涉及。
取值范围:
非空,字符串长度为1~100。
默认取值:
不涉及。
field_type
否
String
参数解释:
过滤字段类型。
约束限制:
不涉及。
取值范围:
可以为null,如果不为null,枚举值:INT、FLOAT、BOOLEAN和STRING。
默认取值:
不涉及。
operator
否
String
参数解释:
过滤操作符。
约束限制:
不涉及。
取值范围:
可以为null,如果不为null,枚举值:EQUAL、NOT_EQUAL、GREAT_THAN、GREAT_EQUAL、LESS_THAN、LESS_EQUAL、IN、NOTIN和STARTS_WITH。
默认取值:
不涉及。
values
否
Array of strings
参数解释:
过滤值。
约束限制:
当operator参数的值为EQUAL(等于)、NOT_EQUAL(不等于)、GREAT_THAN(大于)、GREAT_EQUAL(大于等于)、LESS_THAN(小于)、LESS_EQUAL(小于等于)和STARTS_WITH(以xxx开头)时,数量限制为1。
取值范围:
非空,数量为1~100,每个字符串长度最大不超过2000。
默认取值:
不涉及。
表6 SqlOrder 参数
是否必选
参数类型
描述
order_items
否
Array of OrderItem objects
参数解释:
排序规则。
约束限制:
不涉及。
取值范围:
非空,数量为1~10。
默认取值:
不涉及。
- 重排序
重排序节点包含“重排序”一个执行动作,用于对召回结果进行重排序,参数配置说明如表8所示。
表8 重排序执行动作参数说明 参数
说明
输入
模型服务调用ID
执行重排序所调用的模型,例如,平台预置的bge-reranker-large。
- 对于平台接入的第三方厂商模型服务或平台预置的模型服务,可在AI原生应用引擎的左侧导航栏选择“资产中心”,进入“大模型”页签后单击模型卡片进入模型详情页面,在“模型信息”区域查看模型服务调用ID。
- 对于用户自接入的模型和路由策略,请单击“获取模型服务调用ID”,进入模型服务页面,选择“我的模型服务”页签,在模型服务列表中复制模型服务调用ID。
原始查询内容
将原始查询内容传递给大模型作为重排序参考依据。支持自定义文本或引入前置节点的输出,也支持两者组合使用。
排序返回数量
重排序后返回的召回结果数量。
召回结果
召回的结果,提供给模型进行重排序。
输出
根据用户定义的内容输出指定参数。
节点实例
首次调用检索规划节点需要新增实例,实例是节点的鉴权方式,如果未配置实例,节点就无法调通。
- 实例名称:必填项,自定义实例名称。由1~64个字符组成,包含中文、大小写字母、数字、下划线、空格、中划线、英文小括号,不能以下划线、空格、中划线、英文小括号开头。
- 描述:选填项,输入实例相关描述信息。
- API Key:必填项,输入在AI原生应用引擎平台申请的API Key,获取方式请参见创建API Key。
节点备注
输入节点备注信息,方便后续查阅节点功能。
测试检索流
当前仅支持post请求调用测试,也可以使用其他调测工具进行调测。
- 在知识检索流列表中,单击检索流名称,进入检索流查看页面。
- 单击“测试”,在测试面板,输入参数,单击“提交测试”。
- 查看测试结果。
- 单击“查看运行历史详情”,在运行详情页面,查看本次测试过程中检索流的运行总次数、成功次数、失败次数,以及各节点的执行时长、状态、参数信息等,方便定位问题。
更多操作
检索流创建完成后,可执行如下表9所示的相关操作。
操作 |
说明 |
---|---|
启用检索流 |
在知识检索流列表中,在操作列单击“启用”,启用后的检索流才可在Agent中引用或通过API调用。 |
停用检索流 |
在知识检索流列表中,单击操作列的“停用”停用检索流。 |
查看检索流详情 |
在知识检索流列表中单击检索流名称,查看检索流最近一次运行预览图、基本信息、运行历史及历史版本。
|
修改检索流 |
在知识检索流列表中,单击操作列的“修改”,单击检索流名称后的 |
删除检索流 |
已启用的检索流需要先停用,才可删除。 在知识检索流列表中,选择操作列的“更多 > 删除”,在弹出的确认框中单击“确认”。 |
复制检索流 |
在知识检索流列表中,单击操作列的“复制”,在弹出的复制流提示框中单击“确认”。 |
相关文档
- 知识检索流启用后,可在Agent中引用或通过API调用,请参考在AI原生应用引擎中创建单Agent(自主规划模式)、调用知识检索流。
- 知识检索流实践案例请参考使用知识检索流增强知识库检索能力。