定制服务集成设置

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

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

重要说明:

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

选择定制服务

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

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

    1. 创建 AI 助手构建器实例后,请前往 “首页” > “集成”

    2. 单击 "搜索"磁贴内的 "打开",查看 "打开搜索 "窗口。

    3. 在“打开搜索”窗口中,如果要在 AI 助手的草稿环境中设置自定义服务,请在下拉菜单中选择 Draft 该选项。 若要在 AI 助手的运行环境中设置自定义服务,请在下拉菜单中选择 Live 该选项。

    4. 在下面的 "编辑现有新搜索集成 "窗口中,选择自定义服务磁贴。

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

    1. 创建 AI 助手构建器实例后,请转至 “首页” > “环境”

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

    3. 在 "解决方法"部分,如果要添加自定义服务搜索集成,请单击扩展搜索磁贴内的添加

提示:

如果您已经添加了“自定义服务搜索”集成,那么在“扩展”下的“搜索”磁贴中,您会看到“打开”按钮,而不是“添加”按钮。

  1. 在 "设置新搜索扩展 "窗口中,选择自定义服务磁贴,即可看到 "搜索集成 "对话框。

选择海关

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

若要在 AI 助理上使用服务器凭据设置自定义服务,请按照以下步骤操作:

  1. 自定义服务窗口的 "连接搜索提供商"部分,选择 "通过提供凭据"。 缺省情况下,此选项是选中的。

  2. 请填写以下字段,以便您的 AI 助手连接到您的自定义服务实例:

    • URL

    • 选择验证类型

      • 如果选择 "Basic authentication,则必须提供用户名密码

      • 如果选择 "API key,则必须提供API 密钥

      • 如果选择 "None,则不能提供任何其他验证信息。

  3. 单击下一步进入对话搜索(可选)

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

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

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

表 1. 自定义服务搜索结果消息

制表符

方案分析

示例消息

找不到结果

找不到任何搜索结果

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.

  1. 单击 "保存",然后单击 "关闭",使用服务器凭据结束自定义服务设置。

选择海关服务服务器

通过客户设置定制服务

若要通过客户端在您的 AI 助手上设置自定义服务,请按照以下步骤操作:

  1. 自定义服务窗口的 "连接搜索提供商"部分,选择 "通过客户端"。

  2. 单击下一步进入对话搜索(可选)

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

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

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

表 2. 自定义服务搜索结果消息

制表符

方案分析

示例消息

找不到结果

找不到任何搜索结果

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.

  1. 单击 "保存",然后单击 "关闭",结束客户端的自定义服务设置。

设置 Milvus 的定制服务

您可以直接watsonx.data Milvus 集成,用于对话式搜索,而无需使用自定义服务。 如需了解更多信息,请参阅 Milvus 搜索集成设置

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

  • 支持灵活使用任何 Milvus 和 watsonx.ai 支持的嵌入模型。

有关 Milvus 支持的嵌入式模型列表,请参阅 Milvus supported embedding models

使用服务器凭据配置 Milvus

  1. 有关配置 watsonx.data Milvus 的信息,请参阅《 配置与 watsonx.data Milvus 集成搜索的指南 》。

  2. 有关使用服务器凭证为助手进行常规设置的信息,请参阅使用服务器凭证设置自定义服务

  3. 有关 Milvus 的示例和参考资料的更多信息,请参阅 [ Milvus 的示例]( https://github.com/watson-developer-cloud/assistant-toolkit/blob/master/integrations/extensions/starter-kits/search-with-custom-service/custom-search-server-setup-guide.md#example-with-milvus )。

通过您的客户端设置 Milvus

请按照 《通过客户端设置自定义服务》 中所述的步骤 ,在您的 AI 助手上通过客户端设置 Milvus。

为定制服务建立检索系统

若要在搜索集成中使用自定义服务,您必须通过提供服务器,或让调用 AI 助手的客户端提供搜索结果,来集成您的搜索功能。 如果您的检索模式与 AI 助手提供的模式相匹配,您可以使用自己的检索功能。 如果您的检索模式与 AI 助手的模式不匹配,您必须提供一个用于进行模式映射的封装器。 您可以将包装器作为服务部署,也可以让聊天客户端启动它。 当您希望整合其他数据源,或调用不符合 AI 助手搜索结果模式的库或服务时,构建一个封装器会非常有用。

设置用于自定义服务检索的服务器

用于自定义服务检索的服务器必须实施以下应用程序接口:

查询: 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 ,将结果以如下方式传递回 AI 助手

{
    "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>",
                ...
                ]
            }
         }
     ]
  }
}
重要说明:

您的 AI 助手回复内容不得超过 100 KB。 如果您的 AI 助手收到一封正文大小超过 100 KB 的 search_results消息,它将返回 400 状态码。

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

当您通过提供服务器凭据或从客户端发送结果来设置自定义服务时,如果您在自定义服务中启用了对话式搜索,就会出现以下行为:

  1. 对话式搜索会将搜索结果从第一个到最后一个依次排列。

  2. 从每个搜索结果中

    • 如果没有 "highlight.body列表,它会将 "body作为文本片段。

    • 如果存在 "highlight.body列表,它会将该列表中的每个元素作为一个文本片段。

  3. 在丢弃重复的文本片段后,它会继续遍历搜索结果和 "highlight.body列表,直到找到 5 个文本片段。

  4. 对话式搜索应用预先生成的过滤模型来比较查询和搜索结果,以判断结果与查询的相关性。 如果预生成过滤模型会产生两个分数:

    • 低分对话式搜索会返回 "我不知道 "信号。 有关 "我不知道"信号的更多信息,请参阅会话搜索

    • 高分对话式搜索会将片段和相应的标题发送给生成式人工智能模型,以生成答案。

  5. 如果文本太长,生成式人工智能模型无法处理,它就会反复丢弃最后一个片段或标题对,直到文本变短为止。 如果没有文本,则搜索失败。

  6. 对话式搜索将响应应用于后过滤模式。 如果滤波后模型产生两个分数:

    • 低分对话式搜索会返回 "我不知道 "信号。

    • 高分对话式搜索会将生成的响应以及所有 "search_results返回给调用应用程序。

对于其他搜索选项(如 Elasticsearch ),您的 AI 助手也会遵循相同的流程。

body 和 添加单独的字段 highlight.body

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

关于使用油田的建议:

  • 如果搜索技术返回的文件较短,则在 "body字段中使用文件的这些部分,省略 "highlight.body。 例如,许多矢量数据库解决方案只存储 512 个标记段的文档。

  • 如果搜索技术同时返回文件的简短部分("段落 "或 "要点 "或 "片段")和全文,则在 "highlight.body字段中使用简短部分,在 "body字段中使用全文。

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

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

关于使用油田的建议:

  • metadata字段向搜索功能发送配置信息。 用于搜索功能的配置信息包括索引名称、嵌入模型名称、请求的段落长度、要增强的字段等。 以下原因解释了为什么使用 "metadata字段将配置信息传递给服务器或客户端会有帮助:

    • 多个助手可以使用相同的服务器或客户端代码,但配置不同。

    • 即使只有一个助手,也能通过助手界面轻松更新配置。

  • 该字 result_metadata 段将服务器或客户端关于搜索结果的附加信息发送给 AI 助手AI 助手将该信息作为最终响应中 ` search_results object` 的一部分传递出去。 调用应用程序使用附加信息。 例如,当 发送搜索结果中图片的 result_metadata URL 时,调用该服务的应用程序会随响应一起渲染这些图片。