IBM Cloud Docs
定制服务集成设置

定制服务集成设置

企业

自定义服务集成通过使用您创建的搜索功能来搜索信息。 您可以将定制服务与助手的对话式搜索功能集成,生成人工智能回复。 这种集成支持服务器端和客户端的信息检索。

每个环境只能有一个搜索集成。 将现有搜索集成更改为其他集成类型(如 IBM Watson® Discovery、Elasticsearch 或 Milvus )时,现有搜索集成的设置将被覆盖。

选择定制服务

要选择自定义服务作为搜索集成,请使用以下程序之一:

  • 从集成页面选择自定义服务搜索集成

    1. 创建 watsonx Assistant 实例后,转到 Home > Integrations
    2. 单击 Search 磁贴内的 Open 查看“打开搜索”窗口。
    3. 如果要在助手的草稿环境中设置自定义服务,请在“打开搜索”窗口的下拉菜单中选择 Draft 选项。 如果要在助手的实时环境中设置自定义服务,请在下拉菜单中选择 Live 选项。
    4. 在下面的“编辑现有的新搜索集成”窗口中,选择 定制服务磁贴。
  • 从环境页面选择自定义服务搜索集成

    1. 创建 watsonx Assistant 实例后,转到 Home > Environments

    2. 如果要在草稿环境中设置自定义服务,请选择 Draft 选项卡。 如果要在实时环境中设置自定义服务,请选择 Live 选项卡。

    3. Resolution methods 部分,如果要添加自定义服务搜索集成,请单击 Search 磁贴内 Extensions 下的 Add

      如果您已经添加了自定义服务搜索集成,则会在 Extensions 下的 Search 磁贴内看到 Open 按钮,而不是 Add

    4. 在“Set up a new search extension 窗口中,选择自定义服务磁贴,即可看到”Search integration 对话框。

    选择定制服务
    选择定制服务

您的助手在直接将搜索参数传递给自定义服务或直接从中检索搜索结果时会受到限制。 您的自定义服务搜索集成必须托管一个可访问的网络服务器,该服务器应实现助手提供的搜索API接口,或者配置为调用助手以提供搜索结果的客户端。 更多信息,请参阅 为自定义服务设置检索系统

使用服务器凭据设置自定义服务

要在助手上使用服务器凭据设置自定义服务,请使用以下步骤:

  1. 连接搜索提供商 窗口的 定制服务 部分,选择 通过提供证书。 缺省情况下已选择此选项。

  2. 提供以下字段,使助手能够连接到自定义服务实例:

    • URL
    • 选择认证类型
      • 如果您选择 Basic authentication,则必须提供用户名密码
      • 如果选择 API key,则必须提供 API 密钥
      • 如果选择 None,则不能提供任何其他身份验证详细信息。
  3. 单击 Next 转到 对话搜索(可选)

  4. 如果要激活对话搜索,请将 对话搜索 切换至 on。 有关会话搜索的更多信息,请参阅 会话搜索

  5. 填写 默认过滤器元数据 是可选的。 您可以在这些字段中输入信息,以便服务器执行搜索请求。 元数据必须是 JSON 对象,默认过滤器可以是文本字符串。 您可以在启动搜索的操作步骤或对话框节点中覆盖默认过滤器。 您不能通过其他选项覆盖元数据,您提供的元数据适用于该集成的所有用途。 有关更多信息,请参阅 为服务器填写默认过滤器和元数据

  6. 使用未找到结果连接问题选项卡,根据搜索成功与否自定义与用户分享的不同信息。

    定制服务搜索结果信息
    制表符 场景 示例消息
    找不到结果 找不到任何搜索结果 I searched my knowledge base for information that might address your query, but did not find anything useful to share.
    连接问题 由于某种原因,无法完成搜索 I might have information that could help address your query, but am unable to search my knowledge base at the moment.
  7. 单击 保存,然后单击 关闭,结束使用服务器凭据设置的自定义服务。

    选择定制服务服务器
    选择定制服务服务器

通过客户设置自定义服务

要通过客户端在助手上设置自定义服务,请使用以下步骤:

  1. 连接搜索提供商 窗口的 定制服务 部分,选择“通过您的客户端”。

  2. 单击 Next 转到 对话搜索(可选)

  3. 如果要激活对话搜索,请将 对话搜索 切换至 on。 有关会话搜索的更多信息,请参阅 会话搜索

  4. 填写 默认过滤器元数据 是可选的。 您可以在这些字段中输入信息,以便服务器执行搜索请求。 元数据必须是 JSON 对象,默认过滤器可以是文本字符串。 您可以在启动搜索的操作步骤或对话框节点中覆盖默认过滤器。 您不能通过其他选项覆盖元数据,您提供的元数据适用于该集成的所有用途。 有关更多信息,请参阅 为客户端填写默认过滤器和元数据

  5. 使用未找到结果连接问题选项卡,根据搜索成功与否自定义与用户分享的不同信息。

    定制服务搜索结果信息
    制表符 场景 示例消息
    找不到结果 找不到任何搜索结果 I searched my knowledge base for information that might address your query, but did not find anything useful to share.
    连接问题 由于某种原因,无法完成搜索 I might have information that could help address your query, but am unable to search my knowledge base at the moment.
  6. 单击“保存”,然后单击“关闭”,结束客户端的自定义服务设置。

为定制服务设置 Milvus

Milvus 是一个矢量数据库,可用于处理大规模数据集。 对于需要实时搜索功能和大量并发用户的应用,您可以使用 Milvus,它具有分布式架构、高性能和灵活的数据模型。

您可以直接与 watsonx.data Milvus 集成以进行对话搜索,而不是使用自定义服务。 更多信息,请参阅 Milvus 搜索集成设置

您需要使用自定义服务搜索,以利用 Milvus 更高级的搜索功能,例如

使用服务器证书设置 Milvus

  1. 关于设置 watsonx.data Milvus,请参阅《 设置搜索与 watsonx.data Milvus 集成指南 》。
  2. 有关使用服务器凭证设置助手的一般信息,请参阅 使用服务器凭证设置自定义服务
  3. 有关 Milvus 示例和参考文献的更多信息,请参阅 Milvus 示例

通过客户端设置 Milvus

按照 通过客户设置定制服务的 步骤,通过客户在您的助理上设置 Milvus。

为定制服务建立检索系统

要在搜索集成中使用自定义服务,必须通过提供服务器或让调用助手的客户端提供搜索结果来集成搜索功能。 如果检索模式与助手提供的模式一致,则可以使用自己的检索。 如果您的检索模式与助手的模式不匹配,您必须提供一个封装器来完成模式映射。 您可以将包装器作为服务部署,也可以让聊天客户端启动它。 当你想结合不同的源或调用不符合助手搜索结果模式的库或服务时,建立一个包装器就很有用了。

为自定义服务检索设置服务器

自定义服务检索服务器必须执行以下 API:

查询: POST <server_url>

请求

{
    "query": "<QUERY>",
    "filter": "<FILTER>", // optional
    "metadata": {
        // optional, you can fill any information here
    }
}

响应

{

  "search_results": [
    {
      "result_metadata": { // optional
        "score": <SCORE as a number>
      },
      "title": "<TITLE>",
      "body": "<BODY>",
      "url": "<URL>", // optional
      "highlight": { // optional, will be used instead of "body" for Conversational Search if provided
        "body": [
          "<HIGHLIGHT1>",
          "<HIGHLIGHT2>",
           ...
        ]
      }
    }
  ]

}

请求中的元数据和整个响应对象不得超过 100 KB。

为自定义服务检索设置客户端

您可以看到 /message API 在运行时请求搜索的以下 API 响应:

{
    "output": {
        "intents": [ ... ],
        "actions": [
            {
                "type": "search",
                "query": "<QUERY>",
                "filter": "<FILTER>",
                "metadata": { // optional
                    /* you can use any JSON object here */
                }
            }
        ]
    }
}

每当聊天客户端收到带有该表单的回复时(它在 output.actions 类型为 search 的列表中有一个条目),它就会通过下一次调用 /message API 将结果传回助手,如下所示:

{
    "input": {
        "message_type": "search_results",
         "search_results": [
          {
            "result_metadata": { // optional
                "score": <SCORE as a number>
            },
            "title": "<TITLE>",
            "body": "<BODY>",
            "url": "<URL>", // optional
            "highlight": { // optional, will be used instead of "body" for Conversational Search if provided
                "body": [
                "<HIGHLIGHT1>",
                "<HIGHLIGHT2>",
                ...
                ]
            }
         }
     ]
  }
}

您的助手回复上限不能超过 100 KB。 如果助手收到的 search_results 消息正文超过 100 KB,则会返回 400 响应。

在对话式搜索中处理搜索结果

当您通过提供服务器凭据或从客户端发送结果来设置自定义服务,并启用自定义服务的对话式搜索时,您将获得以下行为:

  1. 对话式搜索会将搜索结果从第一个到最后一个依次排列。
  2. 从每个搜索结果中
    • 如果没有 highlight.body 列表,则会将 body 作为文本片段。
    • 如果存在 highlight.body 列表,它会将该列表中的每个元素作为一个文本片段。
  3. 在丢弃重复的文本片段后,它会继续遍历搜索结果和 highlight.body 列表,直到找到 5 个文本片段。
  4. 对话式搜索应用预先生成的过滤模型来比较查询和搜索结果,以判断结果与查询的相关性。 如果预生成过滤模型会产生两个分数:
    • 低分对话式搜索会返回我不知道信号。 有关 I don't know 信号的更多信息,请参阅 对话搜索
    • 高分对话式搜索会将片段和相应的标题发送给生成式人工智能模型,以生成答案。
  5. 如果文本太长,生成式人工智能模型无法处理,它就会反复丢弃最后一个片段或标题对,直到文本变短为止。 如果没有文本,则搜索失败。
  6. 对话式搜索将响应应用于后过滤模式。 如果滤波后模型产生两个分数:
    • 低分对话式搜索会返回我不知道信号。
    • 高分对话式搜索会将生成的响应以及所有 search_results 返回给调用应用程序。

对于其他搜索选项,如 Elasticsearch 和 IBM Watson® Discovery,助手也会遵循相同的流程。

bodyhighlight.body 添加独立字段

当出现 highlight.body 时,它将用于生成对话式搜索答案,否则将使用 body。 两者都会作为搜索结果对象的一部分传递给客户端,并由客户端提供答案的上下文。 例如,内置网络聊天会显示 body 文本。 如果点击某个搜索结果的引用卡,就无法看到该搜索结果的 URL。

关于使用油田的建议:

  • 如果搜索技术返回的是文档的简短部分,则在 body 字段中使用文档的这些部分,省略 highlight.body。 例如,许多矢量数据库解决方案只存储 512 个标记段的文档。
  • 如果搜索技术同时返回文档的简短部分("段落 "或 "要点 "或 "片段")和全文,则在 highlight.body 字段中使用简短部分,在 body 字段中使用全文。

添加可选的用户自定义元数据

对于客户端和服务器,结果模式都包括一个 metadata 字段和一个 result_metadata 字段。

关于使用油田的建议:

  • metadata 字段将配置信息发送到搜索功能。 用于搜索功能的配置信息包括索引名称、嵌入模型名称、请求的段落长度、要增强的字段等。 以下原因解释了为什么使用 metadata 字段将配置信息传递给服务器或客户端会有帮助:
    • 多个助手可以使用相同的服务器或客户端代码,但配置不同。
    • 即使只有一个助手,也能通过助手界面轻松更新配置。
  • result_metadata 字段从服务器或客户端向助手发送有关搜索结果的附加信息。 助手会将这些信息作为 search_results 对象的一部分传递到最终响应中。 调用应用程序使用附加信息。 例如,当 result_metadata 发送搜索结果中图片的 URL 时,调用应用程序会将图片与响应一起渲染。