Qdrant Python客户端:功能强大的向量搜索引擎SDK
Qdrant Python客户端是专为Qdrant向量搜索引擎设计的官方SDK,提供了完整的API支持和丰富的功能特性,帮助开发者快速构建和管理高性能的向量搜索应用。
主要特性
- 完整的API类型定义,支持同步和异步请求
- 本地模式无需运行服务器即可使用
- 支持REST和gRPC协议
- 依赖少,易于集成
- 广泛的测试覆盖
安装
通过pip安装:
pip install qdrant-client
快速入门
- 连接到Qdrant服务器:
from qdrant_client import QdrantClient
client = QdrantClient(host="localhost", port=6333)
- 创建集合:
from qdrant_client.models import Distance, VectorParams
client.create_collection(
collection_name="my_collection",
vectors_config=VectorParams(size=100, distance=Distance.COSINE),
)
- 插入向量:
import numpy as np
from qdrant_client.models import PointStruct
vectors = np.random.rand(100, 100)
client.upsert(
collection_name="my_collection",
points=[
PointStruct(
id=idx,
vector=vector.tolist(),
payload={"color": "red", "rand_number": idx % 10}
)
for idx, vector in enumerate(vectors)
]
)
- 搜索相似向量:
query_vector = np.random.rand(100)
hits = client.search(
collection_name="my_collection",
query_vector=query_vector,
limit=5 # 返回5个最相似的点
)
- 带过滤条件的搜索:
from qdrant_client.models import Filter, FieldCondition, Range
hits = client.search(
collection_name="my_collection",
query_vector=query_vector,
query_filter=Filter(
must=[
FieldCondition(
key='rand_number',
range=Range(gte=3)
)
]
),
limit=5
)
本地模式
Qdrant Python客户端支持本地模式,无需运行Qdrant服务器即可使用相同的API:
client = QdrantClient(":memory:") # 内存模式
# 或
client = QdrantClient(path="path/to/db") # 持久化到磁盘
本地模式适用于开发、原型设计和测试场景,可以在Colab或Jupyter Notebook中直接使用,无需额外依赖。当需要扩展时,只需切换到服务器模式即可。
FastEmbed集成
Qdrant客户端集成了FastEmbed库,可以直接在CPU上高效创建向量嵌入:
pip install qdrant-client[fastembed]
使用FastEmbed简化API:
from qdrant_client import QdrantClient
client = QdrantClient(":memory:")
docs = ["Qdrant has Langchain integrations", "Qdrant also has Llama Index integrations"]
metadata = [
{"source": "Langchain-docs"},
{"source": "Linkedin-docs"},
]
ids = [42, 2]
client.add(
collection_name="demo_collection",
documents=docs,
metadata=metadata,
ids=ids
)
search_result = client.query(
collection_name="demo_collection",
query_text="This is a query document"
)
print(search_result)
异步客户端
从1.6.1版本开始,所有Python客户端方法都有异步版本:
from qdrant_client import AsyncQdrantClient, models
import asyncio
async def main():
client = AsyncQdrantClient(url="http://localhost:6333")
await client.create_collection(
collection_name="my_collection",
vectors_config=models.VectorParams(size=10, distance=models.Distance.COSINE),
)
# 异步上传点
await client.upsert(
collection_name="my_collection",
points=[
models.PointStruct(
id=i,
vector=np.random.rand(10).tolist(),
)
for i in range(100)
],
)
# 异步搜索
res = await client.search(
collection_name="my_collection",
query_vector=np.random.rand(10).tolist(),
limit=10,
)
print(res)
asyncio.run(main())
异步客户端同时支持gRPC和REST API。
连接到Qdrant Cloud
Qdrant提供了云服务,可以快速获得一个1GB RAM的免费账户:
from qdrant_client import QdrantClient
qdrant_client = QdrantClient(
url="https://xxxxxx-xxxxx-xxxxx-xxxx-xxxxxxxxx.us-east.aws.cloud.qdrant.io:6333",
api_key="<your-api-key>",
)
总结
Qdrant Python客户端提供了丰富的功能和灵活的使用方式,包括完整的API支持、本地模式、FastEmbed集成、异步操作等,可以满足各种向量搜索应用场景的需求。无论是快速原型开发还是大规模生产部署,都能提供高效便捷的开发体验。
更多详细信息和高级用法,请参阅官方文档。Qdrant活跃的社区也是获取帮助和分享经验的好地方。希望这个强大的工具能够帮助您构建出色的向量搜索应用!