向量数据库qdrant的使用
·

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):集合是存储向量的容器,创建时需要指定向量维度和距离度量方式(如
COSINE,DOT)。
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 & gRPC | AI 应用 |
| Go | 官方 | gRPC | 后端服务、微服务架构 |
| JavaScript/TypeScript | 官方 | REST | Web 应用、Node.js 服务 |
| Rust | 官方 | gRPC | 高性能服务、系统编程 |
| Java | 官方 | gRPC | 企业级应用、Android 开发 |
| .NET/C# | 官方 | gRPC | Windows 应用、Unity 游戏开发 |
| Elixir, PHP, Ruby | 社区 | 视具体实现而定 | 各类 Web 开发、脚本编写 |
补充说明:官方客户端优先推荐使用 gRPC 接口,因为它在高负载下性能更优。如果需要详细的 API 文档,可以参考 Qdrant API Reference。
更多推荐
所有评论(0)