向量数据库查询#

向量数据库查询是一种向量搜索工具,允许用户从向量数据库中搜索前 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
        ]
      }
    ]