用途
Qdrant 是一个用 Rust 编写的高性能向量数据库,面向生产环境的 RAG(检索增强生成)与语义搜索。官方建议在以下场景使用:构建要求低延迟的生产级 RAG 系统;需要混合搜索(向量 + 元数据过滤);需要分片/复制的水平扩展;希望私有化部署并完全掌控数据;需要在单条记录中存储多向量(稠密 + 稀疏);构建实时推荐系统。
如果追求更简单的搭建与嵌入式使用,可考虑 Chroma;追求极致原始速度、研究或批处理,可考虑 FAISS;偏好全托管、零运维,可考虑 Pinecone;偏好 GraphQL 与内置向量化器,可考虑 Weaviate。
主要能力
- Rust 驱动:内存安全、高性能。
- 丰富的过滤:搜索时可基于任意 payload 字段过滤。
- 多种向量:每个 point 支持稠密、稀疏、多稠密向量。
- 量化:标量、乘积、二值量化以节省内存。
- 分布式:Raft 共识、分片、复制。
- REST + gRPC:两套 API 功能完全对等。
核心概念包括:Points(数据基本单元 = ID + 向量 + payload)、Collections(向量容器)、距离度量(COSINE、EUCLID、DOT、MANHATTAN)。
使用方式
安装:
# Python 客户端
pip install qdrant-client
# Docker(开发推荐)
docker run -p 6333:6333 -p 6334:6334 qdrant/qdrant
# Docker 带持久化存储
docker run -p 6333:6333 -p 6334:6334 \
-v $(pwd)/qdrant_storage:/qdrant/storage \
qdrant/qdrant
基础用法(连接、创建集合、插入、检索):
from qdrant_client import QdrantClient
from qdrant_client.models import Distance, VectorParams, PointStruct
client = QdrantClient(host="localhost", port=6333)
client.create_collection(
collection_name="documents",
vectors_config=VectorParams(size=384, distance=Distance.COSINE)
)
client.upsert(
collection_name="documents",
points=[
PointStruct(id=1, vector=[0.1, 0.2], payload={"title": "Doc 1", "category": "tech"}),
PointStruct(id=2, vector=[0.3, 0.4], payload={"title": "Doc 2", "category": "science"})
]
)
results = client.search(
collection_name="documents",
query_vector=[0.15, 0.25],
query_filter={"must": [{"key": "category", "match": {"value": "tech"}}]},
limit=10
)
文档还给出了:集合 HNSW 配置与距离度量、基础/过滤/批量搜索、与 sentence-transformers、LangChain、LlamaIndex 的 RAG 集成、命名向量与稀疏向量(BM25、SPLADE)多向量支持、标量量化与重打分、payload 索引、Qdrant Cloud 连接、性能调优、最佳实践与常见问题(过滤检索慢、内存不足、连接问题)的处理方式,以及分布式模式、混合搜索、推荐等进阶主题的引用链接。
适用场景
生产级 RAG 检索、语义搜索、实时推荐、需要元数据过滤的向量检索、需要水平扩展或私有化部署的向量存储场景。
限制与说明
- 具体收费、价格、性能基准与平台细节在所提供的资料中暂未提供,需以官方文档为准。
- 分布式、混合搜索、推荐等仅以引用形式提及,资料未展开具体内容。
资源
- GitHub: https://github.com/qdrant/qdrant (22k+ stars)
- Docs: https://qdrant.tech/documentation/
- Python Client: https://github.com/qdrant/qdrant-client
- Cloud: https://cloud.qdrant.io
- Version: 1.12.0+
- License: Apache 2.0