向量数据库演变
第13章 · RAG 进化树 里提到语义检索需要”把文本变成向量”。这篇解释:向量是什么、怎么存的、存的地方怎么从零到现在的。
向量是什么
一句话:把一句话变成一串数字。 意思相近的话,数字也相近。
比如”今天天气真好”可能变成 [0.23, 0.87, -0.41, ...] 这样一串数字。“今天天气不错”也变成一串数字——因为意思相近,这两串数字在数学上离得很近。
这就叫”向量”——一段文字的数学表示。有了向量,搜索”苹果手机”的时候,系统不需要知道”iPhone”这个词——它看到”iPhone”的向量和”苹果手机”的向量很接近,就把它们归为一类。
最早:没有专门的向量数据库
在 AI 时代之前,搜索用 Elasticsearch(2010 年诞生)。它的核心是倒排索引——建一个”哪个词出现在哪些文档里”的大表。你搜”头疼”,它查表找到所有包含”头疼”的文档,按相关度排序给你。
这是关键词搜索——不懂语义,但快、稳、准。到今天,Elasticsearch 依然是生产环境最常见的搜索引擎 1。
2017:Facebook 开源 Faiss
Faiss(读作”fice”,意思是”Facebook 的相似度搜索”)不是数据库——它是一个算法库,专门做一件事:在高维向量中快速找到最相似的几个。
关键贡献:把向量相似度搜索从”实验室”变成了”工业可用”。能处理十亿级的向量,支持 GPU 加速。
但它只是一个库——没有存储管理、没有权限控制、没有分布式。用 Faiss 需要你自己搭一套应用层包装它。后来的专用向量数据库,底层引擎大多借鉴了 Faiss 2。
2020 前后:专用向量数据库出现
在 Faiss 的基础上加了数据库能力:
- Milvus(2019 年开源):第一个成熟的专用向量数据库。支持分布式、多种索引算法
- Pinecone(2021 年商用):云服务,不需要自己部署,开箱即用
- Qdrant(2021 年):Rust 写的,性能极致
- Weaviate(2019 年):向量 + 传统搜索一体
它们和 Faiss 的关系,就像导航 App(专用向量数据库)和底层地图数据(Faiss 的算法)——一个提供底层能力,一个提供完整产品 3。
Elasticsearch 自己也进化了
ES 没有停留在关键词搜索时代。2019 年(7.x 版本)开始支持存储向量。2022 年(8.x 版本)支持原生向量搜索——可以直接在 ES 里做语义检索。
很多公司不需要额外部署专用向量数据库——Elasticsearch 本来就在用,升级一下就能支持向量搜索。这是 2024-2025 年最常见的做法:ES 做混合检索(关键词 + 向量),一套系统搞定 4。
2021:回到传统数据库
pgvector 是一个数据库扩展——在传统数据库里加了一列向量字段,就能做向量搜索了。这里说的”传统数据库”就是那种用表格存数据的软件,平时用 SQL(一种查询语言,就像你用微信搜索聊天记录一样,只是对象是数据库里的表格数据)来查数据。pgvector 让它也能搜向量。
很多公司本来就有 PostgreSQL。与其部署一个新的专用向量数据库,不如加个扩展。pgvector 2024-2025 年迅速流行起来——性能提升到可以支持生产环境。
一张表看懂演变
| 时间 | 方案 | 能干什么 | 不能干什么 |
|---|---|---|---|
| 2010 | Elasticsearch | 关键词搜索,稳准快 | 不懂语义 |
| 2017 | Faiss | 极速向量搜索 | 不是数据库,要自己封装 |
| 2019+ | Milvus/Pinecone | 专业存向量,什么都能搜 | 额外部署,多一套系统 |
| 2021+ | pgvector | SQL 里搜向量 | 性能不如专用库 |
| 2022+ | ES 8.x | 关键词 + 向量一起搜 | 向量性能不如专用库 |
现在怎么选
- 已经有 ES 的公司 -> 升级到 8.x,关键词 + 向量一起用
- 已经有 PostgreSQL 的公司 -> 装 pgvector,不引入新系统
- 专门做 AI 搜索的公司 -> Milvus 或 Pinecone,性能拉满
没有绝对的好坏——看你的场景和已有基础设施。
相关笔记
- 第13章 · RAG 进化树 — 向量数据库是检索的基础设施
- AI 搜索的三年演变 — 你用的 AI 搜索背后就是这些技术在跑
来源
- Meta, “Faiss”, 2017, https://engineering.fb.com/2017/03/29/data-infrastructure/faiss-a-library-for-efficient-similarity-search/
- Elastic, “Vector Search Introduction”, https://www.elastic.co/search-labs/cn/blog/introduction-to-vector-search
- 火山引擎, “AI 跑车引擎——向量数据库”, https://developer.volcengine.com/articles/7382278528115343369
- 华为开发者, “Elasticsearch 向量检索发展史”, https://developer.huawei.com/consumer/cn/forum/topic/0207133454587368016
注释
-
Elastic, “Vector Search Introduction”, https://www.elastic.co/search-labs/cn/blog/introduction-to-vector-search ↩
-
Meta, “Faiss: A library for efficient similarity search”, 2017, https://engineering.fb.com/2017/03/29/data-infrastructure/faiss-a-library-for-efficient-similarity-search/ ↩
-
火山引擎, “AI 跑车引擎——向量数据库”, https://developer.volcengine.com/articles/7382278528115343369 ↩
-
华为开发者, “Elasticsearch 向量检索发展史”, https://developer.huawei.com/consumer/cn/forum/topic/0207133454587368016 ↩