更新时间:2025-02-14 GMT+08:00
分享

创建知识检索流

知识检索流是一种特殊的工作流,除工作流基础节点外,还具备检索规划、召回、重排序三个节点。

通常可以使用检索规划节点对原始查询内容进行意图识别、拆解或改写,提升查询的准确性,然后使用召回节点从知识库中检索并召回所有与查询相关的信息,最后通过重排序节点对召回结果进行重排序,确保最相关的信息能够排在前面,从而优化知识检索过程。

在Agent中调用知识检索流,可以提升用户体验和Agent响应质量。

前提条件

需要具备AI原生应用引擎管理员或开发者权限,权限申请操作请参见AppStage组织成员申请权限

创建知识检索流

  1. 在AI原生应用引擎的左侧导航栏选择“知识中心 > 知识检索流”,单击“创建知识检索流”。
  2. 在“基本信息”弹窗,设置检索流名称、描述,单击“确认”。
  3. 单击“起始节点”,配置表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。

    节点备注

    输入节点备注信息,方便后续查阅节点功能。

  4. 添加其他节点,设置执行动作。

    单击“添加执行动作”,选择节点和执行动作,根据知识检索流相关节点说明工作流基础节点说明配置节点参数。

  5. (可选)单击起始节点,在界面参数配置面板中单击“设置参数”,输入参数,用于调测知识检索流。
  6. (可选)单击其他后续节点,在界面参数配置面板中单击“调测节点”,对当前节点进行正确性测试。调测成功后,会将测试的输出数据(即样本数据)及输入数据进行展示,并会在该条节点的左上角标记图标。如果提示“调测失败,请检查接口参数配置是否准确”,请检查并重新配置参数后重试。
  7. 执行动作设置完成后,单击“保存”。
  8. 在“流保存成功”弹框中选择是否开启检索流。

    • 单击“确定”,立即开启流,启用后的检索流才可在创建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请求调用测试,也可以使用其他调测工具进行调测。

  1. 在检索流列表中,单击检索流名称,进入检索流查看页面。
  2. 单击“测试”,在测试面板,输入参数,单击“提交测试”。
  3. 查看测试结果。
  4. 单击“查看运行历史详情”,在运行详情页面,查看本次测试过程中检索流的运行总次数、成功次数、失败次数,以及各节点的执行时长、状态、参数信息等,方便定位问题。

更多操作

检索流创建完成后,可执行如下表9所示的相关操作。

表9 管理检索流

操作

说明

启用检索流

在检索流列表中,对于“已停用”状态的检索流,在操作列单击“启用”,启用后的检索流才可在创建Agent时引用。

停用检索流

在检索流列表中,对于“已启用”状态的检索流,可在操作列单击“停用”。

查看检索流详情

在检索流列表中单击检索流名称,查看检索流最近一次运行预览图、基本信息、运行历史及历史版本。

  • 最近一次运行预览图:在检索流详情页面左侧区域,展示最近一次流运行预览图,单击页面右上角“编辑”,可进入检索流编辑页面。
  • 基本信息:显示检索流的基本信息,包括名称、状态、调用地址等。
  • 运行历史:可以查看近24小时、近7天、近28天的运行历史记录,也可以自定义时间段进行查询。
  • 历史版本:展示检索流的历史版本,最多20条。
    • 选择历史版本操作列的更多 > 保存为最新版本,会产生一条新的记录并应用于当前的流。如果流已经被其他应用调用,请谨慎操作。
    • 选择历史版本操作列的更多 > 删除,删除历史版本。
    • 单击历史版本操作列的“编辑”,编辑工作流,保存后会产生一条新的记录并应用于当前的流。如果流已经被其他应用调用,请谨慎操作。

修改检索流

在检索流列表中,单击操作列的“修改”,单击检索流名称后的,可修改检索流名称、描述,并支持增加、删除节点以及修改执行动作参数等。

删除检索流

已启用的检索流需要先停用,才可删除。

在检索流列表中,选择操作列的“更多 > 删除”,在弹出的确认框中单击“确认”。

复制检索流

在检索流列表中,选择操作列的“更多 > 复制”,在弹出的复制流提示框中单击“确认”。

相关文档