向量存储
结构化数据vs向量数据

- 结构化数据存储:通过数据库表结构存储,使用主键和外键相互链接形成复杂schema
- 非结构化数据转换:文本/图片/音频等通过嵌入模型转化为数字形式的向量
- 存储方式差异:
- 结构化:传统SQL数据库表形式(如SQL Server)
- 向量数据:通过嵌入模型转换后存储在向量数据库
简单的向量存储
使用LlamaIndex的index.storage_context.persist(persist_dir=”saved_index”) 将向量索引保存到磁盘
代码如下:
1 | from llama_index.core.node_parser import SentenceSplitter |
此写法会在当前目录下创建一个目录为saved_index,将向量索引的内容存储到该目录下。

- 本地存储实现:
- 使用storage_context.persist(persist_dir=”saved_index”)语句
- 生成5个核心文件:
- default_vector_store.json(向量数据)
- docstore.json(文档关系)
- graph_store.json(图结构)
- image_vector_store.json(图像向量)
- index_store.json(索引结构)
- 文件功能:
- index_store.json:记录所有节点ID和索引元数据
- docstore.json:存储文档块间的前后关系(如relationship字段)
- 节点关系表示:
- 通过node_id和node_type字段建立关联
- 示例:relationship “3”表示后续节点关系
- 包含原始文档元数据(文件路径、创建时间等)
从简单向量存储到商用向量数据库

Milvus提供3种部署模式,适用于从简单应用到管理数百亿向量的大规模Kubernetes集群的数据规模。
- Milvus Lite作为Milvus的轻量级版本,易于集成到应用程序中,本书将以它为例进行介绍。
- Milvus Standalone是Milvus的单机服务器版本,所有组件都打包在一个Docker镜像中,便于部署。
- Milvus Distributed可以部署在Kubernetes集群上,支持十亿级向量甚至更大规模场景的云原生架构。
商用向量数据库的核心功能
| 功能 | 描述 |
|---|---|
| 性能和容错 | 分片,在多个节点上对数据进行分区; 复制,在不同节点上创建多个数据副本。发生故障时启用容错机制,确保性能稳定 |
| 监测 | 监测资源使用情况、查询性能及系统运行状况,持续优化性能和容错性 |
| 访问控制 | 确保数据安全,提供合规性、问责制及审计能力; 保护数据免受未经授权访问,并记录用户活动 |
| 可扩展性与可调性 | 支持横向扩展,适应不同的插入率、查询率及硬件差异 |
| 多用户和数据隔离 | 支持多用户或多租户; 实现数据隔离,确保用户活动 (如插入、删除查询) 不影响其他用户的私密数据 |
| 备份 | 定期创建数据备份; 支持在数据丢失或损坏时恢复到之前的状态,减少中断时间 |
| API和SDK | 提供易于操作的API; 封装多个API,方便开发者在特定用例 (如语义搜索、推荐系统等) 中使用向量数据库,不需要关注底层结构 |
- 关键能力:
- 分片与复制:数据分区存储和容错机制
- 访问控制:合规审计和安全防护
- 横向扩展:适应不同硬件和负载
- 多租户隔离:保证用户数据私密性
- 选型考量:
- 社区活跃度(如PyTorch式生态)
- API/SDK完善程度
- 监控和备份能力
- 检索算法多样性(哈希/量化/图搜索)
主流向量数据库一览
各种各样的向量数据库

市场现状: 目前市面上存在多种向量数据库选择,包括FAISS、Milvus、Weaviate、Qdrant、Elastic、Chroma等,选择时需要进行比较分析
1. Milvus
核心功能:
- 高性能分布式向量检索,支持IVF、HNSW、ANNOY、DiskANN等多种索引
- 横向可扩展至1000+节点集群
- 支持动态字段、分区和并行查询
特点:
- 横向可伸缩、支持 1000+ 节点集群
- 丰富的 metric(COSINE/L2/IP)和索引类型
- 支持动态字段、分区、并行查询
优势:企业级 SLA,海量数据(10⁸+)性能出色;社区活跃,生态完善。
劣势:运维相对复杂;对小规模单机部署略显重。
适用场景:大规模、多并发检索;需要复杂过滤、实时增量写入的生产环境。
选型建议:数据量 ≥1亿、对吞吐和可用性要求高时首选。
2. Weaviate
核心功能:Any-to-Any 多模态检索(nearText/nearImage/nearVector)。
特点:
- 原生 GraphQL 接口
- 内置如 CLIP、ImageBind、OpenAI Embeddings 等模型
- 自动 schema 管理与向量化管道
优势:上手快、无需额外模型接入;多模态查询统一 API。
劣势:集群扩展性弱于 Milvus;企业级性能需商业版。
适用场景:PoC 验证、多模态实验、快速上线 MVP。
选型建议:团队希望零运维,想“开箱即用”时推荐
3. Qdrant
核心功能:
- 向量检索+高效过滤(Single-Stage Filtering/Hybrid Search)
- Rust内核,单节点或小集群性能优异
- 支持多向量字段和分段索引
特点:
- Rust 内核、单节点或小集群性能优
- 支持多向量字段和分段索引
- 丰富的二级过滤与布尔查询
优势:延迟低、吞吐高;对复杂过滤条件性能友好。
劣势:大规模分布式部署方案较新,需要自行打磨。
适用场景:对过滤/布尔查询依赖度高的语义搜索;中小规模集群。
选型建议:需要在语义召回与精确过滤间平衡时优选
4. Pinecone
核心功能:全托管、高可用向量数据库;支持 hybrid search、namespace 多租户。
特点:
- Serverless,自动扩缩容
- 支持稀疏+稠密混合检索
优势:极低运维门槛;SDK 友好,企业级 SLA。
劣势:成本随存储/QPS 增长;网络延迟依赖云厂商。
适用场景:快速上线大规模检索服务;不想自建集群的业务。
选型建议:项目初期或短期 PoC,及对运维团队少的公司优选。
5. Chroma
核心功能:轻量级、本地化向量存储;适合开发者本地调试与小规模应用。
特点:
- Python 原生,API 与文档友好
- 支持 SQLite、DuckDB 等后端存储
优势:零运维,直接内嵌到应用中;非常适合本地测试或桌面应用。
劣势:不适合大规模、分布式场景;功能相对基础。
适用场景:原型开发、Notebook 环境、桌面/小型服务。
选型建议:数据量 <10万,团队无运维成本时优选。
6. Faiss
核心功能:Facebook 开源的高效向量近邻库;支持 CPU/GPU 算法。
特点:
- 丰富的索引类型(IVF、PQ、HNSW、LSH)
- 代码级可控,适合集成到自研系统中
优势:性能最优、算法前沿;GPU 加速效果显著。
劣势:仅提供库,不含存储层;需要自行实现数据管理、分布式。
适用场景:对算法调优有深度需求的科研或自研引擎。
选型建议:具备 ML/算法团队,需极致性能且愿意自行封装存储时选。
7. Vespa
核心功能:大规模分布式检索与实时计算;支持多向量字段、复杂 ranking。
特点:
- 内置机器学习模型部署(Java/Python)
- 支持在线训练与在线推理
优势:企业级特性完善;查询吞吐与排序能力强。
劣势:学习曲线陡峭;集群部署与运维成本高。
适用场景:电商推荐、新闻排序、广告排名等复杂检索与排序场景。
选型建议:需要自定义复杂排名函数、在线模型服务的场景优选。
8. Elasticsearch
核心功能:全文检索+向量检索混合;支持 BM25 + kNN。
特点:
- 兼容原有搜索引擎生态
- 可在同一次查询中同时执行 sparse & dense 检索
- 插件式扩展(自定义脚本、rank_feature)
优势:无缝接入已有日志/指标平台;社区和商业支持成熟。
劣势:向量检索性能不及专用库;索引体积大,内存消耗高。
适用场景:已有 ES 集群,想增量加密向量搜索;对全文与向量混合检索有需求。
选型建议:已有 Elastic 部署,无需额外运维团队时可考虑。
9. MongoDB Atlas Vector Search
核心功能:Atlas 托管的向量检索;集成全文索引与地理位置。
特点:
- 无缝与 MongoDB 文档数据联动
- Atlas Serverless 可按需扩展
优势:完全托管,零运维;可以利用平台监控与安全特性。
劣势:成本较高;检索性能略劣于专用库。
适用场景:已经在 Atlas 上,想增量加向量搜索能力的团队。
选型建议:对托管可信赖度要求高,且预算充足时可考虑。
10. PGVector(PostgreSQL 插件)
核心功能:在 PostgreSQL 中原生存储与检索向量;支持 SQL+向量混合查询。
特点:
- 与关系数据无缝联表
- 支持索引(IVF、HNSW)
优势:无需额外数据库,利用成熟的事务与权限体系。
劣势:单机性能有限;大规模时 PG 扩展复杂。
适用场景:已有 PostgreSQL,想追加简单向量检索功能的业务。
选型建议:关系型与向量混合场景,且数据量 <千万级时优选。
11. Redis Vector
核心功能:Redis Modules 提供向量检索;支持 HNSW、Flat。
特点:
- 结合 RedisStream、Pub/Sub 可做实时流式检索
- 单实例延迟极低
优势:适合集成到已有 Redis 缓存/消息体系;运维经验普遍。
劣势:内存消耗大;分布式横向扩展需 Cluster+Slot 管理。
适用场景:对实时性要求极高,且已有 Redis 集群的场景。
选型建议:缓存/路由层即需做检索,且对高并发低延迟有严格要求时选。
分成这么几类
1. 专用向量数据库 (Self-managed 或 托管版)
特点: 从底层到协议全文支持向量检索, 性能与可伸缩性最佳。
- Milvus (自建/企业级集群)
- Qdrant (轻量 Rust 内核 + 高效过滤)
- Weaviate (自建或 Weaviate Cloud, Any-to-Any 多模态)
- Pinecone (全托管 Serverless)
2. 通用搜索引擎增强 (Search-first 平台)
特点: 兼顾文本检索与向量检索, 适合已有 Elasticsearch/类似体系的扩展。
- Elasticsearch (+ kNN)
- Vespa (多向量字段 + 复杂 Ranking, 引擎级排序能力)
- MongoDB Atlas Vector Search (托管, 文档 + 向量混合)
3. 数据库原生插件 (SQL/NoSQL + 向量)
特点: 在现有关系或 KV 存储中叠加向量检索, 运维简单、数据联动强。
- Pgvector (PostgreSQL 插件)
- Redis Vector (Redis 模块)
4. 嵌入式轻量库 (Library-first)
特点: 仅提供向量算法或本地存储, 适合嵌入式、桌面/小规模场景或深度定制。
- FAISS (CPU/GPU 高性能向量库)
- Chroma (Python 本地轻量存储)
- LanceDB (基于 Arrow/Parquet 文件存储)
问题仍然聚焦于:如何选择?
https://python.langchain.com/docs/integrations/vectorstores/
| 向量数据库名称 | 是否支持开源 | 是否支持自托管 | 是否支持云端管理 | 是否专为向量搜索设计 | 开发者体验 | 每秒查询数 | 延迟/ms | 支持索引类型 | 是否支持混合搜索 | 是否支持向量索引 | 是否支持角色访问控制 | 是否支持动态分片 | 是否免费托管计划 | 价格 (50K 向量) /美元 | 价格 (20M向量)/美元 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Pinecone | 否 | 否 | 是 | 是 | 较好 | 150+ (扩展后更高) | 1 | 未知 | 是 | 否 | 否 | 未知 | 是 | 70 | 227 (高性能版为2074) |
| Weaviate | 是 | 是 | 是 | 是 | 较好 | 791 | 2 | HNSW | 是 | 是 | 否 | 否,静态分片 | 是 | 25起 | 1536 |
| Milvus | 是 | 是 | 是 | 是 | 很好 | 2406 | 1 | 多种 (11种) | 是 | 是 | 是 | 是 | 是 | 65起 | 309 (高性能版为2291) |
| Qdrant | 是 | 是 | 是 | 是 | 较好 | 326 | 4 | HNSW | 是 | 是 | 否 | 是 | 是 | 9起 | 281 (高性能版为820) |
| Chroma | 是 | 是 | 否 | 是 | 较好 | 未知 | 未知 | HNSW | 是 | 是 | 否 | 是 | 自托管免费 | 自托管免费 | |
| Elasticsearch | 否 | 是 | 否 | 否 | 一般 | 700-100 | 5-10 | HNSW | 是 | 是 | 否 | 是,静态分片 | 自托管免费 | 不定 | 1225 |
| PGVector | 是 | 是 | 否 | 否 | 一般 | 141 | 8 | HNSW/IVFFlat | 是 | 是 | 否 | - | 自托管免费 | 不定 | 不定 |
- 选型维度:
- 是否开源、是否支持自托管、是否支持云端管理
- 专为向量搜索设计、开发者体验、每秒查询数
- 延迟、支持索引类型、是否支持混合搜索
- 是否支持磁盘索引、角色访问控制、动态分片
- 价格等商业考量因素
- 典型数据:
- Milvus支持多达11种索引类型
- Pinecone价格从70美元(50k向量)到2074美元(高性能版20M向量)不等
- Weaviate查询性能791 QPS,延迟2ms
选型思路总结
- 规模与性能:
- 超大规模($10^8+$)、高并发:Milvus、Vespa、Pinecone
- 中小规模($<10^7$): Qdrant、Weaviate、Redis
- 运维成本:
- 零运维:Pinecone、MongoDB Atlas、Weaviate(Cloud)
- 自研可控:Milvus、FAISS、Vespa
- 功能侧重:
- 多模态Any-to-Any: Weaviate、OpenSearch
- 复杂过滤&混合检索:Qdrant、Elasticsearch
- 现有栈对接:
- 已有PostgreSQL/Redis: Pgvector、Redis Vector
- Elasticsearch生态:Elasticsearch(+kNN)