1. 向量表示:高维空间中的数据签名
向量是具有方向和大小的量,在数学上表示为多维空间中的坐标。例如,一个N维向量就是具有N个坐标分量的点。其大小(或长度)可通过特定公式计算,而两个向量之间的夹角则反映了它们方向的接近程度,夹角越小,方向越一致。
这一数学特性构成了向量嵌入技术的基石。该技术旨在将文本、图像等非结构化数据转化为高维空间中的向量。通过嵌入编码,语义相近的数据(如同义词、相关图片)会被映射到向量空间中相近的位置,反之,语义差异大的数据则相距较远。这种“以向量相似度度量语义相似度”的能力,是向量数据库超越传统数据库进行精确匹配,实现语义搜索和多模态查询的理论核心。
在实际应用中,面对海量的PB级文本或图像数据,直接基于文件系统进行相似性检索效率极低。因此,标准的做法是:首先使用先进的嵌入模型将原始数据编码为向量,然后将这些“数据签名”导入向量数据库中进行管理。这种方式不仅显著降低了数据管理的复杂度,更能实现毫秒级的语义相似度检索。
2. 表示嵌入:从数据到向量的艺术
向量空间模型(VSM)是嵌入技术的理论基础,它将研究对象(如词语、文档)表示为高维向量,并通过向量间的几何关系(如夹角、距离)来刻画它们的关联。随着神经网络的发展,一系列高效的嵌入方法应运而生。
2.1. 词嵌入
词嵌入技术将词汇映射为实数向量,以捕捉其语义和句法信息。主流模型对比如下:
| 模型 |
核心思想 |
优势 |
局限 |
| Word2Vec |
- CBOW:用上下文预测中心词<br>- Skip-gram:用中心词预测上下文 |
能有效捕捉词语间的语义相似性 |
无法处理未登录词(OOV),对词内部结构不敏感 |
| GloVe |
基于全局词-词共现统计进行矩阵分解学习词向量 |
利用全局统计信息,与Word2Vec形成互补 |
- |
| FastText |
引入子词(subword)概念,词向量由其字符n-gram向量组合而成 |
能为OOV词生成向量,对形态丰富的语言表现更佳 |
- |
2.2. 句子/段落/文档嵌入
将嵌入扩展到更长文本单元是关键。基础方法如对词向量进行平均池化,简单高效但捕捉复杂语义的能力有限。进阶模型则更为强大:
- Doc2Vec:扩展了Word2Vec的思想,通过联合训练段落ID向量来获得整个段落的表示。
- Transformer输出:以BERT为代表的Transformer模型,可以通过提取特殊标记(如[CLS])的输出,或对所有Token输出进行池化,来获得高质量的上下文感知文本嵌入。
- Sentence-BERT (SBERT):在BERT基础上使用孪生或三元组网络结构进行微调,专门优化句子嵌入的语义表征质量,使其非常适合语义搜索任务,尽管计算成本较高。
2.3. 多模态与特定领域嵌入
嵌入技术已超越纯文本范畴:
- 多模态嵌入:旨在将不同模态(如图像、文本)的数据映射到同一向量空间。例如,CLIP模型通过对比学习,使匹配的图文对在共享空间中的余弦相似度最大化,实现了强大的零样本图像分类和跨模态检索。
- 图嵌入:如Node2Vec或图神经网络(GCN、GAT),将图结构中的节点、边表示为向量,保留其拓扑和属性信息。
- 特定领域嵌入:包括推荐系统中的用户/物品嵌入,以及知识图谱中用于链接预测的实体和关系嵌入(如TransE, TransR模型)。
2.4. 嵌入质量评估与协同关系
嵌入向量的质量至关重要,评估分为两类:
- 内在评估:直接考察向量本身的语义特性,如在词语相似度、类比推理任务上的表现。
- 外在评估:将嵌入作为特征输入下游任务(如文本分类、推荐),通过任务性能间接评估。
嵌入与向量数据库存在紧密的共生关系。一方面,高质量的嵌入是向量数据库发挥效用的前提;嵌入的维度、是否归一化、更新策略等直接影响数据库的性能和设计。另一方面,向量数据库为海量嵌入向量的存储、管理和毫秒级检索提供了不可或缺的基础设施,支撑着以下核心应用场景:
- 语义搜索系统
- 大规模推荐系统
- 异常检测与新颖性发现
- 检索增强生成(RAG)——这是当前LLM应用的关键,通过向量数据库快速检索相关知识片段,辅助大模型生成更准确可靠的回答。
3. 向量索引与存储优化
将海量数据转化为向量后,如何高效存储并快速检索成为关键挑战。精确计算所有向量与查询的距离(暴力搜索)在数据量大时不可行,因此近似近邻搜索(ANN)成为核心技术。
3.1. 向量索引原理与高级算法
ANN索引在速度、准确率(召回率)、内存消耗和构建时间之间进行权衡。主流算法可分为以下几类:
- 基于树的索引:如KD-Tree及其改进Annoy,通过划分数据空间构建树结构。高维数据下性能可能下降。
- 基于哈希的索引(LSH):设计哈希函数使相似向量大概率落入同一哈希桶。查询时只需搜索少数桶,但为达到高召回率可能需要大量哈希表。
- 基于量化的索引:通过压缩向量来加速。
- 乘积量化(PQ):将高维向量切分为子向量并分别量化,极大减少存储和计算量,但会引入量化误差。优化乘积量化(OPQ)通过旋转数据来提升效果。
- 基于图的索引:在当前ANN领域表现卓越。
- HNSW(分层的可导航小世界图):构建一个分层图结构,搜索时从顶层稀疏图开始快速导航,逐层细化,最终在底层稠密图中找到近邻。它在召回率和查询速度上通常达到很好的平衡,参数
efConstruction和efSearch影响其性能。
- 混合索引策略:结合多种技术优势。典型代表是IVFADC(倒排文件系统与非对称距离计算):
- 先用聚类(如K-means)将数据划分为多个簇,建立倒排列表。
- 列表中的向量用PQ进行量化压缩。
- 查询时,先找到距离最近的几个簇(由
nprobe参数控制),然后在对应倒排列表的压缩向量中进行搜索计算。
3.2. 向量存储的挑战与高效解决方案
面对数十亿乃至万亿级别的向量,存储面临成本与I/O性能的双重压力。解决方案包括:
- 向量压缩技术:量化(如PQ)本身是一种有损压缩。更极端的二值化嵌入将向量转换为比特位,用汉明距离计算,能极大压缩存储,适用于对精度要求不高的高速场景。
- 分层存储与生命周期管理:根据数据访问频率,将热数据放在内存或高速SSD,冷数据归档至HDD或对象存储。
- 分布式向量存储:通过数据分片(Sharding)将数据分布到多个节点,并结合副本策略实现高可用与容错。
4. 相似度计算与高效向量搜索
4.1. 相似度/距离度量的选择
度量的选择取决于嵌入向量的特性和任务需求:
| 度量 |
特点 |
适用场景 |
| 余弦相似度 |
衡量向量方向一致性,对大小不敏感。L2归一化后等价于点积。 |
文本嵌入相似度比较的常用指标。 |
| 点积(内积) |
计算简单。对未归一化向量,结果受模长影响。 |
L2归一化向量下的高效计算。 |
| 欧氏距离 |
衡量向量空间中的直线距离,对方向和大小都敏感。 |
向量幅值携带重要信息时。 |
| 汉明距离 |
计算二值向量间不同位的数量。 |
配合二值化嵌入使用。 |
4.2. 向量搜索的实现与优化
一次典型的ANN搜索流程包括:查询向量化 -> 索引遍历定位候选集 -> 候选集精确计算 -> (可选)重排序。
为了提升搜索效果,可采用高级优化策略:
- 过滤:在向量相似性搜索基础上,结合元数据(如类别、时间)进行过滤。需巧妙设计预过滤或后过滤策略,以平衡效率与准确性。
- 混合搜索:结合基于关键词的稀疏检索(如BM25)和基于向量的语义检索,取长补短,提升结果全面性。
- 重排序:对ANN返回的Top-K候选结果,使用原始高精度向量或更多特征进行精细排序,弥补索引压缩或近似带来的精度损失。
5. 生态系统:工具、平台与选型考量
一个围绕向量技术构建的丰富生态系统已然形成。从宏观的“向量技术”视角来看,其关键维度包括:向量表示、多类型嵌入、向量数据库、向量索引、存储优化、相似度度量、向量搜索以及整个生态系统。
在嵌入生成侧,开发者拥有强大工具:
- 基础框架:TensorFlow、PyTorch用于构建和训练自定义嵌入模型。
- 专用库:Gensim(Word2Vec, Doc2Vec)、Sentence-Transformers(预训练句子嵌入模型)、Hugging Face Transformers(海量预训练Transformer模型),极大简化了高质量嵌入的获取。
在应用编排侧,一些平台工具降低了AI应用开发门槛,并深度集成向量数据库以优化检索:
- Dify:开源LLM应用开发平台,提供可视化Prompt编排、数据集管理和向量数据库集成。
- FastGPT:专注于RAG场景的开源知识库问答系统,支持文档导入、自动向量化及可视化工作流编排。
- TongAgentPlatform:企业级智能体平台,集成大模型与向量数据库,支持通过拖拉拽快速构建AI应用,并提供多维度运维监控。
这些编排工具通过集成向量索引与搜索能力,推动了RAG等应用场景的落地,并在混合检索、多路召回等方面进行性能优化,整体提升了语义理解与精准问答的效果。
进行技术选型时,需要综合评估嵌入模型的质量、索引算法的性能(召回率、延迟、内存占用)、存储方案的扩展性,以及整个生态系统与工具的成熟度和社区支持。
参考资料
[1] 向量数据库(Vector Databases)基本技术原理, 微信公众号:mp.weixin.qq.com/s/Nf6sQ_FdP3sA2GrWLbPwuw
版权声明:本文由 云栈社区 整理发布,版权归原作者所有。