向量数据库核心知识总结
一、什么是向量数据库
1. 定义
向量数据库(Vector Database)是专门为高维嵌入向量(Embedding)设计的专用数据库,核心能力是海量向量毫秒级相似度检索,配套元数据持久化、增删改查、分布式扩容、混合检索(向量 + 关键词过滤)能力Elastic。
- 向量:文本 / 图片 / 音频经 AI 模型(BGE、CLIP、Word2Vec)生成的数字数组(如 384/768/1024 维),语义相近的数据向量在空间距离更近。
- 解决痛点:传统 MySQL/ES 用 B + 树、普通倒排无法高效处理高维向量,暴力全量对比亿级数据耗时分钟级;向量数据库靠ANN 近似近邻索引规避 “维度灾难”抖音。
2. 核心用途
RAG 知识库、文搜图 / 图搜图、推荐系统、语音检索、人脸比对、大模型外挂记忆。
二、向量数据库怎么存储
存储分为分层结构、向量存储格式、量化压缩、持久化架构四部分。
1. 数据分层结构(以 Milvus 标准为例)
数据库(Database) → 集合(Collection)【类比MySQL表】
→ 分片(Shard)【分布式拆分】
→ 段(Segment)【最小存储单元,自动合并】
→ 字段(Field):主键ID、向量字段、元数据(文本、标签、时间、数字)
一条完整存储实体示例:
{ "id": 10001, // 主键标量 "text": "向量数据库存储原理", // 原始文本元数据 "category": "AI技术", // 过滤用元数据 "embedding": [0.12,0.45,...,-0.78] // 768维浮点向量 }
2. 向量底层存储格式
向量默认
float32(4 字节 / 维):- 384 维向量:384×4=1536 Bytes ≈1.5KB
- 768 维向量:768×4=3072 Bytes ≈3KB
高维向量占用极大,因此数据库提供量化压缩减少内存 / 磁盘占用Milvus:
- 标量量化 SQ8:float32 转 uint8,压缩 4 倍,精度轻微损失
- 乘积量化 PQ:向量分段压缩,压缩 8~32 倍,适合亿级海量数据
- 二进制向量:0/1 比特存储,压缩 32 倍,多用于图片哈希检索
3. 内存 + 磁盘混合存储架构
- 内存层:索引(HNSW/IVF)常驻内存保证检索速度;热点向量缓存
- 磁盘层:原始向量、元数据持久落地(本地文件 / 对象存储 S3)
- 段管理机制:新写入数据存 “增量段”,后台自动合并为 “持久段”,避免频繁重建索引,支持删除、更新逻辑删除。
4. 分布式存储(企业级)
数据按向量 ID 哈希分片到多节点;支持副本保证高可用;冷热分离:热段内存,冷段磁盘 / 对象存储。
三、向量数据库怎么查询(检索完整流程)
核心:ANN 近似最近邻搜索(牺牲微小精度换百倍提速)
1. 完整查询 5 步流程
- 向量化:查询文本 / 图片调用 Embedding 模型生成查询向量
query_vec - 索引路由:根据索引类型(HNSW/IVF)缩小搜索范围,不遍历全量向量
- 距离计算:计算
query_vec与候选向量相似度- 余弦相似度 Cosine:文本 Embedding 最常用
- L2 欧氏距离:图像特征向量
- 内积 IP:归一化向量加速计算
- 元数据过滤:向量召回后附加条件筛选(如
category="AI"、时间范围) - 返回 TopK:按相似度从高到低返回前 K 条,附带原始文本、标签等元数据
2. 两大主流索引查询原理
(1)IVF 倒排聚类索引(IVF_FLAT/IVF_PQ)
适用:亿级海量、内存有限场景
- 建索引:K-Means 把全量向量分成 N 个簇,每个簇存一批向量
- 查询:计算查询向量与所有簇中心距离,只搜最近 Nprobe 个簇(仅遍历 1%-10% 数据)
- 优缺点:内存占用低,构建索引快;高并发查询延迟略高于 HNSWMilvus
(2)HNSW 分层小世界图索引
适用:低延迟、高并发 RAG、在线推荐(工业最主流)
- 建索引:多层有向图,顶层节点稀疏(快速粗定位),底层密集(精细搜索)
- 查询:从顶层入口点逐步下沉每层找近邻,天然图结构跳转速度极快
- 优缺点:检索延迟最低、召回率高;内存消耗更大,海量数据成本更高腾讯云
3. 混合检索(向量数据库核心优势)
同时支持:语义向量相似度 + 结构化过滤 + 全文关键词检索
示例需求:搜索和 “向量存储” 相似,且发布于 2026 年、标签为 “大模型” 的文档。
四、热门主流向量数据库分类 & 对比
分为 4 大类:本地轻量库、开源独立向量库、云托管 SaaS、数据库插件
1. 轻量本地开发工具(快速原型、本地 RAG)
Chroma
- 语言:Python,开箱即用,零部署
- 规模:百万级以内小数据集
- 优点:API 极简,内置 Embedding,适合学生 / 本地 Demo、单机测试
- 缺点:不支持分布式,生产环境性能弱
FAISS(Meta 开源检索库,非完整数据库)
- 定位:底层向量检索内核,无持久化、无元数据、无 HTTP 服务
- 优势:CPU/GPU 加速,索引最全(IVF/HNSW/PQ),学术界 / 离线批处理首选
- 局限:需要自己封装存储、接口、分布式,不能直接线上业务使用稀土掘金
2. 开源生产级独立向量数据库(私有化部署首选)
Milvus(国产头部,企业级分布式)
- 语言:Go/C++,云原生分布式架构
- 规模:十亿级向量,支持分片扩容、GPU 加速
- 优势:国产化适配、混合检索完善、支持图片 / 音频多模态、完整运维监控、兼容各类索引
- 适用:国企、大型 AI 平台、亿级 RAG、多模态检索系统抖音
Qdrant
- 语言:Rust,极致性能,内存占用低
- 优势:强大元数据过滤、payload 条件检索、磁盘索引、水平扩展
- 适用:千万级在线业务、电商推荐、带复杂筛选的检索场景CSDN博...
Weaviate
- 语言:Go,AI 原生,内置知识图谱能力
- 特色:GraphQL/REST 双接口、原生对接 HuggingFace 模型、向量 + 图谱联合检索
- 适用:GraphRAG、多模态语义搜索、知识类 AI 应用抖音
3. 云托管 SaaS 向量库(零运维、快速上线)
Pinecone
- 国外商用全托管服务,不开源
- 优点:无需运维、自动扩缩容、企业安全合规、API 极简
- 缺点:付费成本高,无私有化部署,数据出境风险,国内访问不稳定
- 适用:海外创业项目、不想运维数据库的中小团队稀土掘金
4. 传统数据库向量插件(存量业务改造)
PGVector(PostgreSQL 插件)
- 在 Postgres 中直接存储向量,复用 SQL 生态
- 优势:无需额外部署数据库,结构化数据 + 向量一体化管理
- 局限:千万级以上性能衰减,高并发检索延迟高,适合中小存量业务改造
RedisSearch(Redis 插件)
- 内存型向量检索,读写极快
- 适用:热点缓存、小规模实时推荐;海量数据内存成本极高
五、选型速查表
| 数据库 | 开源 | 分布式 | 推荐数据规模 | 最佳场景 |
|---|---|---|---|---|
| Chroma | ✅ | ❌ | < 百万 | 本地 Demo、学习原型 |
| FAISS | ✅ | ❌ | 离线批处理 | 算法实验、底层封装 |
| Milvus | ✅ | ✅ | 亿~十亿 | 国产大型企业、多模态 RAG |
| Qdrant | ✅ | ✅ | 千万~亿 | 高性能在线检索、复杂过滤 |
| Weaviate | ✅ | ✅ | 千万级 | GraphRAG、知识图谱检索 |
| Pinecone | ❌ | 托管 | 亿级 | 海外 SaaS 零运维项目 |
| PGVector | ✅ | 有限 | < 百万 | 已有 Postgres 存量业务 |

浙公网安备 33010602011771号