向量检索

目前较为流行的向量库:Milvus
核心组成:向量生成、检索方式、距离度量、索引构建、优化算法
向量生成算法
向量生成算法是将文本、图像等数据转换为向量表示的方法,常见的向量生成算法有以下几种:
词袋模型(Bag of Words,BOW)
● 原理:将文本看作一个袋子,忽略单词的顺序,只统计每个单词在文本中出现的次数。通过构建一个词汇表,将每个文本表示为一个向量,向量的维度等于词汇表的大小,向量中的每个元素对应词汇表中某个单词在该文本中的出现频率。
● 优点:简单直观,易于理解和实现,在一些文本分类等任务中能取得一定的效果。
● 缺点:忽略了单词的顺序和语义信息,无法捕捉文本中的语法和语义结构。
词嵌入(Word Embedding)
● 原理:将单词映射到低维向量空间中,使得语义上相似的单词在向量空间中距离较近。常见的词嵌入算法有Word2Vec、GloVe等。以Word2Vec为例,它通过在大规模文本语料上进行训练,利用神经网络模型学习单词的上下文信息,从而得到每个单词的向量表示。
● 优点:能够捕捉单词的语义和句法信息,生成的向量具有较好的语义相似性度量能力,在自然语言处理任务中广泛应用,如文本分类、命名实体识别等。
● 缺点:对于生僻词或未登录词的向量表示可能不准确,且词向量的维度通常较高,计算成本较大。
词向量平均法(Average Word Vectors)
● 原理:先使用词嵌入算法得到每个单词的向量表示,然后将文本中所有单词的向量进行平均,得到文本的向量表示。这种方法假设文本的语义可以通过其包含的单词的语义平均来近似。
● 优点:简单直接,在一些简单的文本分类和信息检索任务中能快速得到文本的向量表示。
● 缺点:忽略了单词在文本中的重要性差异,也没有考虑句子的语法结构和单词之间的语义关系。
TF-IDF算法
● 原理:TF-IDF是一种统计方法,用以评估一个字词对于一个文件集或一个语料库中的其中一份文件的重要程度。TF(Term Frequency)表示词在文档中出现的频率,IDF(Inverse Document Frequency)表示词在整个文档集合中的稀有程度。通过将TF和IDF相乘,得到每个词的TF - IDF值,以此来构建文本的向量表示。
● 优点:能够突出文本中的重要词汇,抑制常见词汇的影响,在信息检索和文本分类等任务中表现良好。
● 缺点:同样忽略了单词的顺序和语义信息,对于文本的语义理解能力有限。
BM25相较于TF-IDF
优点
● 考虑文档长度:通过引入文档长度的调节因子,能够更好地处理不同长度的文档,避免长文档因为词频高而获得过高的得分。
● 性能更优:在很多信息检索任务中,BM25 的性能通常优于 TF - IDF。
卷积神经网络(Convolutional Neural Network,CNN)
● 原理:在处理文本时,CNN通过卷积层和池化层对文本进行特征提取。卷积层使用多个卷积核在文本上滑动,提取局部特征,池化层则对卷积层提取的特征进行压缩和筛选,最终得到文本的向量表示。在处理图像时,CNN通过卷积层、池化层和全连接层等组件,自动提取图像的特征,将图像映射为向量。
● 优点:能够自动提取文本或图像的特征,无需人工设计特征工程,在图像识别、文本分类等任务中取得了显著的成果。
● 缺点:模型结构复杂,训练时间长,需要大量的标注数据。
循环神经网络(Recurrent Neural Network,RNN)及其变体(LSTM、GRU)
● 原理:RNN可以处理序列数据,它通过隐藏状态来记忆之前的信息,并在每个时间步更新隐藏状态,从而生成序列的向量表示。长短期记忆网络(Long - Short Term Memory,LSTM)和门控循环单元(Gated Recurrent Unit,GRU)是RNN的变体,它们通过引入门控机制来更好地控制信息的流动,解决了RNN中的梯度消失和长期依赖问题。
● 优点:特别适合处理具有顺序信息的数据,如文本和时间序列数据,能够有效地捕捉序列中的长期依赖关系。
● 缺点:计算复杂度较高,训练难度较大,处理长序列时可能会出现性能下降。
检索方式(算法)
向量如何存储就是索引构建算法
KNN
蛮力检索算法,胜于召回率但查询效率不高
ANN
是一种近似检索算法,需预先计算向量间的距离,并将距离相近的向量存储在一起,胜于检索速度但会有少量的精度牺牲
常见的包括:
HNSW:HNSW 是一种基于图的数据结构,它通过构建多层图来组织高维向量。在底层图中,每个节点与相邻的节点相连,随着层级的上升,节点之间的连接范围会逐渐扩大。在搜索时,从高层图开始快速定位到大致区域,然后逐步下降到低层图进行精确查找。
● 优点:搜索速度快,尤其是在大规模数据集上表现出色;支持动态插入和删除操作,能够适应数据的实时变化。
● 缺点:构建索引的时间和空间开销相对较大,需要存储图的结构信息。
IVF
PQ :算法将高维向量分解为多个低维子向量,然后对每个子向量进行量化,将其映射到一个离散的码本中。在搜索时,通过比较查询向量和码本中的码字之间的距离,快速筛选出可能的候选向量。
● 优点:可以显著减少存储开销和搜索时间,尤其是在高维向量空间中表现出色。
● 缺点:由于量化过程会引入一定的误差,可能会影响搜索的准确性。

距离度量(召回匹配)
余弦距离
● 定义:余弦距离是通过计算两个向量夹角的余弦值来衡量它们的方向差异。余弦值的范围是 ([-1, 1]),两个向量方向完全相同,余弦值为 1;方向完全相反,余弦值为 -1;相互垂直时,余弦值为 0。
● 公式:对于两个 n 维向量 (\vec
=(A_1,A_2,\cdots,A_n)) 和 (\vec=(B_1,B_2,\cdots,B_n)),它们的余弦相似度 (\text(\vec,\vec)) 计算公式为: (\text(\vec,\vec)=\frac{\vec\cdot\vec}{|\vec||\vec|}=\frac{\sum_A_iB_i}{\sqrt{\sum_A_i2}\sqrt{\sum_B_i2}}) 余弦距离通常定义为 (1 - \text(\vec,\vec))。
● 特点:余弦距离主要关注向量的方向,而不考虑向量的长度。这使得它在文本挖掘、信息检索等领域非常有用,因为在这些场景中,文档的长度可能不同,但只要它们的关键词分布相似,就可以认为它们是相似的。
● 使用场景
○ 信息检索:当用户在搜索引擎中输入关键词进行查询时,搜索引擎会将用户输入的关键词表示为一个向量,然后计算该向量与索引中每个文档向量的余弦距离。例如,用户搜索 “人工智能在医疗领域的应用”,搜索引擎会找到与该查询向量余弦距离较小的文档,这些文档通常与用户的查询主题相关度较高,然后将它们作为搜索结果返回给用户。
○ 文本分类:假设有一个已经标注好类别的文本数据集,如分为 “科技”“娱乐”“体育” 等类别。对于一篇新的待分类文本,将其表示为向量后,计算它与每个类别中代表性文本向量的余弦距离。新文本与哪个类别向量的余弦距离最小,就将其归为该类别。例如,一篇关于 “量子计算的最新研究进展” 的文章,通过计算余弦距离,它与 “科技” 类别中的文本向量更相似,因此会被分类到 “科技” 类别中
点积距离
● 定义:点积是两个向量对应元素乘积之和。点积的结果是一个标量,它反映了两个向量在方向上的一致性程度以及向量的长度信息。
● 公式:对于两个 n 维向量 (\vec
=(A_1,A_2,\cdots,A_n)) 和 (\vec=(B_1,B_2,\cdots,B_n)),它们的点积 (\vec\cdot\vec) 计算公式为: (\vec\cdot\vec=\sum_
A_iB_i) 在一些情况下,为了将点积转换为距离度量,可以使用负点积或者进行归一化处理。
● 特点:点积考虑了向量的长度和方向,当两个向量的长度较长且方向相似时,点积的值会较大。在深度学习中,点积常用于计算神经网络中的权重和输入的乘积。
● 使用场景
○ 全连接层:在神经网络的全连接层中,输入向量与权重矩阵进行点积运算。例如,一个具有多个神经元的全连接层,每个神经元都有一组权重。假设输入是一个表示图像特征的向量,通过与每个神经元的权重向量进行点积,再加上偏置项,得到该神经元的输出。这个过程可以看作是对输入特征进行加权求和,从而实现对图像特征的提取和转换。
○ 注意力机制:在一些自然语言处理任务中,如机器翻译、文本摘要等,注意力机制会使用点积来计算查询向量与键向量之间的相似度得分。例如,在翻译句子时,通过计算当前单词与源语言句子中各个单词的点积得分,来确定当前单词对源语言中不同部分的注意力权重,从而更准确地生成翻译结果
欧式距离
● 定义:欧氏距离是最常见的距离度量方式,它表示在欧几里得空间中两个点之间的直线距离。在向量空间中,欧氏距离衡量了两个向量之间的绝对差异。
● 公式:对于两个 n 维向量 (\vec
=(A_1,A_2,\cdots,A_n)) 和 (\vec=(B_1,B_2,\cdots,B_n)),它们的欧氏距离 (d(\vec,\vec)) 计算公式为: (d(\vec,\vec)=\sqrt{\sum_(A_i - B_i)2})
● 特点:欧氏距离直观地反映了向量之间的空间距离,距离越小表示两个向量越相似。它在许多领域都有广泛应用,如聚类分析、模式识别等。
● 使用场景
○ 地理信息系统(GIS):在地图应用中,需要计算两个地理位置之间的距离。例如,要计算从北京天安门(经纬度:39.915°N,116.397°E)到上海东方明珠塔(经纬度:31.248°N,121.498°E)的距离。可以将经纬度坐标看作是二维平面上的点,使用欧氏距离公式计算它们之间的直线距离(实际应用中可能需要考虑地球的曲率等因素进行修正,但欧氏距离提供了一个基本的计算方法)。
○ 机器人导航:机器人在一个已知的物理空间中移动,需要知道自己与目标物体或地点的距离。例如,机器人要前往房间内的一个特定位置,它通过传感器获取自身位置和目标位置的坐标信息,然后使用欧氏距离来计算从当前位置到目标位置的距离,以便规划移动路径
例如,在文本相似度计算中,余弦距离更合适;在衡量物理空间中两点的距离时,欧氏距离更常用;而点积则在神经网络等领域发挥着重要作用

稀疏检索/稠密检索
稀疏检索
● 基本概念:稀疏检索基于词袋模型,将文档和查询表示为稀疏向量。在这种表示中,向量的维度通常对应于整个词汇表中的单词,而向量的元素值表示该单词在文档或查询中出现的频率或其他相关统计信息(如 TF - IDF 值)。由于大多数文档只包含词汇表中一小部分单词,所以这些向量中大部分元素为零,呈现出稀疏的特点。
● 检索过程:常见的稀疏检索方法包括基于倒排索引的检索,倒排索引记录了每个单词在哪些文档中出现以及出现的位置等信息,通过查找倒排索引可以快速找到包含查询词的文档,然后再计算这些文档与查询的相似度进行排序。
● 优点:稀疏检索的优点是索引结构简单,易于理解和实现,能够快速地对大规模文档集合进行索引和检索。同时,它对于处理精确匹配的查询非常有效,能够准确地找到包含特定关键词的文档。
● 缺点:然而,稀疏检索也存在一些局限性。它过于依赖单词的精确匹配,对于语义相似但用词不同的查询和文档可能无法准确检索到。而且,由于只考虑了单词的出现频率等简单统计信息,忽略了单词之间的语义关系和上下文信息,所以在处理复杂的语义查询时效果可能不太理想

稠密检索
● 基本概念:稠密检索将文档和查询映射为低维的稠密向量,这些向量中的每个元素都有实际的数值,且通常通过深度学习模型等方式学习得到。与稀疏向量不同,稠密向量能够捕捉到文本的语义信息,将文本中的语义特征表示为向量空间中的向量,使得语义相似的文本在向量空间中的距离更近。
● 检索过程:在检索时,同样通过计算查询向量与文档向量之间的相似度(如余弦相似度、欧式距离等)来衡量文档与查询的相关性。由于稠密向量包含了更丰富的语义信息,所以能够更好地处理语义复杂的查询。例如,一些基于深度学习的稠密检索模型会将查询和文档同时输入到模型中,通过模型的编码器将它们分别编码为稠密向量,然后计算向量之间的相似度得分,根据得分对文档进行排序。
● 优点:稠密检索的主要优点是能够更好地处理语义信息,对于语义相似但表述不同的查询和文档有更好的检索效果。它能够利用深度学习模型学习到文本的深层语义特征,从而提高检索的准确性和召回率,尤其在处理复杂的自然语言查询时表现更优。
● 缺点:不过,稠密检索也有一些缺点。训练深度学习模型来生成稠密向量通常需要大量的标注数据和计算资源,训练过程较为复杂和耗时。而且,稠密向量的索引和检索过程相对稀疏检索来说更复杂,需要使用一些专门的向量索引结构和算法来提高检索效率。

评论

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×