定义

向量数据库(Vector Database)是一种专门用于存储、索引和检索向量数据的数据库系统。这里的“向量”通常是由嵌入模型(Embedding Model)从文本、图片、音频等内容中提取出的一串数字,用来表示内容的语义特征。

传统数据库擅长“精确匹配”,比如查找 ID 等于某个值、标题包含某个关键词的记录。向量数据库擅长的是“相似匹配”:给定一个向量,找出库中与它最接近的若干个向量,也就是语义上最相似的内容。即使用词完全不同,比如“怎么退货”和“申请退款流程”,也能被找到。

工作原理

使用向量数据库通常包括三个环节:

写入。 把文档切分成片段,用嵌入模型转换成向量,连同原文和元数据(如来源、日期、权限)一起存入数据库。

建索引。 如果每次查询都和库里所有向量逐一比较(暴力搜索),数据量大时会非常慢。因此向量数据库会建立“近似最近邻”(ANN)索引,用少量精度换取大幅的速度提升。常见的索引方法包括:

  • HNSW:构建多层的近邻图,查询时从上层粗略定位、逐层向下精细查找。
  • IVF:先把向量聚成若干簇,查询时只搜索最相关的几个簇。
  • 乘积量化(PQ):把向量压缩成更短的编码,降低内存占用、加快比较。

查询。 把用户的问题用同一个嵌入模型转成向量,在索引中找出距离最近的 K 个结果。衡量“接近”的方式通常是余弦相似度、点积或欧氏距离。很多系统还支持在相似搜索的同时按元数据过滤,比如“只搜索 2024 年之后、属于某部门的文档”。

除了专门的向量数据库产品,不少传统数据库和搜索引擎也加入了向量检索能力,例如 PostgreSQL 的 pgvector 扩展;还有像 FAISS 这样的向量检索库,可以嵌入到自己的程序中使用。选型时需要综合考虑数据规模、查询延迟、过滤需求和运维成本。

典型应用

  • 检索增强生成(RAG):为大模型检索相关资料片段。
  • 语义搜索:按意思而非字面关键词搜索文档、商品、问答。
  • 推荐系统:找到与用户兴趣或当前内容相似的物品。
  • 以图搜图、以音搜音:在图片、音频库中查找相似内容。
  • 去重与聚类:识别内容近似重复的文章或工单。
  • 长期记忆:为 AI Agent 存储并按需回忆历史信息。

相关概念

  • Embedding(嵌入):向量数据库中存储的数据来源。
  • RAG:向量数据库最常见的应用场景之一。
  • 语义相似度:衡量向量之间接近程度的指标。
  • 关键词检索(如 BM25):常与向量检索结合,形成混合检索。

参考:HNSW 论文、FAISS(GitHub)、pgvector(GitHub)