Vector Stores:向量数据库选型与使用
对比主流向量数据库(FAISS、Chroma、Milvus、PGVector),掌握相似度检索与元数据过滤。
选型速查
- FAISS:Facebook 开源库,纯内存、极快,适合原型与中小数据;
- Chroma:开箱即用的嵌入式向量库,API 友好,适合本地开发;
- Milvus / Qdrant / Weaviate:独立服务的分布式向量库,生产级大数据量;
- PGVector:给 PostgreSQL 加向量能力,一个库搞定"业务数据 + 向量";
- Elasticsearch / Redis:已有基础设施时顺带支持向量检索。
基本操作(以 Chroma 为例)
from langchain_chroma import Chroma
vectorstore = Chroma.from_documents(chunks, embedding=embeddings,
persist_directory="./chroma_db")
# 相似度检索
hits = vectorstore.similarity_search("退款政策", k=3)
# 带分数检索(分数越小越相似)
hits = vectorstore.similarity_search_with_score("退款政策", k=3)
# 元数据过滤
hits = vectorstore.similarity_search(
"退款政策", k=3, filter={"source": "policy.pdf"})
检索器进阶
- MMR(最大边际相关):兼顾相关性与多样性,避免返回 k 条几乎相同的片段;
- 混合检索:向量检索 + BM25 关键词检索取长补短,用 RRF 融合排序;
- Parent-Document 检索:用小块检索、返回其所属大块,兼顾精度与上下文。
📝 课后练习
quiz-1 MMR(最大边际相关)检索策略的优势是?