Python Qdrant client library
Client library for the Qdrant vector search engine.
Library contains type definitions for all Qdrant API and allows to make both Sync and Async requests.
Pydantic
is used for describing request models and httpx
for handling http queries.
Client allows calls for all Qdrant API methods directly. It also provides some additional helper methods for frequently required operations, e.g. initial collection uploading.
Installation
pip install qdrant-client
Development
This project uses git hooks to run code formatters.
Install pre-commit
with pip3 install pre-commit
and set up hooks with pre-commit install
.
pre-commit requires python>=3.8
Examples
Instance a client
from qdrant_client import QdrantClient
client = QdrantClient(host="localhost", port=6333)
# or
client = QdrantClient(url="http://localhost:6333")
Create a new collection
from qdrant_client.models import Distance, VectorParams
client.recreate_collection(
collection_name="my_collection",
vectors_config=VectorParams(size=100, distance=Distance.COSINE),
)
Get info about created collection
my_collection_info = client.get_collection("my_collection")
print(my_collection_info.dict())
Insert vectors into a collection
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(),
)
for idx, vector in enumerate(vectors)
]
)
Search for similar vectors
query_vector = np.random.rand(100)
hits = client.search(
collection_name="my_collection",
query_vector=query_vector,
query_filter=None, # Don't use any filters for now, search across all indexed points
append_payload=True, # Also return a stored payload for found points
limit=5 # Return 5 closest points
)
Search for similar vectors with filtering condition
from qdrant_client.http.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=0.5 # Select only those results where `rand_number` >= 0.5
)
)
]
),
append_payload=True, # Also return a stored payload for found points
limit=5 # Return 5 closest points
)
Check out full example code
gRPC
gRPC support in Qdrant client is under active development. Basic classes could be found here.
To enable (much faster) collection uploading with gRPC, use the following initialization:
from qdrant_client import QdrantClient
client = QdrantClient(host="localhost", grpc_port=6334, prefer_grpc=True)