向量数据库

最后更新:2026-06-08 数据来源:data/infrastructure.yaml 自动生成


🔍 向量检索到底在干什么?

向量检索的本质:把文本变成一组数字(向量),然后找到"距离最近"的其他文本

"苹果手机" → [0.12, -0.34, 0.56, ...] (1024 维向量)
"iPhone"   → [0.11, -0.33, 0.55, ...] (距离很近 → 语义相似)
"香蕉"     → [0.78, 0.45, -0.12, ...] (距离很远 → 语义不同)

为什么不用关键词搜索? 因为"苹果手机"和"iPhone"没有任何共同关键词,但语义完全相同。

检索方式 能搜到"iPhone"吗 能搜到"苹果 16 Pro 价格"吗 适用场景
关键词 (BM25) 精确匹配(产品名、代码)
向量 (Dense) 语义搜索(自然语言)
混合检索 两者兼顾

[!TIP] 2026 年的共识:混合检索是标配 纯向量检索在精确匹配场景下严重不足。如果你的知识库包含产品名、代码、数字等精确信息,一定要用混合检索。


📋 向量数据库总览

🏗️ 分布式

数据库 规模 索引类型 云服务 延迟 核心亮点
Redis - - - - 74.8K Stars
实时数据
高性能向量
TiDB - - - - 40.1K Stars
Agent 工作负载
分布式
OpenViking - - - - 25.3K Stars
火山引擎出品
Agent 上下文数据库
Qdrant 十亿级 HNSW Qdrant Cloud <5ms Rust 编写高性能
Payload 过滤
多向量支持
Typesense 十亿级 HNSW Typesense Cloud <5ms 全文+向量混合搜索
容错搜索 (typo-tolerant)
极速响应
Cognee - - - - 17.7K Stars
AI 记忆平台
持久化记忆
Milvus 百亿级 IVF, HNSW, DiskANN Zilliz Cloud <10ms 分布式架构
GPU 加速索引
IVF/HNSW/DiskANN
Weaviate 十亿级 HNSW Weaviate Cloud <10ms 内置向量化模块
多模态搜索
GraphQL API
Vespa 百亿级 HNSW, 自定义 Vespa Cloud 1-10ms 全文+向量混合搜索
实时索引
ML 模型内嵌
Elasticsearch 8.x 百亿级 HNSW Elastic Cloud 5-50ms HNSW 原生支持
全文+向量混合
生态极其广泛

📦 嵌入式

数据库 规模 索引类型 云服务 延迟 核心亮点
Chroma 百万级 HNSW Chroma Cloud <10ms 极简 API
嵌入式部署
自动向量化
LanceDB 千万级 IVF, HNSW LanceDB Cloud <10ms 零配置嵌入式
多模态支持
Apache Arrow 格式

☁️ 云原生

数据库 规模 索引类型 云服务 延迟 核心亮点
Pinecone 十亿级 专有 Pinecone <10ms 全托管 Serverless
低运维
混合搜索

🔌 扩展

数据库 规模 索引类型 云服务 延迟 核心亮点
pgvector 千万级 IVFFlat, HNSW 各云厂商 PG <50ms 基于 PostgreSQL
无需额外基础设施
IVFFlat/HNSW 索引

📚 库

数据库 规模 索引类型 云服务 延迟 核心亮点
FAISS 十亿级 IVF, HNSW, PQ <1ms Meta 开源
GPU 加速
极致性能
txtai 百万级 HNSW <10ms 语义搜索
RAG 工作流
Python 原生

🏛️ 两大阵营

专精向量派:只做向量检索,做到极致

数据库 特点 最大规模 部署方式 适合谁
Qdrant Rust 写的,性能极好 10 亿+ Docker / Cloud 小团队首选
Milvus 企业级,GPU 加速 100 亿+ K8s / Cloud 大规模场景
Chroma 嵌入式,5 分钟上手 千万级 pip install 原型验证

混合检索派:全文 + 向量,一步到位

数据库 特点 全文检索 向量检索 适合谁
Elasticsearch 生态最成熟 ✅ 原生 ✅ 原生 已有 ES 基建
pgvector PG 扩展,零迁移 ✅ PG 全文 ✅ 扩展 已有 PostgreSQL
Typesense 轻量易用 ✅ 原生 ✅ 扩展 小团队快速上手

[!TIP] 不知道选什么?

  • 快速原型 → Chroma(pip install chromadb
  • 小规模生产 → Qdrant(单机 Docker)
  • 已有 PG → pgvector(一个扩展搞定)
  • 需要混合检索 → Elasticsearch / Typesense

💡 RAG 最简方案

个人/小团队的 RAG 技术栈:

环节 推荐方案 说明
文档切分 按语义切分,512 Token 避免按固定字符切分破坏语义
Embedding BGE-M3 (开源) 参见 01-foundation-models/embedding-reranker.md
向量存储 Chroma (原型) / Qdrant (生产) 千万级以下单机足够
Reranking BGE-Reranker-V2 (开源) 两阶段检索提升 20-40% 准确率

最简 RAG 代码(Chroma + BGE-M3):

# pip install chromadb FlagEmbedding
import chromadb
from FlagEmbedding import BGEM3FlagModel

model = BGEM3FlagModel('BAAI/bge-m3')
client = chromadb.Client()
collection = client.create_collection("docs")

# 索引
docs = ["你的文档片段..."]
embeddings = model.encode(docs)['dense_vecs']
collection.add(documents=docs, embeddings=embeddings, ids=["1"])

# 检索
query = "用户问题"
query_emb = model.encode([query])['dense_vecs']
results = collection.query(query_embeddings=query_emb, n_results=5)

更新频率:每季度更新 自动化:运行 python scripts/build_docs.py 从 YAML 重新渲染表格。