Qdrant 是一款高性能的向量数据库,专为处理大规模向量数据的相似度搜索而设计。它基于 Rust 语言开发,保证了系统的稳定性和效率。Qdrant 提供了丰富的 API 接口,支持对向量数据的存储、搜索、过滤等操作。通过集成神经网络模型,Qdrant 可以实现基于语义的相似度搜索,广泛应用于推荐系统、图像搜索、自然语言处理等领域。此外,Qdrant 还提供了云端托管服务,方便用户快速部署和使用。
特性
过滤和负载
Qdrant 允许将任何 JSON 负载附加到向量,从而基于这些负载中的值进行数据的存储和过滤。负载支持广泛的数据类型和查询条件,包括关键字匹配、全文过滤、数值范围、地理位置等。
过滤条件可以以多种方式组合,包括 should、must 和 must_not 子句,确保您可以在相似度匹配之上实现任何所需的业务逻辑。
稀疏向量混合搜索
为了解决向量嵌入在搜索特定关键字时的限制,Qdrant 除了常规的密集向量之外,还引入了对稀疏向量的支持。
稀疏向量可以被视为 BM25 或 TF-IDF 排名的泛化。它们使您可以利用基于转换器的神经网络的能力来有效地对单个标记进行加权。
向量量化和磁盘存储
Qdrant 提供了多种选项,以使向量搜索更便宜且更具资源效率。内置的向量量化将 RAM 使用量减少了高达 97%,并动态管理搜索速度和精度的权衡。
分布式部署
Qdrant 通过两种关键机制提供全面的水平扩展支持:
- 通过分片进行大小扩展和通过复制进行吞吐量增强。
- 零停机滚动更新和集合的无缝动态缩放。
突出功能
- 查询规划和负载索引: 利用存储的负载信息优化查询执行策略。
- SIMD 硬件加速: 利用现代 CPU x86-x64 和 Neon 架构来提供更好的性能。
- 异步 I/O: 使用 io_uring 即使在网络连接的存储上也能最大化磁盘吞吐量利用率。
- 写入前日志记录: 即使在断电期间,也能确保数据持久性,并提供更新确认。
安装
下载和运行 Qdrant
第一步:从 Dockerhub 下载最新的 Qdrant 镜像:
docker pull qdrant/qdrant
第二步:运行服务:
docker run -p 6333:6333 -p 6334:6334 \
-v $(pwd)/qdrant_storage:/qdrant/storage:z \
qdrant/qdrant
说明:
-p 6333:6333 -p 6334:6334
:将容器的 6333 和 6334 端口映射到主机的相应端口,用于访问 REST API 和 gRPC API。-v $(pwd)/qdrant_storage:/qdrant/storage:z
:将本地目录qdrant_storage
挂载到容器的/qdrant/storage
目录,用于存储 Qdrant 的数据。
访问 Qdrant:
- REST API:
localhost:6333
- Web UI:
localhost:6333/dashboard
- gRPC API:
localhost:6334
默认情况下,所有数据将存储在 ./qdrant_storage
目录中。这是容器和主机都可以看到的唯一目录。