基础篇| 向量检索时代

720 阅读6分钟

01 什么是向量检索

说到检索,我们头脑浮现出来的关键词,基本是“谷歌”、“百度“、”bing“等搜索巨头,像很多企业内部也有类似信息检索系统, 这些检索系统表现各异。

向量搜索是一种基于深度学习模型将文本转换为高维向量的方法。这些向量可以表示文本、视频、图片等的语义信息,即含义和主题。通过计算向量之间的相似度或距离,我们可以找到与给定查询最相关的文档。说得通俗一点,就是换一种编码格式表达数据,这种编码格式更具有语义特征, 一旦特征进入更高、更抽象维度,很容易表达各种数据,包括但不限文本、语音、图片等。从某种意义实现表达数据的大一统。

image.png

随着大数据和人工智能时代的到来,产生了各种各样的海量数据,比如图片、文本、视频和语音等非结构化数据,这些数据可以通过人工智能技术提取出特征向量,然后通过对这些特征向量的计算和检索来实现对非结构化数据的分析和检索。

向量检索的应用场景越来越广泛。在信息检索领域,向量检索可以用于检索系统、推荐系统、问答系统等,通过计算文档和查询向量之间的相似度,快速地找到与用户需求相关的信息。此外,在大语言模型和生成式AI场景,向量索引作为向量数据的底层存储,也得到了广泛的应用。

相对传统关键词匹配,向量检索有以下的优点:

  1. 丰富的语义信息:向量检索技术能够将文本信息转化为向量形式,这些向量包含了丰富的语义信息,有助于理解用户的查询意图。比如我们中文文字不同,但是表示含义相近(爸爸 v.s. 父亲)

  2. 可度量性:向量之间的相似度可以通过特定的度量方式进行计算,使得相关性评价更加客观和准确。

  3. 抗噪声能力:向量空间模型具有较好的抗噪声能力,能够处理含有拼写错误、停用词等问题的文本。

  4. 提高匹配速度:在大量数据匹配时候, 向量检索从计算角度来说是优于传统的关键词查找。

02 向量检索系统

2.1 向量检索组成

一个完整的向量检索系统, 应具有以下的组件(以文档向量检索为例):

image.png

(1)Embedding 向量化模型,将非结构化的数据,转化成向量特征。让数据具有空间矢量特征。Embedding也是一种模型,相对LLM而言,更加轻量。

image.png (2)Vector Store 向量数据库,永久存储向量化数据。当我们数据量比较大时候,需要向量存储管理数据库。现在主流的向量数据库也是层出不穷。

数据库名称

说明

地址

Faiss

Meta的Faiss是一个用于高效相似性搜索和密集向量聚类的库。它包含搜索任意大小的向量集的算法。支持CPU和GPU版本。

https://github.com/facebookresearch/faiss

Milvus

Milvus是一个开源矢量数据库,可以管理万亿矢量数据集,支持多种矢量搜索索引和内置过滤。

https://milvus.io/

Weaviate

Weaviate是一个开源向量数据库,允许你存储数据对象和来自你最喜欢的 ML 模型的向量嵌入,并无缝扩展到数十亿个数据对象。

https://github.com/weaviate/weaviate

当然远不止这些向量数据库, 传统的NoSql数据库和关系型数据库也渐渐支持向量检索和存储,比如Nosql的Elasticsearch和MongoDB。关系型数据库的PostgreSQL。

2.2 向量检索系统检索步骤

向量检索主要分为三个步骤:

(1)将文本、图像、语音等原始数据经过特征抽取,模型预估,最终表征为向量集合;

(2)对输入Query采用类似的方式表征为向量;

(3)在向量索引中找到与查询向量最相似的K个结果。一种简单直接的检索方式是与向量集合进行逐一比较,找到与查询向量最相似的向量。这种方法也被称为暴力检索。在大数据量或者高维度场景中,暴力检索的耗时和计算资源消耗巨大,无法在现实场景中直接使用。

现在解决(3)中检索问题主流的方案有:

(1)业界提出ANN(Approximate Nearest Neighbor)近邻检索方案:通过构建有效索引,减少向量计算量,牺牲一定的召回精度以换取更高的检索速率。

(2)研究如何通过GPU的并行计算能力,加速向量相似计算。因为GPU在向量计算有计算优势。

03 向量检索适用场景

向量搜索在一定程度屏蔽了多模态数据源, 但是向量搜索并不是一种万能的搜索技术,它并不适合所有的场景和需求。我们需要根据不同的因素,如数据源,用户,需求等,来选择合适的搜索技术。以下是一些常见的场景和建议:

(1)跨模态数据:如果数据源是多模态或跨模态的文档,例如图像,视频,音频等,且用户需要基于文本进行搜索,那么向量搜索是一个很好的选择。向量搜索可以支持多模态和跨模态的搜索,而不需要进行特征提取或转换。

(2)跨语种数据:如果数据源是多语言或跨语言的文本,例如社交媒体,评论,反馈等,且用户需要基于不同语言进行搜索,那么向量搜索是一个很好的选择。向量搜索可以支持多语言和跨语言的搜索,而不需要进行翻译或对齐。

(3)偏向语义方式检索:比如推荐系统、智能客服客服。

04 向量和LLM结合实践

大语言模型与搜索技术相结合的方式,比较熟悉的是Rag的方式,可以利用大语言模型的能力,处理自然语言中的复杂和模糊的表达方式,捕捉文本之间的语义关系,支持多语言和跨语言的搜索,支持多模态和跨模态的搜索等**。**

之前有专门写过一篇RAG文章《应用篇|  深入浅出LLM应用之RAG》,大家有兴趣可以去观看。

推荐阅读:

选择篇| 微调 VS RAG

应用篇|  深入浅出LLM应用之RAG

更多合集文章请关注我的公众号,一起学习一起进步: