用途
Qdrant 是一个用 Rust 编写的高性能向量数据库,主要用于生产环境的 RAG(检索增强生成)和语义搜索。资料给出的适用情形包括:需要低延迟检索的生产级 RAG 系统、需要向量与元数据过滤结合的混合搜索、需要分片与副本水平扩展、希望本地部署并完全掌控数据、需要每条记录存储多种向量(稠密+稀疏),以及构建实时推荐系统。
主要能力
- Rust 驱动:内存安全、高性能。
- 丰富过滤:搜索过程中可按任意 payload 字段过滤。
- 多向量:每个点支持稠密、稀疏、多稠密向量。
- 量化:标量、乘积、二值量化,用于降低内存占用。
- 分布式:Raft 共识、分片、副本。
- 双 API:REST 与 gRPC,功能对等。
核心概念方面:Point 是基本数据单元,由 ID(整数或 UUID 字符串)、向量和任意 JSON payload 组成;Collection 是向量容器,可配置向量维度、距离度量(COSINE、EUCLID、DOT、MANHATTAN)与 HNSW 参数(如 m、ef_construct、full_scan_threshold)。搜索支持基础近邻检索、带 must/must_not 等条件的过滤检索,以及一次请求多个查询的批量检索。
使用方式
安装可通过 Python 客户端 pip install qdrant-client;开发环境推荐 Docker 运行 docker run -p 6333:6333 -p 6334:6334 qdrant/qdrant,持久化可挂载 -v $(pwd)/qdrant_storage:/qdrant/storage。
基本流程为:连接客户端 → 创建集合(指定向量维度与距离)→ 以 PointStruct 批量 upsert 数据 → 使用 search 检索并按需返回 payload。资料还给出了与 sentence-transformers 组合的 RAG 检索函数示例,以及与 LangChain、LlamaIndex 的集成写法。
多向量方面,可用命名向量分别存放不同嵌入模型的稠密向量,或配置稀疏向量(如 BM25、SPLADE)并指定查询所用的向量名。量化示例展示了标量量化 INT8 配置及检索时 rescore 重打分。为提升过滤性能,可对 category、timestamp 等字段创建 payload 索引(支持 KEYWORD、INTEGER、FLOAT、GEO、TEXT、BOOL 类型)。
生产部署方面,资料提到可连接 Qdrant Cloud(URL + api_key),并可通过更新 HNSW 或 optimizer 配置在搜索速度与索引速度之间调优。
适用场景与限制
适用场景:生产级 RAG、语义搜索、混合检索(向量+元数据过滤)、实时推荐、需本地部署或水平扩展的向量检索系统。
资料也给出了替代方案建议:若需要更简单的搭建与嵌入式使用可考虑 Chroma;追求极致原始速度与研究/批处理可选 FAISS;偏好全托管、零运维可选 Pinecone;偏好 GraphQL 与内置向量化器可选 Weaviate。
限制与注意事项:资料未提供具体的性能基准数值、价格与收费信息、各部署形态的配额限制。常见问题包括带过滤的检索变慢(需为过滤字段建 payload 索引)、内存不足(可启用量化与磁盘存储)、连接问题(可设置超时并启用 gRPC)。资料列出的最佳实践包括批量操作、为过滤字段建索引、大规模集合(>1M 向量)启用量化、集合超过 10M 向量时使用分片、大 payload 启用磁盘存储、复用客户端实例。版本为 1.12.0+,许可证 Apache 2.0。