Deep Read

Embeddings 向量化

Embeddings 是 RAG 的基础设施之一。它解决的核心问题很简单:如何把人类语言转换成机器可以计算“语义距离”的数字表示。


一、Embeddings 向量化是什么

在数学里,向量(Vector)是一个由多个数值组成的有序数组,可以理解为一个点在高维空间中的坐标。

在 RAG 场景中,向量化就是把一句话、一个段落,甚至一个文档切片,转换成一个固定维度的数值数组。一个文本块对应一个向量,例如:

  • [0.8, -0.3, 0.5, 0.34, 0.12, 1.78, 9.12, 2.34, -0.23, 0.5](10 维)
  • [5, 9, ..., -0.23, 0.5](1024 维)

维度越高,通常能表达更丰富的语义特征,但也意味着更高的存储和计算成本。

image.png

这些向量由 Embedding 模型(嵌入模型) 生成。它和大语言模型一样,底层通常基于 Transformer 架构,但目标不同:

  • 大语言模型侧重“生成下一个 token”
  • Embedding 模型侧重“压缩并表达整段文本的语义特征”

文本输入模型后,会经过分词、编码和多层特征提取,最终输出一个固定维度的句向量。这个向量本质上不是在表示“字面内容”,而是在表示语义位置:语义越接近的文本,在向量空间中的距离通常越近。

image.png

维度选择怎么理解

维度可以理解为“语义描述的精细度”:

  • 维度更高:信息承载更多,检索精度通常更好
  • 维度更低:计算更快、存储更省,但表达能力可能下降
  • 实际选择:本质是精度、延迟、成本三者之间的权衡

还有一个很关键的工程约束:

查询时使用的 Embedding 模型、向量维度,必须与建库时保持一致。

如果知识库是用某个模型生成的 1024 维向量,而查询时换成另一个模型或换成 768 维向量,那么相似度计算就会失真,检索结果也会明显变差。


二、向量相似度如何计算

文本被向量化之后,下一步就是比较“谁和谁更像”。本质上,就是在高维空间中衡量两个向量之间的距离或方向关系。

常见的三种计算方式如下:

  • 余弦相似度(Cosine Similarity)
    比较两个向量夹角的余弦值。夹角越小,方向越一致,相似度越高。
    适合关注“语义方向”而不太关心向量长度的场景,是 RAG 中最常见的方法。

  • 欧式距离(L2 Distance)
    直接计算两个向量在空间中的直线距离。距离越小,说明越相似。
    更强调绝对位置差异。

  • 点积(Dot Product)
    计算两个向量逐维相乘后的和。若向量已做归一化处理,点积和余弦相似度通常非常接近。
    在一些高性能检索系统中比较常见。

image.png

可以简单记忆为:

  • 看方向:余弦相似度
  • 看距离:欧式距离
  • 看计算效率与工程适配:点积

三、为什么 RAG 需要向量数据库

RAG 的两个核心阶段——索引检索——都离不开向量:

  • 索引阶段:把大量文档切片向量化后,需要存起来
  • 检索阶段:把用户问题也向量化,再去库里找到最相似的内容

如果只靠传统数据库做精确匹配,很难高效完成大规模语义搜索。因此,向量数据库的职责就是:

  • 存储海量向量数据
  • 建立高效索引
  • 支持近似最近邻搜索(ANN)
  • 在可接受延迟下返回最相关结果

也就是说,向量数据库本质上是 RAG 的“语义检索引擎”。

image.png


四、主流向量数据库对比

特性 Pinecone Milvus Chroma Faiss
核心亮点 托管服务完善、开箱即用 大规模分布式、性能强 轻量易用、开发友好 高性能向量检索库、索引丰富
开源
典型场景 商业化生产环境、少运维团队 企业级大规模部署 本地实验、原型开发、中小项目 图像检索、推荐系统、研究场景
使用形态 云服务 数据库/集群 嵌入式向量库 算法库

1. Pinecone

  • 主打托管式向量检索服务,几乎不用自己维护底层基础设施
  • 适合希望快速上线、弱化运维复杂度的团队
  • 优点是易用,缺点是闭源且成本相对更高

2. Milvus

  • 由 Zilliz 主导,面向大规模向量检索场景
  • 支持分布式部署、混合搜索和高吞吐检索
  • 更适合企业级生产环境,尤其是数据量大、并发高的场景

3. Chroma

  • 轻量、简单,和 LangChain、LlamaIndex 等生态集成较顺手
  • 很适合做本地知识库、小型 RAG Demo、快速原型验证
  • 优点是上手快,缺点是在超大规模场景下能力有限

4. Faiss

  • Meta 开源的高性能相似度搜索库
  • 强项在于大规模稠密向量搜索、索引压缩与高效近邻检索
  • 严格来说它更像“向量检索引擎/算法库”,而不是完整的数据库产品
  • 很多上层向量系统的底层能力都建立在 Faiss 之上

五、怎么选更合适

如果只做一个简单判断,可以这样理解:

  • 想快速上线、少管基础设施:Pinecone
  • 想做企业级、海量数据、分布式部署:Milvus
  • 想快速实验、本地跑通 RAG:Chroma
  • 想自己掌控底层检索能力或做研究优化:Faiss

选型时重点看四件事:

  • 数据规模有多大
  • 延迟要求有多高
  • 是否需要分布式和高可用
  • 团队更偏“业务开发”还是“底层基础设施掌控”

六、总结

Embeddings 的本质,是把文本映射到高维语义空间,让机器能够计算“语义相近”。

整个 RAG 链路可以概括为:

  1. 文本切片
  2. Embedding 向量化
  3. 向量入库建索引
  4. 查询向量化
  5. 相似度检索
  6. 召回结果交给大模型生成答案

所以,Embedding 决定“语义表达质量”,相似度算法决定“匹配方式”,向量数据库决定“检索效率与工程可落地性”。

这三者一起,构成了 RAG 检索层的核心能力。