
Python Client Library für die QDRant Vector -Suchmaschine.
Client Library und SDK für die QDRant -Vektor -Suchmaschine.
Die Bibliothek enthält Typ -Definitionen für alle QDrant -API und ermöglicht es, sowohl synchronische als auch asynchronisierte Anforderungen zu erstellen.
Der Client ermöglicht Anrufe für alle QDRant -API -Methoden direkt. Es bietet auch einige zusätzliche Helfermethoden für häufig erforderliche Vorgänge, z. B. das Hochladen der Erstsammlung.
Weitere Informationen finden Sie in QuickStart!
Python Client-API-Dokumentation ist unter python-client.qdrant.tech verfügbar
pip install qdrant-client

Mit dem Python -Client können Sie denselben Code im lokalen Modus ausführen, ohne QDrant Server auszuführen.
Initialisieren Sie den Kunden einfach so:
from qdrant_client import QdrantClient
client = QdrantClient ( ":memory:" )
# or
client = QdrantClient ( path = "path/to/db" ) # Persists changes to diskDer lokale Modus ist nützlich für Entwicklung, Prototyping und Test.
pip install qdrant-client[fastembed]
Fastembed ist eine Bibliothek zum Erstellen von Fast Vector -Einbettungen auf der CPU. Es basiert auf ONNX-Laufzeit und ermöglicht es, die Inferenz auf CPU mit GPU-ähnlicher Leistung auszuführen.
Der QDRant -Client kann Fastembed verwenden, um Einbettungen zu erstellen und auf QDRant hochzuladen. Dies ermöglicht die Vereinfachung der API und macht sie intuitiver.
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 kann auch GPU für schnellere Einbettungen verwenden. Um die GPU -Unterstützung zu aktivieren, installieren Sie
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" ])Hinweis:
fastembed-gpuundfastembedschließen sich gegenseitig aus. Sie können nur einen von ihnen installieren.Wenn Sie zuvor
fastembedinstalliert haben, müssen Sie möglicherweise in einer frischen Umgebung aus starten, umfastembed-gpuzu installieren.
Um eine Verbindung zum QDRANT -Server herzustellen, geben Sie einfach Host und Port an:
from qdrant_client import QdrantClient
client = QdrantClient ( host = "localhost" , port = 6333 )
# or
client = QdrantClient ( url = "http://localhost:6333" )Sie können QDrant Server lokal mit Docker ausführen:
docker run -p 6333:6333 qdrant/qdrant:latestWeitere Startoptionen finden Sie im QDrant -Repository.
Sie können QDRant Cloud registrieren und verwenden, um ein kostenloses Tierkonto mit 1 GB RAM zu erhalten.
Sobald Sie Ihren Cluster- und API -Schlüssel haben, können Sie sich wie folgt an eine Verbindung herstellen:
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>" ,
)Erstellen Sie eine neue Sammlung
from qdrant_client . models import Distance , VectorParams
client . create_collection (
collection_name = "my_collection" ,
vectors_config = VectorParams ( size = 100 , distance = Distance . COSINE ),
)Fügen Sie Vektoren in eine Sammlung ein
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 )
]
)Suche nach ähnlichen Vektoren
query_vector = np . random . rand ( 100 )
hits = client . search (
collection_name = "my_collection" ,
query_vector = query_vector ,
limit = 5 # Return 5 closest points
)Suchen Sie nach ähnlichen Vektoren mit Filterbedingung
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
)Weitere Beispiele finden Sie in unserer Dokumentation!
Verwenden Sie die folgende Initialisierung, um die folgende Initialisierung zu aktivieren (normalerweise viel schneller), um mit GRPC zu kollekten:
from qdrant_client import QdrantClient
client = QdrantClient ( host = "localhost" , grpc_port = 6334 , prefer_grpc = True )Ab Version 1.6.1 sind alle Python -Client -Methoden in der asynchronisierenden Version verfügbar.
Um es zu verwenden, importieren Sie einfach AsyncQdrantClient statt 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 ())Sowohl die GRPC- als auch die REST -API werden im asynchronen Modus unterstützt. Weitere Beispiele finden Sie hier.
In diesem Projekt werden Git -Hooks verwendet, um Codeformatierer auszuführen.
Installieren Sie pre-commit mit pip3 install pre-commit und richten Sie die Haken mit pre-commit install ein.
Vorkomment benötigt Python> = 3,8