你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
矢量搜索是一种信息检索方法,支持对内容的数字表示形式进行索引和查询。 由于内容是数字而不是纯文本,因此匹配是基于与查询矢量最相似的矢量,这可实现跨以下类型的匹配:
- 语义或概念相似性。 例如,“dog”和“canine”在概念上相似,但语言上不同。
- 多语言内容,如英语中的“狗”和德语中的“狗”。
- 多个内容类型,如纯文本中的“狗”和狗的图像。
本文概述了 Azure AI 搜索中的矢量搜索,包括支持的方案、可用性和其他 Azure 服务的集成。
矢量搜索支持哪些场景?
矢量搜索支持以下方案:
相似性搜索。 分别使用嵌入模型或开源模型(如 OpenAI 嵌入或 SBERT)对文本进行编码。 然后,使用也编码为矢量的查询检索文档。
混合搜索。 Azure AI 搜索将混合搜索定义为在同一请求中执行矢量搜索和 关键字搜索 。 矢量支持在域级实现。 如果索引包含向量和非函数字段,则可以编写面向两者的查询。 查询并行执行,结果合并为单个响应并相应地进行排名。
多模式搜索。 在 Azure OpenAI 中使用多模式嵌入(如 OpenAI CLIP 或 GPT-4 Turbo 和 Vision) 对文本和图像进行编码,然后查询由这两种内容类型中的矢量组成的嵌入空间。
多语言搜索。 Azure AI 搜索专为扩展性而设计。 如果您拥有以多种语言训练的嵌入模型和聊天模型,可以通过索引端的自定义或内置技能,或通过查询端的向量化工具来调用它们。 若要更好地控制文本翻译,请使用 Azure AI 搜索在混合搜索方案中针对非矢量内容支持的 多语言功能 。
筛选的矢量搜索。 查询请求可以包含矢量查询和筛选表达式。 筛选器适用于文本和数值字段。 它们对于元数据筛选器以及根据筛选条件包括或排除搜索结果非常有用。 虽然矢量字段不可筛选,但可以设置可筛选的文本或数字字段。 搜索引擎可以在执行向量查询之前或之后处理筛选器。
矢量数据库。 Azure AI 搜索存储所查询的数据。 当你需要长期记忆、知识库,或用于检索增强生成(RAG)架构和以矢量为基础的应用程序的数据时,可以将其用作纯矢量索引。
Azure AI 搜索中矢量搜索的工作原理
Azure AI 搜索支持索引、存储和查询搜索索引中的矢量嵌入。 下图显示了矢量搜索的索引编制和查询工作流。
在索引端,Azure AI 搜索使用 最近的邻居算法 将类似的向量放在索引中。 在内部,它会为每个 向量字段创建矢量索引 。
如何将源内容嵌入 Azure AI 搜索,具体取决于处理方法:
对于内部处理,Azure AI 搜索在索引器管道中提供 集成的数据分块和矢量化 。 你提供所需的资源,例如 Azure OpenAI 的终结点和连接信息。 然后,Azure AI 搜索进行调用并处理转换。 此方法需要索引器、受支持的数据源和驱动分块和嵌入的技能组。
在查询端,客户端应用通常通过提示收集用户输入。 可以添加编码步骤来向量化输入,然后将向量查询发送到 Azure AI 搜索索引,以便进行相似性搜索。 与索引一样,可以使用 集成矢量化 对查询进行编码。 对于任何一种方法,Azure AI 搜索都会在结果中返回具有请求的 k
近邻 (kNN) 的文档。
Azure AI 搜索支持并行运行矢量和关键字搜索的 混合方案 ,并返回统一的结果集,这通常比单独提供比矢量或关键字搜索更好的结果。 对于混合搜索,向量和非向量内容都被引入到同一个索引中,用于处理同时运行的查询。
可用性和定价
若要通过门户和编程方式访问矢量搜索,可以使用:
- Azure 门户中的 导入和矢量化数据向导 。
- 搜索服务 REST API。
- 用于 .NET、 Python 和 JavaScript 的 Azure SDK。
- 其他 Azure 产品/服务,例如 Azure AI Foundry。
注意
在 2019 年 1 月 1 日之前创建的一些搜索服务不支持矢量工作负荷。 如果你在尝试将矢量字段添加到架构时收到错误,则原因是服务已过时。 在这种情况下,必须创建新的搜索服务来试用矢量功能。
在 2024 年 4 月 3 日之后创建的搜索服务 为矢量索引提供更高的配额。 如果有较旧的服务,则可能能够 升级服务 以获取更高的向量配额。
Azure 集成和相关服务
Azure AI 搜索在 Azure AI 平台上深度集成。 下表列出了在矢量工作负荷中有用的产品。
产品 | 集成 |
---|---|
Azure AI Foundry | 在聊天操场中,“添加自己的数据”使用 Azure AI 搜索进行基础数据和对话式搜索。 操场是使用数据进行聊天的最简单快捷的方式。 |
Azure OpenAI | Azure OpenAI 提供嵌入模型和聊天模型。 演示和示例针对 text-embedding-ada-002 模型。 我们建议使用 Azure OpenAI 来生成文本嵌入。 |
Azure AI 服务 | 图像检索矢量化图像 API (预览版) 支持图像内容的矢量化。 我们建议使用此 API 来生成图像嵌入。 |
Azure 数据平台:Azure Blob 存储、Azure Cosmos DB、Azure SQL、OneLake | 可以使用索引器自动执行数据引入,然后使用集成矢量化来生成嵌入。 Azure AI 搜索可以自动为 Azure Blob 索引器、 用于 NoSQL 索引器的 Azure Cosmos DB、 Azure Data Lake Storage Gen2、 Azure 表存储和Fabric OneLake 中的矢量数据编制索引。 有关详细信息,请参阅将矢量字段添加到搜索索引。 |
它通常用于开源框架,如 LangChain。