你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

Azure AI 搜索中的矢量搜索

注意

Azure AI 搜索可通过Azure门户REST APIAzure SDK获取。 它也是 Foundry IQ 的基础;Foundry IQ 是一个托管式知识层,可将企业内容转化为供 Microsoft Foundry 门户中的智能体使用的、可复用且具备权限感知能力的知识库。

矢量搜索是一种信息检索方法,支持对内容的数字表示形式进行索引和查询。 由于内容是数字而不是纯文本,因此匹配基于与查询向量最相似的向量。 此方法可实现跨以下范围内的匹配:

  • 语义或概念相似性。 例如,“dog”和“canine”在概念上相似,但语言上不同。
  • 多语言内容,如英语中的“狗”和德语中的“狗”。
  • 多个内容类型,如纯文本中的“狗”和狗的图像。

本文概述了Azure AI 搜索中的矢量搜索,包括支持的方案、可用性和其他Azure服务的集成。

提示

想要立即开始? 按照以下步骤操作:

  1. 为索引提供嵌入 或在索引器管道中生成 嵌入
  2. 创建矢量索引
  3. 运行矢量查询

矢量搜索支持哪些场景?

矢量搜索支持以下方案:

  • 相似性搜索。 分别使用嵌入模型或开源模型(如 OpenAI 嵌入或 SBERT)对文本进行编码。 然后,使用也编码为矢量的查询检索文档。

  • 混合搜索。 Azure AI 搜索将混合搜索定义为在同一请求中执行矢量搜索和 keyword 搜索。 矢量支持在字段层面实现。 如果索引包含向量和非函数字段,则可以编写面向两者的查询。 查询并行执行,结果合并为单个响应并相应地进行排名。

  • 多模式搜索。 使用多模式嵌入(如 OpenAI CLIPGPT-4 Turbo 和 Vision1)在 Azure openAI 中对文本和图像进行编码,然后查询由这两种内容类型中的矢量组成的嵌入空间。

  • 多语言搜索。 Azure AI 搜索专为扩展性而设计。 如果您有多种语言训练的嵌入模型和聊天模型,您可以在索引端通过自定义或内置技能进行调用,或者在查询端通过矢量化工具调用它们。 为了对文本翻译获得更多控制,请在混合搜索场景中对非向量内容使用 Azure AI 搜索支持的多语言功能

  • 筛选的矢量搜索。 查询请求可以包括矢量查询和 筛选器表达式。 筛选器适用于文本和数值字段。 它们对于元数据筛选器以及根据筛选条件包括或排除搜索结果非常有用。 虽然矢量字段不可筛选,但可以设置可筛选的文本或数字字段。 搜索引擎可以在执行向量查询之前或之后处理筛选器。

  • 矢量数据库。 Azure AI 搜索 存储您查询的数据。 将其用作纯矢量索引,当需要长久记忆或知识库、为检索增强生成(RAG)架构提供数据基础,或用于矢量应用时。

矢量搜索的工作原理是什么?

Azure AI 搜索支持对搜索索引中的矢量嵌入进行索引、存储和查询。 下图显示了矢量搜索的索引和查询工作流。

矢量搜索工作流的体系结构。

在索引端,Azure AI 搜索 使用 最近邻算法 将类似的向量放在索引中。 在内部,它会为每个 向量字段创建矢量索引

将源内容中的嵌入向量引入 Azure AI 搜索的方式取决于你的处理方法:

  • 对于内部处理,Azure AI 搜索在索引器管道中提供集成的数据分块和向量化。 您提供必要的资源,例如 Azure OpenAI 的终结点和连接信息。 然后,Azure AI 搜索 进行调用并负责处理转换。 此方法需要索引器、支持的数据源和驱动分块和嵌入的技能集。

  • 对于外部处理,可以在 Azure AI 搜索 外部 生成嵌入,并将预矢量化的内容直接推送到搜索索引中的 向量字段

在查询端,客户端应用通常通过提示收集用户输入。 可以添加编码步骤来向量化输入,然后将向量查询发送到Azure AI 搜索索引进行相似性搜索。 与索引一样,可以使用 集成矢量化 对查询进行编码。 对于任何一种方法,Azure AI 搜索都会在结果中返回具有请求的 k 近邻 (kNN) 的文档。

Azure AI 搜索支持hybrid 方案并行运行矢量和关键字搜索,并返回统一的结果集,这通常比仅矢量或关键字搜索提供更好的结果。 对于混合搜索,向量内容和非向量内容都被引入到同一索引中,以便进行同时运行的查询。

可用性和定价

矢量搜索在所有 区域所有层 上均免费提供。 但是,生成嵌入内容或使用 AI 增强进行矢量化可能会产生模型提供商收取的费用。

要通过门户或编程方式访问向量搜索,你可以使用:

注意

  • 在 2019 年 1 月 1 日之前创建的一些搜索服务不支持矢量工作负荷。 如果尝试将向量字段添加到架构并收到错误,则这是过时服务的结果。 在这种情况下,必须创建新的搜索服务来试用矢量功能。

  • 在 2024 年 4 月 3 日之后创建的搜索服务 为矢量索引提供更高的配额。 如果有较旧的服务,则可能能够 升级服务 以获取更高的向量配额。

Azure AI 搜索在 Azure AI 平台中深度集成。 下表列出了在矢量工作负荷中有用的产品。

产品 集成
Azure OpenAI Azure OpenAI 提供嵌入模型和聊天模型。 演示和示例针对文本嵌入-ada-002模型。 我们建议使用“Azure OpenAI”来生成文本嵌入。
Foundry 工具 图像检索矢量化图像 API 支持图像内容的矢量化。 建议使用此 API 为图像生成嵌入内容。
Foundry 智能体服务 在 Azure AI 搜索中,你可以创建一个索引的知识源,该知识源指向包含向量字段和向量化器的搜索索引。 然后,可以将知识库父级到知识库,并将知识库连接到 Foundry 代理服务,为代理提供矢量搜索结果,以增强知识检索。
Azure数据平台:Azure Blob 存储、Azure Cosmos DB、Azure SQL、Microsoft OneLake 可以使用 索引器 自动执行数据引入,然后使用 集成矢量化 生成嵌入。 Azure AI 搜索可以自动从 Azure Blob 索引器Azure Cosmos DB for NoSQL 索引器Azure Data Lake Storage Gen2Azure 表存储以及 Microsoft OneLake 索引向量数据。 有关详细信息,请参阅 向搜索索引添加向量字段

Azure AI 搜索也通常用于开放源代码框架(如 LangChain)。