Qdrant

Python Client library for the Qdrant vector search engine.

PyPI version OpenAPI Docs Apache 2.0 License Discord Roadmap 2023

# Python Qdrant Client Client library and SDK for the [Qdrant](https://github.com/qdrant/qdrant) vector search engine. Library contains type definitions for all Qdrant API and allows to make both Sync and Async requests. Client allows calls for all [Qdrant API methods](https://qdrant.github.io/qdrant/redoc/index.html) directly. It also provides some additional helper methods for frequently required operations, e.g. initial collection uploading. See [QuickStart](https://qdrant.tech/documentation/quick-start/#create-collection) for more details! ## Installation ``` pip install qdrant-client ``` ## Features - Type hints for all API methods - Local mode - use same API without running server - REST and gRPC support - Minimal dependencies ## Local mode

Qdrant

Python client allows you to run same code in local mode without running Qdrant server. Simply initialize client like this: ```python from qdrant_client import QdrantClient client = QdrantClient(":memory:") # or client = QdrantClient(path="path/to/db") # Persists changes to disk ``` Local mode is useful for development, prototyping and testing. - You can use it to run tests in your CI/CD pipeline. - Run it in Colab or Jupyter Notebook, no extra dependencies required. See an [example](https://colab.research.google.com/drive/1Bz8RSVHwnNDaNtDwotfPj0w7AYzsdXZ-?usp=sharing) - When you need to scale, simply switch to server mode. ### How it works? We just implemented Qdrant API in pure Python. We covered it with tests extensively to be sure it works the same as the server version. ## Connect to Qdrant server To connect to Qdrant server, simply specify host and port: ```python from qdrant_client import QdrantClient client = QdrantClient(host="localhost", port=6333) # or client = QdrantClient(url="http://localhost:6333") ``` You can run Qdrant server locally with docker: ```bash docker run -p 6333:6333 qdrant/qdrant:latest ``` See more launch options in [Qdrant repository](https://github.com/qdrant/qdrant#usage). ## Connect to Qdrant cloud You can register and use [Qdrant Cloud](https://cloud.qdrant.io/) to get a free tier account with 1GB RAM. Once you have your cluster and API key, you can connect to it like this: ```python from qdrant_client import QdrantClient qdrant_client = QdrantClient( url="https://xxxxxx-xxxxx-xxxxx-xxxx-xxxxxxxxx.us-east.aws.cloud.qdrant.io:6333", api_key="", ) ``` ## Examples Create a new collection ```python from qdrant_client.models import Distance, VectorParams client.recreate_collection( collection_name="my_collection", vectors_config=VectorParams(size=100, distance=Distance.COSINE), ) ``` Insert vectors into a collection ```python 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) ] ) ``` Search for similar vectors ```python query_vector = np.random.rand(100) hits = client.search( collection_name="my_collection", query_vector=query_vector, limit=5 # Return 5 closest points ) ``` Search for similar vectors with filtering condition ```python 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 ) ``` See more examples in our [Documentation](https://qdrant.tech/documentation/)! ### gRPC To enable (typically, much faster) collection uploading with gRPC, use the following initialization: ```python from qdrant_client import QdrantClient client = QdrantClient(host="localhost", grpc_port=6334, prefer_grpc=True) ``` ## Async client Async methods are available in raw autogenerated clients. Usually, you don't need to use them directly, but if you need extra performance, you can access them directly. ### Async gRPC Example of using raw async gRPC client: ```python from qdrant_client import QdrantClient, grpc client = QdrantClient(prefer_grpc=True, timeout=3.0) grpc_collections = client.async_grpc_collections res = await grpc_collections.List(grpc.ListCollectionsRequest(), timeout=1.0) ``` More examples can be found [here](./tests/test_async_qdrant_client.py). ### 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