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