向量数据库查询#
向量数据库查询是一种向量搜索工具,允许用户从向量数据库中搜索前 k 个相似向量。此工具是多个第三方向量数据库的包装器。目前支持的数据库列表如下。
名称 |
描述 |
---|---|
Azure AI 搜索 |
微软的云搜索服务,内置 AI 功能,可丰富各种信息,帮助大规模识别和探索相关内容。 |
Qdrant |
Qdrant 是一个向量相似性搜索引擎,提供了一个生产就绪的服务,具有方便的 API,可以存储、搜索和管理带有附加有效负载的点(即向量)。 |
Weaviate |
Weaviate 是一个开源向量数据库,同时存储对象和向量。这允许将向量搜索与结构化过滤相结合。 |
此工具将支持更多向量数据库。
要求#
对于 AzureML 用户,该工具已安装在默认映像中,无需额外安装即可使用。
对于本地用户,
pip install promptflow-vectordb
先决条件#
该工具从第三方向量数据库搜索数据。要使用它,您应该提前创建资源并在工具和资源之间建立连接。
Azure AI 搜索
创建资源 Azure AI 搜索。
添加“认知搜索”连接。使用从创建资源的“密钥”部分获取的“主管理密钥”填充“API 密钥”字段,并使用 URL 填充“API 基本 URL”字段,URL 格式为
https://{your_service_name}.search.windows.net
。
Qdrant
按照安装说明将 Qdrant 部署到自维护的云服务器。
添加“Qdrant”连接。使用您的自维护云服务器地址填充“API 基本 URL”字段,并填充“API 密钥”字段。
Weaviate
按照安装说明将 Weaviate 部署到自维护实例。
添加“Weaviate”连接。使用您的自维护实例地址填充“API 基本 URL”字段,并填充“API 密钥”字段。
输入#
该工具接受以下输入
Azure AI 搜索
名称
类型
描述
必填
连接
CognitiveSearchConnection
用于访问认知搜索终结点的已创建连接。
是
index_name
字符串
在认知搜索资源中创建的索引名称。
是
text_field
字符串
文本字段名称。返回的文本字段将填充输出的文本。
No
vector_field
字符串
向量字段名称。目标向量在此向量字段中搜索。
是
search_params
dict
搜索参数。它是键值对。除了上面提到的工具输入列表中的参数外,额外的搜索参数可以构成一个 JSON 对象作为 search_params。例如,使用
{"select": ""}
作为 search_params 来选择返回的字段,使用{"search": ""}
来执行混合搜索。No
search_filters
dict
搜索过滤器。它是键值对,输入格式为
{"filter": ""}
No
vector
列表
要查询的目标向量,可以通过 Embedding 工具生成。
是
top_k
int
要返回的得分最高的实体的数量。默认值为 3
No
Qdrant
名称
类型
描述
必填
连接
QdrantConnection
用于访问 Qdrant 服务器的已创建连接。
是
collection_name
字符串
在自维护的云服务器中创建的集合名称。
是
text_field
字符串
文本字段名称。返回的文本字段将填充输出的文本。
No
search_params
dict
搜索参数可以构成一个 JSON 对象作为 search_params。例如,使用
{"params": {"hnsw_ef": 0, "exact": false, "quantization": null}}
来设置 search_params。No
search_filters
dict
搜索过滤器。它是键值对,输入格式为
{"filter": {"should": [{"key": "", "match": {"value": ""}}]}}
No
vector
列表
要查询的目标向量,可以通过 Embedding 工具生成。
是
top_k
int
要返回的得分最高的实体的数量。默认值为 3
No
Weaviate
名称
类型
描述
必填
连接
WeaviateConnection
用于访问 Weaviate 的已创建连接。
是
class_name
字符串
类名。
是
text_field
字符串
文本字段名称。返回的文本字段将填充输出的文本。
No
vector
列表
要查询的目标向量,可以通过 Embedding 工具生成。
是
top_k
int
要返回的得分最高的实体的数量。默认值为 3
No
输出#
以下是工具返回的 JSON 格式响应示例,其中包含得分最高的前 k 个实体。实体遵循 promptflow-vectordb SDK 提供的向量搜索结果的通用架构。
Azure AI 搜索
对于 Azure AI 搜索,填充以下字段
字段名
类型
描述
original_entity
dict
来自搜索 REST API 的原始响应 JSON
score
float
来自原始实体的 @search.score,用于评估实体与查询向量之间的相似度
text
字符串
实体的文本
vector
列表
实体的向量
输出
[ { "metadata": null, "original_entity": { "@search.score": 0.5099789, "id": "", "your_text_filed_name": "sample text1", "your_vector_filed_name": [-0.40517663431890405, 0.5856996257406859, -0.1593078462266455, -0.9776269170785785, -0.6145604369828972], "your_additional_field_name": "" }, "score": 0.5099789, "text": "sample text1", "vector": [-0.40517663431890405, 0.5856996257406859, -0.1593078462266455, -0.9776269170785785, -0.6145604369828972] } ]
Qdrant
对于 Qdrant,填充以下字段
字段名
类型
描述
original_entity
dict
来自搜索 REST API 的原始响应 JSON
metadata
dict
来自原始实体的有效负载
score
float
来自原始实体的分数,用于评估实体与查询向量之间的相似度
text
字符串
有效负载的文本
vector
列表
实体的向量
输出
[ { "metadata": { "text": "sample text1" }, "original_entity": { "id": 1, "payload": { "text": "sample text1" }, "score": 1, "vector": [0.18257418, 0.36514837, 0.5477226, 0.73029673], "version": 0 }, "score": 1, "text": "sample text1", "vector": [0.18257418, 0.36514837, 0.5477226, 0.73029673] } ]
Weaviate
对于 Weaviate,填充以下字段
字段名
类型
描述
original_entity
dict
来自搜索 REST API 的原始响应 JSON
score
float
来自原始实体的确定性,用于评估实体与查询向量之间的相似度
text
字符串
原始实体中的文本
vector
列表
实体的向量
输出
[ { "metadata": null, "original_entity": { "_additional": { "certainty": 1, "distance": 0, "vector": [ 0.58, 0.59, 0.6, 0.61, 0.62 ] }, "text": "sample text1." }, "score": 1, "text": "sample text1.", "vector": [ 0.58, 0.59, 0.6, 0.61, 0.62 ] } ]