定义
向量数据库(Vector Database)是一种专门用于存储、索引和检索向量数据的数据库系统。这里的“向量”通常是由嵌入模型(Embedding Model)从文本、图片、音频等内容中提取出的一串数字,用来表示内容的语义特征。
传统数据库擅长“精确匹配”,比如查找 ID 等于某个值、标题包含某个关键词的记录。向量数据库擅长的是“相似匹配”:给定一个向量,找出库中与它最接近的若干个向量,也就是语义上最相似的内容。即使用词完全不同,比如“怎么退货”和“申请退款流程”,也能被找到。
工作原理
使用向量数据库通常包括三个环节:
写入。 把文档切分成片段,用嵌入模型转换成向量,连同原文和元数据(如来源、日期、权限)一起存入数据库。
建索引。 如果每次查询都和库里所有向量逐一比较(暴力搜索),数据量大时会非常慢。因此向量数据库会建立“近似最近邻”(ANN)索引,用少量精度换取大幅的速度提升。常见的索引方法包括:
- HNSW:构建多层的近邻图,查询时从上层粗略定位、逐层向下精细查找。
- IVF:先把向量聚成若干簇,查询时只搜索最相关的几个簇。
- 乘积量化(PQ):把向量压缩成更短的编码,降低内存占用、加快比较。
查询。 把用户的问题用同一个嵌入模型转成向量,在索引中找出距离最近的 K 个结果。衡量“接近”的方式通常是余弦相似度、点积或欧氏距离。很多系统还支持在相似搜索的同时按元数据过滤,比如“只搜索 2024 年之后、属于某部门的文档”。
除了专门的向量数据库产品,不少传统数据库和搜索引擎也加入了向量检索能力,例如 PostgreSQL 的 pgvector 扩展;还有像 FAISS 这样的向量检索库,可以嵌入到自己的程序中使用。选型时需要综合考虑数据规模、查询延迟、过滤需求和运维成本。
典型应用
- 检索增强生成(RAG):为大模型检索相关资料片段。
- 语义搜索:按意思而非字面关键词搜索文档、商品、问答。
- 推荐系统:找到与用户兴趣或当前内容相似的物品。
- 以图搜图、以音搜音:在图片、音频库中查找相似内容。
- 去重与聚类:识别内容近似重复的文章或工单。
- 长期记忆:为 AI Agent 存储并按需回忆历史信息。
相关概念
- Embedding(嵌入):向量数据库中存储的数据来源。
- RAG:向量数据库最常见的应用场景之一。
- 语义相似度:衡量向量之间接近程度的指标。
- 关键词检索(如 BM25):常与向量检索结合,形成混合检索。