Qdrant 快速开始
Qdrant “是一个向量相似性搜索引擎,它提供了一个生产就绪的服务,具有方便的 API,可以通过额外的有效负载来存储、搜索和管理点(即向量)。”您可以将有效负载视为附加信息,可以帮助您深入搜索并接收可以提供给用户的有用信息。
官方文档:https://qdrant.tech/documentation/quick-start/
1. 安装 Qdrant 客户端
from qdrant_client import QdrantClient
client = QdrantClient(url="http://localhost:6333")2. 导入 Qdrant
import chromadb
chroma_client = chromadb.Client()3. 创建 Collection
您将把所有矢量数据存储在 Qdrant 集合中。我们就这样称呼它吧test_collection。该集合将使用点积距离度量来比较向量。
from qdrant_client.models import Distance, VectorParams
client.create_collection(
collection_name="test_collection",
vectors_config=VectorParams(size=4, distance=Distance.DOT),
)4. 添加向量
Qdrant 将存储您的文本,并自动处理标记化、嵌入和索引。
from qdrant_client.models import PointStruct
operation_info = client.upsert(
collection_name="test_collection",
wait=True,
points=[
PointStruct(id=1, vector=[0.05, 0.61, 0.76, 0.74], payload={"city": "Berlin"}),
PointStruct(id=2, vector=[0.19, 0.81, 0.75, 0.11], payload={"city": "London"}),
PointStruct(id=3, vector=[0.36, 0.55, 0.47, 0.94], payload={"city": "Moscow"}),
PointStruct(id=4, vector=[0.18, 0.01, 0.85, 0.80], payload={"city": "New York"}),
PointStruct(id=5, vector=[0.24, 0.18, 0.22, 0.44], payload={"city": "Beijing"}),
PointStruct(id=6, vector=[0.35, 0.08, 0.11, 0.44], payload={"city": "Mumbai"}),
],
)
print(operation_info)打印结果:
operation_id=0 status=<UpdateStatus.COMPLETED: 'completed'>5.查询
让我们问一个基本问题 - 我们存储的哪个向量与查询向量最相似[0.2, 0.1, 0.9, 0.7]?
search_result = client.search(
collection_name="test_collection", query_vector=[0.2, 0.1, 0.9, 0.7], limit=3
)
print(search_result)打印结果:
ScoredPoint(id=4, version=0, score=1.362, payload={"city": "New York"}, vector=None),
ScoredPoint(id=1, version=0, score=1.273, payload={"city": "Berlin"}, vector=None),
ScoredPoint(id=3, version=0, score=1.208, payload={"city": "Moscow"}, vector=None)结果以相似度递减的顺序返回。请注意,默认情况下,这些结果中缺少有效负载和矢量数据。有关如何启用它的信息,请参阅结果中的有效负载和向量。
6.添加过滤器
我们可以通过按有效负载过滤来进一步缩小结果范围。让我们查找包含“London”的最接近的结果。
from qdrant_client.models import Filter, FieldCondition, MatchValue
search_result = client.search(
collection_name="test_collection",
query_vector=[0.2, 0.1, 0.9, 0.7],
query_filter=Filter(
must=[FieldCondition(key="city", match=MatchValue(value="London"))]
),
with_payload=True,
limit=3,
)
print(search_result)您刚刚进行了矢量搜索。您将向量加载到数据库中并使用您自己的向量查询数据库。 Qdrant 找到最接近的结果并向您提供相似度分数。
作者:Ddd4j 创建时间:2024-04-16 12:09
最后编辑:Ddd4j 更新时间:2026-05-30 20:16
最后编辑:Ddd4j 更新时间:2026-05-30 20:16