
Клиентская библиотека Python для поисковой системы Qdrant Vector.
Клиентская библиотека и SDK для поисковой системы Qdrant Vector.
Библиотека содержит определения типа для всех Qdrant API и позволяет выполнять как синхронизацию, так и асинхронные запросы.
Клиент позволяет напрямую для всех методов Qdrant API. Он также предоставляет некоторые дополнительные вспомогательные методы для часто необходимых операций, например, начальная загрузка сбора.
Смотрите QuickStart для более подробной информации!
Документация по API клиента Python доступна на Python-client.qdrant.tech
pip install qdrant-client

Python Client позволяет запускать тот же код в локальном режиме без запуска Qdrant Server.
Просто инициализируйте клиента, как это:
from qdrant_client import QdrantClient
client = QdrantClient ( ":memory:" )
# or
client = QdrantClient ( path = "path/to/db" ) # Persists changes to diskЛокальный режим полезен для разработки, прототипирования и тестирования.
pip install qdrant-client[fastembed]
Fastembed - это библиотека для создания быстрых векторных вторжений на процессоре. Он основан на времени выполнения ONNX и позволяет выполнять вывод на процессоре с помощью GPU-подобной производительности.
Клиент Qdrant может использовать FastEmbed для создания встраиваний и загружать их в Qdrant. Это позволяет упростить API и сделать его более интуитивно понятным.
from qdrant_client import QdrantClient
# Initialize the client
client = QdrantClient ( ":memory:" ) # or QdrantClient(path="path/to/db")
# Prepare your documents, metadata, and IDs
docs = [ "Qdrant has Langchain integrations" , "Qdrant also has Llama Index integrations" ]
metadata = [
{ "source" : "Langchain-docs" },
{ "source" : "Linkedin-docs" },
]
ids = [ 42 , 2 ]
# Use the new add method
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 )Fastembed также может использовать GPU для более быстрых встроений. Чтобы включить поддержку GPU, установить
pip install ' qdrant-client[fastembed-gpu] ' from qdrant_client import QdrantClient
# Initialize the client
client = QdrantClient ( ":memory:" ) # or QdrantClient(path="path/to/db")
client . set_model ( client . DEFAULT_EMBEDDING_MODEL , providers = [ "CUDAExecutionProvider" , "CPUExecutionProvider" ])ПРИМЕЧАНИЕ:
fastembed-gpuиfastembedявляются взаимоисключающими. Вы можете установить только один из них.Если вы ранее установили
fastembed, вам может потребоваться начать с свежей среды для установкиfastembed-gpu.
Чтобы подключиться к Qdrant Server, просто укажите хост и порт:
from qdrant_client import QdrantClient
client = QdrantClient ( host = "localhost" , port = 6333 )
# or
client = QdrantClient ( url = "http://localhost:6333" )Вы можете запустить Qdrant Server локально с Docker:
docker run -p 6333:6333 qdrant/qdrant:latestСмотрите больше вариантов запуска в репозитории Qdrant.
Вы можете зарегистрировать и использовать Qdrant Cloud, чтобы получить бесплатную учетную запись уровня с 1 ГБ оперативной памяти.
После того, как у вас есть кластер и ключ API, вы можете подключиться к нему так:
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>" ,
)Создать новую коллекцию
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 )
# NOTE: consider splitting the data into chunks to avoid hitting the server's payload size limit
# or use `upload_collection` or `upload_points` methods which handle this for you
# WARNING: uploading points one-by-one is not recommended due to requests overhead
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
)Смотрите больше примеров в нашей документации!
Чтобы включить (как правило, гораздо быстрее) загрузка сбора с GRPC, используйте следующую инициализацию:
from qdrant_client import QdrantClient
client = QdrantClient ( host = "localhost" , grpc_port = 6334 , prefer_grpc = True )Начиная с версии 1.6.1, все методы клиента Python доступны в асинхронной версии.
Чтобы использовать его, просто импортируйте AsyncQdrantClient вместо QdrantClient :
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" )
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 поддерживаются в асинхронном режиме. Больше примеров можно найти здесь.
Этот проект использует Git Hooks для запуска форматер кодов.
Установите pre-commit с помощью pip3 install pre-commit и настройте крючки с pre-commit install .
Предварительный коммит требует Python> = 3,8