介绍
LlamaIndex 向量存储的核心结论:统一接口、20+款向量库、本地/自建/云全覆盖;开发首选 Chroma/FAISS,生产首选 Milvus/Qdrant/Pinecone,混合检索与异步都支持。
VectorStore 是什么
在 LlamaIndex 里,VectorStore 是存放「文本块 → 向量」的底层存储,配合 VectorStoreIndex 做语义检索。
- 流程:文档分块 → 向量化 → 写入向量库 → 查询时向量相似度召回。
- 代码入口:通过 StorageContext 注入任意向量库。
from llama_index.core import StorageContext, VectorStoreIndex
from llama_index.vector_stores.chroma import ChromaVectorStore
vector_store = ChromaVectorStore(...)
storage_context = StorageContext.from_defaults(vector_store=vector_store)
index = VectorStoreIndex.from_documents(docs, storage_context=storage_context)
支持的向量数据库
本地/轻量(开发/小数据)
- Chroma:零配置、本地文件持久化、支持元数据过滤/混合检索;
uv add chromadb - LanceDB:Rust高性能嵌入式向量库,文件式存储无需部署服务,支持SQL查询、多模态数据、版本管理,检索速度优于Chroma;
uv add lancedb - FAISS:Facebook 开源、CPU/GPU 极速、内存/磁盘索引;
uv add faiss-cpu - SQLite-Vec:轻量化嵌入式向量引擎,依托SQLite文件存储,无独立服务,体积极小,适合低资源设备、桌面离线程序;
uv add sqlite-vec - PGVector:PostgreSQL向量扩展,依托数据库服务运行,结构化数据+向量一体化管理,适合已有PostgreSQL业务栈项目;
uv add pgvector
自建/开源(部署)
- Milvus:星型架构、千亿级、多索引/分区/TTL;
uv add pymilvus。 - Qdrant:高性能、GPU 加速、丰富过滤/聚合;
uv add qdrant-client。 - Weaviate:内置向量+关键词、模块化、支持 GraphQL;
uv add weaviate-client。
云托管(免运维/企业级)
- Pinecone:全托管、高可用、自动扩缩;
uv add pinecone。 - Azure AI Search:微软云、混合检索、安全合规;
uv add azure-search-documents。 - 阿里云 OpenSearch:国内生态、向量+全文、低成本;
uv add aliyun-opensearch。
国内特色
- 百度 VectorDB:百度云、中文优化、高并发。
- DashVector:全托管、毫秒级、Serverless 计费。
嵌入式数据库
- Chroma
- LanceDB
- FAISS
- SQLite-Vec
对比
| 向量库 | 部署 | 持久化 | 混合检索 | 元数据过滤 | 异步 | 适合 |
|---|---|---|---|---|---|---|
| Chroma | 本地 | ✅ | ✅ | ✅ | ✅ | 开发/小知识库 |
| FAISS | 本地 | ❌(需手动) | ❌ | ❌ | ❌ | 极速检索/原型 |
| Milvus | 自建/云 | ✅ | ✅ | ✅ | ✅ | 企业级/大规模 |
| Qdrant | 自建/云 | ✅ | ✅ | ✅ | ✅ | 高性能/复杂过滤 |
| Pinecone | 云 | ✅ | ✅ | ✅ | ✅ | 免运维/生产 |
功能支持
- 统一接口:所有向量库共用
add/query/delete/get,切换只需改配置。 - 元数据过滤:按文档来源、时间、标签筛选,精准召回。
- 混合检索(Hybrid):向量相似度 + BM25 关键词,解决纯向量短板。
- 异步支持:全异步 I/O,高并发场景更稳。
- 持久化与备份:本地库自动落盘,分布式库支持集群/快照。
选型建议
- 开发/测试:选 Chroma(零配置、持久化、易调试)。
- 小规模生产:选 Qdrant(高性能、Docker 一键部署)。
- 大规模/企业级:选 Milvus(集群、分区、运维完善)。
- 免运维:选 Pinecone(全托管、高可用)。
常见问题
- FAISS 数据丢失:内存索引,需手动
vector_store.persist(path)保存。 - Chroma 并发慢:单进程适合小数据,高并发换 Milvus/Qdrant。
- 向量维度不匹配:确保嵌入模型维度(如 text-embedding-ada-002 为 1536)与向量库一致。