Skip to content

Latest commit

 

History

History
102 lines (60 loc) · 8.13 KB

File metadata and controls

102 lines (60 loc) · 8.13 KB

向量数据库的崛起:深入解析AI时代的Embedding存储与检索

引言:为什么AI时代需要向量数据库?

随着人工智能(AI)技术的飞速发展,特别是大型语言模型(LLM)的兴起,我们处理的数据类型正在发生根本性的变化。传统的数据库擅长处理结构化数据,如用户信息、订单记录等。然而,在AI时代,我们面对的是海量的非结构化数据,如文本、图片、音频和视频。

如何让机器理解并利用这些非结构化数据?答案是 Embedding

Embedding是一种将非结构化数据转换为高维数值向量的技术。这些向量能够捕捉数据的语义信息。例如,在向量空间中,“国王”和“女王”的向量会很接近,而与“香蕉”的向量则相距甚远。

一旦我们将数据转换成Embedding向量,新的问题就出现了:如何高效地存储和检索这些高维向量?传统的数据库在处理这种高维相似性搜索时力不从心。一个拥有数百万条记录的数据库,如果进行暴力匹配,其计算成本和时间延迟是无法接受的。

向量数据库(Vector Database) 应运而生,它专门为高效存储、管理和检索高维向量数据而设计,成为支撑现代AI应用(如语义搜索、推荐系统、RAG)的关键基础设施。


核心概念:从Embedding到相似性度量

1. 什么是Embedding?

Embedding是将现实世界中的对象(如单词、句子、图片)转换为机器能够理解的数学语言(向量)的过程。这个过程通常由深度学习模型完成。

  • 早期Embedding技术:像 Word2VecGloVe 这样的模型可以为单词生成静态的向量表示。它们成功地捕捉了词与词之间的关系,例如著名的 vector('King') - vector('Man') + vector('Woman') ≈ vector('Queen')。但它们的缺点是无法理解上下文,同一个词在不同句子中总是有相同的向量。

  • 现代 contextualized Embedding:以 BERTGPT 等Transformer模型为代表的技术,能够根据上下文生成动态的词向量。例如,“bank”在“river bank”(河岸)和“investment bank”(投资银行)中的向量表示是完全不同的。这使得Embedding能够更精确地捕捉语义信息。

2. 如何衡量“相似”?

向量数据库的核心任务是进行 相似性搜索,即找到与给定查询向量最相似的向量。这种“相似性”通常通过数学公式来度量:

  • 余弦相似度(Cosine Similarity):计算两个向量之间夹角的余弦值。它衡量的是方向上的一致性,而非绝对距离。取值范围为[-1, 1],值越接近1,表示两个向量越相似。这是最常用的度量方式之一。
  • 欧氏距离(Euclidean Distance):计算两个向量在多维空间中的直线距离。距离越小,表示向量越相似。
  • 曼哈顿距离(Manhattan Distance):计算两个向量在各个维度上差的绝对值之和。

向量数据库的核心挑战与解决方案:ANN索引

如果将查询向量与数据库中的每一个向量都计算一次相似度(即暴力搜索Flat Index),虽然能保证100%的准确率,但当数据量达到百万甚至上亿级别时,搜索延迟将变得无法忍受。

为了在“速度”和“精度”之间找到平衡,向量数据库引入了 近似最近邻(Approximate Nearest Neighbor, ANN) 搜索算法。ANN的目标是牺牲极小的精度来换取百倍甚至千倍的搜索速度提升。

以下是几种主流的ANN索引技术:

1. IVF (Inverted File Index) - 基于聚类的索引

IVF的思路非常直观,类似于信息检索中的倒排索引。

  1. 聚类:在索引构建时,使用K-Means等聚类算法将数据库中的所有向量分成 k 个簇(cluster)。每个簇都有一个中心点(centroid)。
  2. 索引:创建一个索引文件,记录每个簇中心点以及该簇包含的所有向量。
  3. 查询:当一个查询向量进来时,不再与所有向量比较,而是先找到距离最近的几个簇中心点,然后只在这些簇内部进行精确的暴力搜索。

优点:原理简单,易于理解和实现。 缺点:如果最佳匹配的向量恰好在簇的边界之外,可能会被错过。k值的选择对性能影响很大。

2. PQ (Product Quantization) - 基于量化的压缩索引

PQ的核心思想是通过 数据压缩 来减少内存占用和加速距离计算。

  1. 分段:将一个高维向量(如256维)切分成多个低维的子向量(如8个32维的子向量)。
  2. 量化:对每一段子向量分别进行聚类(如K-Means),得到一个“码本”(codebook)。每个子向量都可以用其最近的聚类中心的ID来近似表示。
  3. 压缩存储:原始的高维浮点向量被一个短小的、由ID组成的PQ码(PQ Code)替代,极大地压缩了存储空间。
  4. 近似距离计算:查询时,先计算查询向量与所有码本中聚类中心的距离,然后通过查表的方式快速估算出与数据库中所有压缩向量的距离。

优点:极高的内存压缩率,非常适合海量数据集。 缺点:是一种有损压缩,精度上会有一定的损失。

3. HNSW (Hierarchical Navigable Small World) - 基于图的索引

HNSW是目前性能最好、应用最广泛的ANN算法之一。它的思想是构建一个多层次的“小世界”导航图。

想象一下在一个城市里找人,你不会挨家挨户地敲门。你会先利用高速公路(高层图)快速到达目标区域,然后再切换到普通公路(低层图)进行精确查找。

  1. 分层图结构:HNSW构建一个多层图。最顶层图最稀疏,节点间的连接都是“长连接”,可以实现快速跳转。越往下的图越密集,连接也越“短”,用于精细导航。最底层图包含所有的数据点。
  2. 导航式搜索:搜索从顶层图的一个入口点开始,贪心地选择离查询目标最近的邻居节点进行跳转。当在一个层级找不到更近的节点时,就进入下一层图继续搜索,直到到达最底层。

优点:搜索速度极快,召回率(精度)非常高,并且不依赖于数据的分布。 缺点:索引构建复杂,内存占用相对较大。


核心应用场景

  1. 语义搜索:超越关键词匹配,理解用户查询的真实意图。例如,搜索“夏天穿的透气鞋子”,即使商品描述中没有这些确切的词,也能通过语义相似性找到相关的商品。
  2. 推荐系统:通过计算用户Embedding和物品Embedding的相似度,为用户推荐可能感兴趣的内容、商品或朋友。
  3. 检索增强生成 (Retrieval-Augmented Generation, RAG):这是向量数据库在LLM时代最重要的应用。当用户向LLM提问时,系统首先将问题向量化,在向量数据库中检索相关的知识片段,然后将这些知识片段作为上下文(Context)连同原始问题一起提交给LLM。这极大地减少了LLM的“幻觉”问题,使其能够回答基于私有或实时知识库的问题。

主流向量数据库一览

  • Milvus:一个开源的云原生向量数据库,功能强大,社区活跃。
  • Pinecone:一个完全托管的商业向量数据库服务,以其易用性和高性能著称。
  • Weaviate:另一个强大的开源向量数据库,支持GraphQL接口,并内置了模块化Embedding功能。
  • Qdrant:一个专注于性能和过滤功能的开源向量数据库。
  • Chroma:一个轻量级的、对开发者友好的开源Embedding数据库。

结论

向量数据库不是一个短暂的技术风口,而是AI时代处理非结构化数据的基石。它通过先进的ANN索引技术,解决了高维向量数据的高效存储与检索难题,为语义搜索、推荐系统,特别是RAG等颠覆性应用铺平了道路。

随着AI技术的不断演进,向量数据库也将在性能、易用性和多模态数据支持等方面持续创新,成为每个开发者和企业都必须了解和掌握的核心技术。