定制服务集成设置
Milvus 是一个矢量数据库,可用于处理大型数据集。 对于需要实时搜索功能和大量并发用户的应用,您可以使用 Milvus ,它具有分布式架构、高性能和灵活的数据模型。
自定义服务集成通过使用您创建的搜索功能来搜索信息。 您可以利用自定义服务集成与 AI 助手的对话搜索功能,生成 AI 回复。 这种集成支持服务器端和客户端的信息检索。
每个环境只能配置一个搜索集成。 当您将现有的搜索集成更改为其他集成类型(例如 Elasticsearch 或 Milvus )时,现有搜索集成的设置将被覆盖。
选择定制服务
要选择自定义服务作为搜索集成,请使用以下程序之一:
从集成页面选择自定义服务搜索集成
创建 AI 助手构建器实例后,请前往 “首页” > “集成”。
单击 "搜索"磁贴内的 "打开",查看 "打开搜索 "窗口。
在“打开搜索”窗口中,如果要在 AI 助手的草稿环境中设置自定义服务,请在下拉菜单中选择
Draft该选项。 若要在 AI 助手的运行环境中设置自定义服务,请在下拉菜单中选择Live该选项。在下面的 "编辑现有新搜索集成 "窗口中,选择自定义服务磁贴。
从环境页面选择自定义服务搜索集成
创建 AI 助手构建器实例后,请转至 “首页” > “环境”。
如果要在草稿环境中设置自定义服务,请选择 "
Draft选项卡。 如果要在实时环境中设置自定义服务,请选择 "Live选项卡。在 "解决方法"部分,如果要添加自定义服务搜索集成,请单击扩展下搜索磁贴内的添加。
如果您已经添加了“自定义服务搜索”集成,那么在“扩展”下的“搜索”磁贴中,您会看到“打开”按钮,而不是“添加”按钮。
在 "设置新搜索扩展 "窗口中,选择自定义服务磁贴,即可看到 "搜索集成 "对话框。

使用服务器凭据设置自定义服务
若要在 AI 助理上使用服务器凭据设置自定义服务,请按照以下步骤操作:
在自定义服务窗口的 "连接搜索提供商"部分,选择 "通过提供凭据"。 缺省情况下,此选项是选中的。
请填写以下字段,以便您的 AI 助手连接到您的自定义服务实例:
URL
选择验证类型
如果选择 "
Basic authentication,则必须提供用户名和密码。如果选择 "
API key,则必须提供API 密钥。如果选择 "
None,则不能提供任何其他验证信息。
单击下一步进入对话搜索(可选)。
如果要激活对话式搜索,请将对话式搜索切换开关切换到 "
on。 有关会话搜索的更多信息,请参阅会话搜索。填写默认过滤器和元数据是可选项。 您可以在这些字段中输入信息,以便服务器执行搜索请求。 元数据必须是 JSON 对象,默认过滤器可以是文本字符串。 您可以在开始搜索的操作步骤中覆盖默认过滤器。 您不能通过其他选项覆盖元数据,您提供的元数据适用于该集成的所有用途。 如需了解更多信息,请参阅 “为服务器填写默认过滤器和元数据”。
使用 "未找到结果"和 "连接性问题"选项卡,根据搜索成功与否定制与用户分享的不同信息。
制表符 | 方案分析 | 示例消息 |
|---|---|---|
找不到结果 | 找不到任何搜索结果 |
|
连接问题 | 由于某种原因,无法完成搜索 |
|
单击 "保存",然后单击 "关闭",使用服务器凭据结束自定义服务设置。

通过客户设置定制服务
若要通过客户端在您的 AI 助手上设置自定义服务,请按照以下步骤操作:
在自定义服务窗口的 "连接搜索提供商"部分,选择 "通过客户端"。
单击下一步进入对话搜索(可选)。
如果要激活对话式搜索,请将对话式搜索切换开关切换到 "
on。 有关会话搜索的更多信息,请参阅会话搜索。填写默认过滤器和元数据是可选项。 您可以在这些字段中输入信息,以便服务器执行搜索请求。 元数据必须是 JSON 对象,默认过滤器可以是文本字符串。 您可以在开始搜索的操作步骤中覆盖默认过滤器。 您不能通过其他选项覆盖元数据,您提供的元数据适用于该集成的所有用途。 如需了解更多信息,请参阅“为客户端填充默认过滤器和元数据”。
使用 "未找到结果"和 "连接性问题"选项卡,根据搜索成功与否定制与用户分享的不同信息。
制表符 | 方案分析 | 示例消息 |
|---|---|---|
找不到结果 | 找不到任何搜索结果 |
|
连接问题 | 由于某种原因,无法完成搜索 |
|
单击 "保存",然后单击 "关闭",结束客户端的自定义服务设置。
设置 Milvus 的定制服务
您可以直接watsonx.data Milvus 集成,用于对话式搜索,而无需使用自定义服务。 如需了解更多信息,请参阅 Milvus 搜索集成设置。
您需要使用自定义服务搜索,以利用 Milvus 更高级的搜索功能,例如:
支持灵活使用任何 Milvus 和 watsonx.ai 支持的嵌入模型。
有关 Milvus 支持的嵌入式模型列表,请参阅 Milvus supported embedding models。
使用服务器凭据配置 Milvus
有关配置 watsonx.data Milvus 的信息,请参阅《 配置与 watsonx.data Milvus 集成搜索的指南 》。
有关使用服务器凭证为助手进行常规设置的信息,请参阅使用服务器凭证设置自定义服务。
有关 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 状态码。
在对话式搜索中处理搜索结果
当您通过提供服务器凭据或从客户端发送结果来设置自定义服务时,如果您在自定义服务中启用了对话式搜索,就会出现以下行为:
对话式搜索会将搜索结果从第一个到最后一个依次排列。
从每个搜索结果中
如果没有 "
highlight.body列表,它会将 "body作为文本片段。如果存在 "
highlight.body列表,它会将该列表中的每个元素作为一个文本片段。
在丢弃重复的文本片段后,它会继续遍历搜索结果和 "
highlight.body列表,直到找到 5 个文本片段。对话式搜索应用预先生成的过滤模型来比较查询和搜索结果,以判断结果与查询的相关性。 如果预生成过滤模型会产生两个分数:
低分对话式搜索会返回 "我不知道 "信号。 有关 "我不知道"信号的更多信息,请参阅会话搜索。
高分对话式搜索会将片段和相应的标题发送给生成式人工智能模型,以生成答案。
如果文本太长,生成式人工智能模型无法处理,它就会反复丢弃最后一个片段或标题对,直到文本变短为止。 如果没有文本,则搜索失败。
对话式搜索将响应应用于后过滤模式。 如果滤波后模型产生两个分数:
低分对话式搜索会返回 "我不知道 "信号。
高分对话式搜索会将生成的响应以及所有 "
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_resultsobject` 的一部分传递出去。 调用应用程序使用附加信息。 例如,当 发送搜索结果中图片的result_metadataURL 时,调用该服务的应用程序会随响应一起渲染这些图片。