Qdrant 是一个用 Rust 编写的高性能向量数据库,专为相似性搜索而设计。它支持通过 REST API 和 gRPC 接口进行交互,并通过多种官方客户端(如 Python、Go、Java、JavaScript 等)提供了丰富的 API,方便集成到各类应用中。

Qdrant 使用 :Python 为例

最常用的方式是通过官方 Python 客户端 qdrant-client 进行操作,它同步和异步 API 都支持,并且可以在无服务器的情况下以本地模式运行,非常便于开发和测试。

1. 安装与启动

首先安装客户端库:

pip install qdrant-client

要使用完整的服务端功能,可以通过 Docker 快速启动一个 Qdrant 实例:

docker run -p 6333:6333 -p 6334:6334 qdrant/qdrant

启动后,可以通过 REST API (:6333) 和 gRPC API (:6334) 访问服务。

2. 初始化客户端

可以根据需要,以多种方式初始化客户端:

  • 连接本地服务器:连接到上面通过 Docker 启动的服务。

from qdrant_client import QdrantClient

client = QdrantClient(host="localhost", port=6333)
# 或者
client = QdrantClient(url="http://localhost:6333")
  • 使用 gRPC:gRPC 通常提供更高的性能,尤其是在批量操作时。启动时添加 grpc_port 参数即可启用。
client = QdrantClient(host="localhost", grpc_port=6334, prefer_grpc=True)
  • 内存模式(开发/测试):无需运行服务端,所有数据存储在内存中,适合快速原型设计。
client = QdrantClient(":memory:")
  • 连接 Qdrant Cloud:使用云服务的集群地址和 API Key。
client = QdrantClient(
    url="https://<your-cluster-url>.cloud.qdrant.io:6333",
    api_key="<your-api-key>",
)
3. 核心操作
  • 创建集合(Collection):集合是存储向量的容器,创建时需要指定向量维度和距离度量方式(如 COSINEDOT)。

from qdrant_client.models import Distance, VectorParams

client.create_collection(
    collection_name="my_collection",
    vectors_config=VectorParams(size=768, distance=Distance.COSINE),
)
  • 插入向量(Upsert):向集合中添加向量数据和与之关联的有效载荷(Payload)。
from qdrant_client.models import PointStruct

client.upsert(
    collection_name="my_collection",
    points=[
        PointStruct(id=1, vector=[0.1, 0.2, ...], payload={"city": "Beijing"}),
        PointStruct(id=2, vector=[0.3, 0.4, ...], payload={"city": "Shanghai"}),
    ]
)
  • 向量搜索(Search/Query):通过查询向量搜索最相似的若干结果,并可以配合过滤器(Filter)进行更精确的检索。
search_result = client.query_points(
    collection_name="my_collection",
    query=[0.2, 0.1, 0.9, 0.7],
    limit=3,
    with_payload=True,
).points

常见 Qdrant 客户端

除了 Python,Qdrant 还为多种主流编程语言提供了官方客户端,方便不同技术栈的接入。

客户端语言官方/社区接口协议主要场景
Python官方REST & gRPCAI 应用
Go官方gRPC后端服务、微服务架构
JavaScript/TypeScript官方RESTWeb 应用、Node.js 服务
Rust官方gRPC高性能服务、系统编程
Java官方gRPC企业级应用、Android 开发
.NET/C#官方gRPCWindows 应用、Unity 游戏开发
Elixir, PHP, Ruby社区视具体实现而定各类 Web 开发、脚本编写

补充说明:官方客户端优先推荐使用 gRPC 接口,因为它在高负载下性能更优。如果需要详细的 API 文档,可以参考 Qdrant API Reference

Logo

北京人形旗下天工造物具身智能开源社区,聚焦具身天工与慧思开物两大平台

更多推荐