Azure Machine Learning - Azure AI 搜索中的矢量搜索

矢量搜索是一种信息检索方法,它使用内容的数字表示形式来执行搜索方案。 由于内容是数字而不是纯文本,因此搜索引擎会匹配与查询最相似的矢量,而不需要匹配确切的字词。本文简要介绍了 Azure AI 搜索中的矢量支持。 其中还解释了与其他 Azure 服务的集成,以及与矢量搜索开发相关的术语和概念

关注TechLead,分享AI全维度知识。作者拥有10+年互联网服务架构、AI产品研发经验、团队管理经验,同济本复旦硕,复旦机器人智能实验室成员,阿里云认证的资深架构师,项目管理专业人士,上亿营收AI产品研发负责人。

file

Azure AI 搜索中的矢量搜索是什么?

矢量搜索是一项新功能,用于从搜索索引为矢量嵌入编制索引,以及存储和检索矢量嵌入。 可以使用它来助力相似性搜索、多模式搜索、推荐引擎或实现检索增强生成 (RAG) 体系结构的应用程序。

下图显示了矢量搜索的索引编制和查询工作流。

file

在索引编制端,可以准备包含嵌入的源文档。 尽管集成矢量化目前是作为公共预览版提供的,但正式版 Azure AI 搜索不会生成嵌入。 如果你需要遵守非预览版功能策略,则你的解决方案应包含对 Azure OpenAI 或其他模型的调用,这些模型可以将图像、音频、文本和其他内容转换为矢量表示形式。 将_矢量字段_添加到 Azure AI 搜索上的索引定义中。 使用包含矢量的文档有效负载加载索引。 索引现在可供查询。

在查询端,可以在客户端应用程序中收集查询输入。 添加一个用于将输入转换为矢量的步骤,然后将矢量查询发送到 Azure AI 搜索上的索引以进行相似性搜索。 Azure AI 搜索在结果中返回包含所请求的 k 个最近邻域 (kNN) 的文档。

可以将矢量数据与字母数字内容一起作为文档中的字段编制索引。 矢量查询可以单独发出,也可以与筛选器和其他查询类型(包括同一搜索请求中的字词查询(混合搜索)和语义排名)结合发出。

可用性和定价

矢量搜索作为所有区域中所有 Azure AI 搜索层级的一部分提供,不收取额外的费用。

备注

在 2019 年 1 月 1 日之前创建的一些较旧搜索服务部署在不支持矢量工作负载的基础结构上。 如果你在尝试将矢量字段添加到架构时收到错误,则原因是服务已过时。 在这种情况下,必须创建新的搜索服务来试用矢量功能。

矢量搜索支持哪些方案?

矢量搜索适合的方案包括:

  • 对文本进行矢量搜索。 使用嵌入模型(例如 OpenAI 嵌入)或开源模型(例如 SBERT)对文本进行编码,并使用同样编码为矢量的查询检索文档。

  • 跨不同数据类型进行矢量搜索(多模式)。 对图像、文本、音频和视频甚至它们的混合形式进行编码(例如,使用 CLIP 等模型),并对它们执行相似性搜索。

  • 多语言搜索。 使用多语言嵌入模型在单个矢量空间中以多种语言表示文档,以查找文档,无论它们采用哪种语言。

  • 混合搜索。 矢量搜索是在字段级别实现的,这意味着,你可以生成包含矢量字段和可搜索文本字段的查询。 查询将并行执行,结果将合并为单个响应。 (可选)添加[语义排名],以使用为必应提供支持的相同语言模型进行 L2 重新排名,从而获得更高的准确度。

  • 筛选的矢量搜索。 查询请求可以包含矢量查询和[筛选表达式]。 筛选器适用于文本和数字字段,可用于元数据筛选,并且在根据筛选条件包含或排除搜索文档时非常有用。 尽管矢量字段本身不可筛选,但你可以设置可筛选的文本或数字字段。 搜索引擎可以在执行矢量查询之前或之后处理筛选器。

  • 矢量数据库。 使用 Azure AI 搜索作为矢量存储来充当大型语言模型 (LLM) 或其他应用程序的长期内存或外部知识库。 例如,对于检索增强生成 (RAG) 应用程序,可以将 Azure AI 搜索用作 [Azure 机器学习提示流中的_矢量索引_]。

可以使用其他 Azure 服务来提供嵌入和数据存储。

  • Azure OpenAI 提供嵌入模型。 演示和示例针对 [text-embedding-ada-002] 和其他模型。 我们建议使用 Azure OpenAI 来生成文本嵌入。

  • [图像检索矢量化图像 API(预览版)]支持图像内容的矢量化。 我们建议使用此 API 来生成图像嵌入。

  • Azure AI 搜索可以自动为来自两个数据源的矢量数据编制索引:[Azure Blob 索引器]和 [Azure Cosmos DB for NoSQL 索引器]。

  • LangChain 是用于开发由语言模型提供支持的应用程序的框架。 使用 Azure AI 搜索矢量存储集成可以简化使用 LLM 的、将 Azure AI 搜索用作矢量数据存储的应用程序的创建。

  • 语义内核是一个轻型 SDK,可用于将 AI 大型语言模型 (LLM) 与传统编程语言集成。 它很适合用于在将输入发送到嵌入模型的较大工作流中对大型文档进行分块。

矢量搜索概念

如果你不熟悉矢量,本部分将解释一些核心概念。

关于矢量搜索

矢量搜索是一种信息检索方法,其中的文档和查询表示为矢量而不是纯文本。 在矢量搜索中,机器学习模型生成源输入(可以是文本、图像、音频或视频内容)的矢量表示形式。 使用内容的数学表示形式可为搜索方案提供共同的基础。 如果所有内容都是矢量,则查询可以在矢量空间中查找匹配项,即使关联的原始内容与查询位于不同的媒体中或采用不同的语言。

为何使用矢量搜索

矢量可以使用机器学习模型来捕获上下文中单词和短语的含义,而不是仅仅依赖于词法分析和单个查询字词的匹配,因而克服了传统的基于关键字的搜索的局限性。 通过捕获查询的意图,即使文档中不存在确切的字词,矢量搜索也可以返回符合用户需求的更相关结果。

此外,矢量搜索可应用于不同类型的内容,例如图像和视频,而不仅仅是文本。 这使得新的搜索体验成为可能,例如多语言应用程序中的多模式搜索或跨语言搜索。

嵌入和矢量化

_嵌入_是内容或查询的一种特定矢量表示形式,它们由捕获文本语义或其他内容(例如图像)的表示形式的机器学习模型创建。 自然语言机器学习模型已基于大量的数据进行训练,可以识别单词之间的模式和关系。 在训练过程中,他们会试着在一个称为_编码器_的中间步骤中将任何输入表示为实数矢量。 训练完成后,可以修改这些语言模型,使中间矢量表示形式成为模型的输出。 生成的嵌入是高维矢量,其中具有相似含义的单词在矢量空间中距离更近,如了解嵌入 (Azure OpenAI)中所述。

矢量搜索在检索相关信息方面的有效性取决于嵌入模型将文档和查询的含义提取到结果矢量中的有效性。 最佳模型已基于其所代表的数据类型进行了全面的训练。 你可以评估现有模型(例如 Azure OpenAI text-embedding-ada-002),引入自己的、已直接在问题空间中训练的模型,或者微调通用模型。 Azure AI 搜索不会对你选择的模型施加限制,因此请选择最适合你的数据的模型。

若要为矢量搜索创建有效的嵌入,必须考虑到输入大小限制。 我们建议在生成嵌入之前按照数据分块准则进行操作。 这种最佳做法可确保嵌入准确捕获相关信息并实现更高效的矢量搜索。

什么是嵌入空间?

_嵌入空间_是矢量查询的语料库。 在搜索索引中,它是填充了来自同一嵌入模型的嵌入的所有矢量字段。 机器学习模型通过将各个单词、短语或文档(用于自然语言处理)、图像或其他形式的数据映射到由实数(表示高维空间中的坐标)矢量组成的表示形式,来创建嵌入空间。 在此嵌入空间中,相似的项位置相互靠近,而不相似的项位置相距较远。

例如,谈论不同种类的狗的文档将在嵌入空间中紧密聚类到一起。 有关猫的文档也会相互接近,但与狗的聚类相距较远,不过它们仍属于动物的邻域。 云计算等不同的概念则与此有很大的差异。 在实践中,这些嵌入空间是抽象的,没有明确定义的、人类可解释的含义,但核心思想保持不变。

最近邻域搜索

在矢量搜索中,搜索引擎将搜索嵌入空间中的矢量,以识别那些接近查询矢量的矢量。 此技术称为_最近邻域搜索_。 最近邻域有助于量化项之间的相似性。 矢量高度相似性表明原始数据也相似。 为了帮助实现快速的最近邻域搜索,搜索引擎将执行优化或采用数据结构或数据分区来减少搜索空间。 每种矢量搜索算法都会提供不同的方法来解决此问题,并权衡不同的特征,例如延迟、吞吐量、召回率和内存。 为了计算相似性,相似性指标提供了用于计算此距离的机制。

Azure AI 搜索目前支持以下算法:

  • 分层可导航小世界 (HNSW):HNSW 是一种领先的 ANN 算法,它已针对数据分布未知或可能频繁变化的高召回率、低延迟应用程序进行优化。 它将高维数据点组织成分层图形结构,从而实现快速且可缩放的相似性搜索,同时允许在搜索准确度和计算成本之间进行可优化的权衡。 由于该算法要求所有数据点都驻留在内存中以便能够快速随机访问,因此它会消耗[矢量索引大小]配额。

  • 穷举 K 最近邻域(KNN):计算查询矢量与所有数据点之间的距离。 这是一种计算密集型算法,因此最适合较小的数据集。 由于该算法不要求快速随机访问数据点,因此不消耗矢量索引大小配额。 但是,该算法将提供全局最近邻域集。

在索引定义中,可以指定一种或多种算法,然后为每个矢量字段指定要使用的算法:

  • [创建矢量索引],以指定索引和字段中的算法。

  • 对于穷举 KNN,请使用面向任一 REST API 版本的 [2023-11-01]、[2023-10-01-Preview]或 Azure SDK Beta 版库。

在索引创建过程中用于初始化索引的算法参数是不可变的,并且在索引生成后无法更改。 但是,可以修改影响查询时特征 (efSearch) 的参数。

此外,指定 HNSW 算法的字段还支持使用[查询请求]参数 "exhaustive": true 执行穷举 KNN 搜索。 但是反过来则不适用。 如果针对 exhaustiveKnn 将某个字段编制索引,则无法在查询中使用 HNSW,因为实现高效搜索的其他数据结构不存在。

近似最近邻域

近似最近邻域搜索 (ANN) 是一种用于在矢量空间中查找匹配项的算法。 此类算法采用不同的数据结构或数据分区方法来显著减少搜索空间,以加速查询处理。

ANN 算法牺牲了一些准确度,但提供了可缩放且更快的近似最近邻域检索,这使得它们非常适合用于在现代信息检索应用程序中平衡准确度和效率。 你可以调整算法的参数,以微调搜索应用程序的召回率、延迟、内存和磁盘占用空间要求。

Azure AI 搜索将 HNSW 用于其 ANN 算法。

关注TechLead,分享AI全维度知识。作者拥有10+年互联网服务架构、AI产品研发经验、团队管理经验,同济本复旦硕,复旦机器人智能实验室成员,阿里云认证的资深架构师,项目管理专业人士,上亿营收AI产品研发负责人。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/199300.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【grafana | clickhouse】实现展示多折线图

说明: 采用的是 Visualizations 的 Time series,使用的 clickhouse 数据源 在工作中遇到了一个需求,写好了代码,需要在grafana上展示在一个项目中所有人的,随时间的代码提交量变化图 目前遇到的问题:展示…

MySQL 备份和恢复

目录 一.MySQL数据库的备份的分类 1.1.数据备份的重要性 1.2.数据库备份的分类和备份策略 1.3.常见的备份方法 二.MySQL完全备份 2.1.什么是完全备份 2.2.完全备份的优缺点 2.3.实现物理冷备份与恢复 1)实现流程 2)前置准备 3)实现…

go语言学习-go环境安装

1、安装Go 1.1 下载安装 go官网 找对应电脑的版本进行安装即可。 点击安装包,直接下一步下一步即可,安装目录可以自行设置一下。 1.2 验证 windows通过cmd验证。 linux或者mac可以通过自带终端执行测试。 2、配置环境变量 2.1 windows 找到系统…

vue3 setup展示数据

效果图 1.创建数据 content.js import { reactive } from vueconst data reactive({color:red,title: 二十四节气,subTitle: 节气,是干支历中表示自然节律变化以及确立“十二月建”(月令)的特定节令。,list: [{name: "立春",con…

用向量数据库Milvus Cloud搭建GPT大模型+私有知识库的定制AI助手——PPT大纲助手

随着人工智能技术的不断发展,AI助手在各行各业中扮演着越来越重要的角色。在商业领域,PPT演示是一种常见的沟通方式,而定制化的PPT大纲助手能够极大地提高PPT制作效率和质量。本文将介绍如何利用向量数据库Milvus Cloud搭建GPT大模型和私有知识库,构建一款高效的PPT大纲助手…

Thales安全解决方案:国家网络安全的关键

随着信息技术的飞速发展,网络安全问题日益凸显。在这个背景下,Thales安全解决方案正成为提高国家网络安全的关键。本文将探讨Thales安全解决方案如何为国家网络安全保驾护航。 一、Thales安全解决方案概述 Thales安全解决方案是一种全方位的网络安全防护…

简单回顾矩阵的相乘(点乘)230101

[[1 0 1][1 1 0]] [[3 0 0 3][2 2 1 3][1 3 1 1]] [[4. 3. 1. 4.][5. 2. 1. 6.]]乘以 c11 a11*b11 a12*b21 a13*b31 1*3 0*2 1*1 4 c12 a11*b12 a12*b22 a13*b32 1*0 0*2 1*3 3 c13a11*b13 a12*b23a13*b33 c14a11*b14 a12*b24a13*b34 c21a21*b11 a22*b21 a23*b…

键盘控制ROS车运动

键盘控制ROS车运动 上位机 使用pyseria库与stm32单片机进行通信控制 #!/usr/bin/env python # -*- coding: utf-8 -*import sys, select, termios, tty import serialmsg """ ---------------------------w a x ds w : x a : y s : -x …

如何快速将txt类型的日志文件转换为excel表格并进行数据分析报表统计图(如:饼图、折线图、柱状图)?

打开excel创建空白文档 选择一个txt文件 一动下面箭头↑竖线,可以拖拽左右调整要判断转换为一列的数据宽度 根据情况设置不同列的数据格式(每一列可以点击),设置好后点击【完成】 设置单元格数据格式 手动插入第一行为每列数据的…

如何使用贝锐花生壳内网穿透远程访问JupyterNotebook?

在数据科学领域,Jupyter Notebook 已成为处理数据的必备工具。 其用途包括数据清理和探索、可视化、机器学习和大数据分析。Jupyter Notebook的安装非常简单,如果你是小白,那么建议你通过安装Anaconda来解决Jupyter Notebook的安装问题&#…

俄罗斯方块游戏制作

创建包和文件夹 1.创建小方块类 package eluosifangkuai; import java.awt.image.BufferedImage; import java.util.Objects;/*** author xiaoZhao* date 2022/5/7* describe* 小方块类* 方法: 左移、右移、下落*/ public class Cell {// 行private int row;//…

Midjourney绘画提示词Prompt参考学习教程

一、工具 SparkAi: SparkAi创作系统是基于OpenAI很火的ChatGPT进行开发的Ai智能问答系统和Midjourney绘画系统,支持OpenAI-GPT全模型国内AI全模型。本期针对源码系统整体测试下来非常完美,可以说SparkAi是目前国内一款的ChatGPT对接OpenAI软…

AIGC ChatGPT4对Gbase数据库进行总结

ChatGPT4 用一个Prompt完成Gbase数据库的总结。 AIGC ChatGPT 职场案例 AI 绘画 与 短视频制作 PowerBI 商业智能 68集 数据库Mysql 8.0 54集 数据库Oracle 21C 142集 Office 2021实战应用 Python 数据分析实战, ETL Informatica 数据仓库案例实战 Excel 2021实操 …

硬件开发笔记(十二):RK3568底板电路电源模块和RTC模块原理图分析

若该文为原创文章,转载请注明原文出处 本文章博客地址:https://hpzwl.blog.csdn.net/article/details/134429973 红胖子网络科技博文大全:开发技术集合(包含Qt实用技术、树莓派、三维、OpenCV、OpenGL、ffmpeg、OSG、单片机、软硬…

广州华锐互动VRAR | VR课件内容编辑器解决院校实践教学难题

VR课件内容编辑器由VR制作公司广州华锐互动开发,是一款专为虚拟现实教育领域设计的应用,它能够将传统的教学内容转化为沉浸式的三维体验。通过这款软件,教师可以轻松创建和编辑各种虚拟场景、模型和动画,以更生动、直观的方式展示…

ClickHouse的 MaterializeMySQL引擎

1 概述 MySQL 的用户群体很大,为了能够增强数据的实时性,很多解决方案会利用 binlog 将数据写入到 ClickHouse。为了能够监听 binlog 事件,我们需要用到类似 canal 这样的第三方中间件,这无疑增加了系统的复杂度。 ClickHouse 20.…

Unity——URP相机详解

2021版本URP项目下的相机,一般新建一个相机有如下组件 1:Render Type(渲染类型) 有Base和Overlay两种选项,默认是Base选项 Base:主相机使用该种渲染方式,负责渲染场景中的主要图形元素 Overlay(叠加):使用了Oveylay的…

多维时序 | MATLAB实现PSO-BiGRU-Attention粒子群优化双向门控循环单元融合注意力机制的多变量时间序列预测

多维时序 | MATLAB实现PSO-BiGRU-Attention粒子群优化双向门控循环单元融合注意力机制的多变量时间序列预测 目录 多维时序 | MATLAB实现PSO-BiGRU-Attention粒子群优化双向门控循环单元融合注意力机制的多变量时间序列预测预测效果基本介绍模型描述程序设计参考资料 预测效果 …

Ajax基础(应用场景|jquery实现Ajax|注意事项)

文章目录 一、Ajax简介二、基于jquery实现Ajax三、使用Ajax注意的问题1.Ajax不要与form表单同时提交2.后端响应格式问题3、使用了Ajax作为请求后的注意事项 一、Ajax简介 AJAX(Asynchronous Javascript And XML)翻译成中文就是“异步Javascript和XML”。…

面试题c/c++ --STL 算法与数据结构

1.6 STL 模板 模板底层实现:编译器会对函数模板进行两次编译, 在声明的地方对模板代码本身进行编译, 在调用的地方对参数替换后的代码进行编译。 模板传参分析 模板重载 vector 是动态空间, 随着元素的加入, 它的内…