向量数据库选型:按规模、过滤、混合检索、运维和成本做决定
向量数据库没有绝对最优,只有匹配场景。选型先看五个问题:数据规模和增长、是否需要元数据过滤、是否需要 BM25+向量的混合检索、延迟/QPS 要求、团队是否愿意运维分布式系统。常见路线包括专用向量库(Qdrant、Milvus、Weaviate、Chroma)、搜索引擎(OpenSearch/Elasticsearch)、关系库扩展(pgvector)和嵌入式索引(FAISS)。
专用向量库通常在召回性能、过滤和水平扩展上更强;pgvector 胜在事务、SQL 和已有 PostgreSQL 运维体系;OpenSearch 适合已有全文检索和日志平台;Chroma 适合原型和轻量应用;FAISS 是库不是服务,需要自己封装持久化、并发和过滤。
选型检查清单:
1. 向量数量与维度:100 万 × 1024 维 ≈ 4GB 原始向量,加索引/副本会更高
2. 过滤条件:租户、时间、权限、标签,过滤能否走索引
3. 检索模式:纯向量、BM25、混合、多向量、稀疏向量
4. 延迟目标:p95 < 50ms 还是 < 500ms
5. 写入与更新:批量导入、增量更新、删除、重建索引
6. 运维:备份、恢复、扩缩容、监控、升级
7. 多租户:逻辑隔离还是物理隔离
# 用同一批查询对比召回和延迟,而不是只看 QPS
# 记录 recall@10、nDCG@10、p50/p95 延迟、索引构建时间、磁盘/内存占用
# 分别测试:无过滤、租户过滤、时间范围过滤、混合检索
# pgvector 示例:如果已有 PostgreSQL,先用 SQL 验证需求
# CREATE EXTENSION vector;
# CREATE TABLE docs (id bigserial, tenant_id int, embedding vector(1024), content text);
# CREATE INDEX ON docs USING hnsw (embedding vector_cosine_ops);
# SELECT id, content FROM docs
# WHERE tenant_id = 42
# ORDER BY embedding <=> %s LIMIT 10;
合上页面,先回答,再展开对照。
小程序版
微信扫码,随时查命令