Qdrant Plugins

Qdrant functions and classes

Qdrant Data Plugin

QdrantDataPlugin integrates with a Qdrant database. search_request_kwargs can be any valid inputs to a Qdrant SearchRequest


source

QdrantDataPlugin

 QdrantDataPlugin (k:int, collection_name:str,
                   qdrant_client:qdrant_client.qdrant_client.QdrantClient,
                   item_key:Optional[str]=None,
                   search_request_kwargs:Optional[dict]=None,
                   distance_cutoff:Optional[float]=None)

QdrantDataPlugin - data plugin for working with a qdrant vector database.

The data query will run k nearest neighbors against the qdrant collection collection_name

Optionally, item_key denotes the key in an object’s payload corresponding to the item value

search_request_kwargs are optional kwargs sent to models.SearchRequest

if distance_cutoff is specified, query results with a distance greater than distance_cutoff are ignored

Type Default Details
k int k nearest neighbors to return
collection_name str qdrant collection name
qdrant_client QdrantClient qdrant client
item_key typing.Optional[str] None key in qdrant payload denoting item value
search_request_kwargs typing.Optional[dict] None optional kwargs for SearchRequest
distance_cutoff typing.Optional[float] None query to result distance cutoff
n_vectors = 1000
d_vectors = 128
n_queries = 5

vectors = np.random.randn(n_vectors, d_vectors)
payloads = [{'rand':np.random.rand(), 'item' : str(np.random.randint(0, 1e6))} for i in range(n_vectors)]
queries = np.random.randn(n_queries, d_vectors)

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

client.recreate_collection(
    collection_name="test_collection",
    vectors_config=models.VectorParams(size=d_vectors, distance=models.Distance.EUCLID),
)

operation_info = client.upsert(
    collection_name="test_collection",
    points=models.Batch(
        ids=[i for i in range(n_vectors)],
        payloads=payloads,
        vectors=vectors.tolist()
    )
)

client.update_collection(
            collection_name='test_collection',
            optimizer_config=models.OptimizersConfigDiff(
                indexing_threshold=1
            )
        )

search_filter = models.Filter(
    must=[
            models.FieldCondition(
            key="rand",
            range=models.Range(
                gt=None,
                gte=None,
                lt=None,
                lte=0.8,
            ),
        )
    ]
)

data_function = QdrantDataPlugin(5, "test_collection", client, item_key='item', 
                             search_request_kwargs={'filter' : search_filter})

data_module = DataSourceModule(data_function)

batch = build_batch_from_embeddings(queries)
batch2 = data_module(batch)

for q in batch2:
    for r in q:
        assert r.internal.parent_id == q.id