• 文档 >
  • Qdrant Python 客户端文档
快捷方式

Qdrant Python 客户端文档

Qdrant 向量搜索引擎的客户端库。

该库包含所有 Qdrant API 的类型定义,并允许进行同步和异步请求。

Pydantic 用于描述请求模型,httpx 用于处理 http 查询。

客户端允许直接调用所有 Qdrant API 方法。它还提供了一些额外的辅助方法,用于处理常用操作,例如初始集合上传。

安装

pip install qdrant-client

示例

实例化客户端

from qdrant_client import QdrantClient

client = QdrantClient(host="localhost", port=6333)

创建新集合

from qdrant_client.models import VectorParams, Distance

if not client.collection_exists("my_collection"):
   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  # Return 5 closest points
)

按过滤条件搜索相似向量

from qdrant_client.models import Filter, FieldCondition, Range

hits = client.search(
   collection_name="my_collection",
   query_vector=query_vector,
   query_filter=Filter(
      must=[  # These conditions are required for search results
            FieldCondition(
               key='rand_number',  # Condition based on values of `rand_number` field.
               range=Range(
                  gte=3  # Select only those results where `rand_number` >= 3
               )
            )
      ]
   ),
   limit=5  # Return 5 closest points
)

异步客户端

从版本 1.6.1 开始,所有 Python 客户端方法都提供了异步版本。

from qdrant_client import AsyncQdrantClient, models
import numpy as np
import asyncio

async def main():
   # Your async code using QdrantClient might be put here
   client = AsyncQdrantClient(url="http://localhost:6333")

   if not await client.collection_exists("my_collection"):
      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(),  # type: ignore
      limit=10,
   )

   print(res)

asyncio.run(main())

异步模式支持 gRPC 和 REST API。

重点类

索引和表格

API 参考

Qdrant

了解更多关于 Qdrant 向量搜索项目和生态系统的信息

探索 Qdrant

相似性学习

探索使用相似性学习解决实际问题

学习相似性学习

社区

寻找处理类似问题的人,获取您问题的答案

加入社区