Qdrant Vector Store

April 8, 2026 ยท View on GitHub

Import: from selectools.rag.stores import QdrantVectorStore Stability: beta Added in: v0.21.0

QdrantVectorStore wraps the official qdrant-client to give you a self-hosted or Qdrant Cloud-backed vector store. It auto-creates collections, supports cosine similarity by default, and lets you filter searches on metadata via Qdrant's payload indexing.

from selectools.embeddings import OpenAIEmbeddingProvider
from selectools.rag import Document
from selectools.rag.stores import QdrantVectorStore

embedder = OpenAIEmbeddingProvider()
store = QdrantVectorStore(
    embedder=embedder,
    collection_name="my_docs",
    url="http://localhost:6333",
)

store.add_documents([
    Document(text="Qdrant is a vector search engine.", metadata={"category": "infra"}),
    Document(text="It supports REST and gRPC.", metadata={"category": "infra"}),
])

# search() takes a query embedding, not a string โ€” embed the query first
query_vec = embedder.embed_query("vector search")
results = store.search(query_vec, top_k=2)

!!! tip "See Also" - FAISS - In-process vector index, no server required - pgvector - PostgreSQL-backed vector store - RAG - Higher-level retrieval pipeline


Install

pip install "selectools[rag]"

qdrant-client>=1.7.0 is part of the [rag] extras.

You also need a running Qdrant instance. The simplest way:

docker run -p 6333:6333 -p 6334:6334 qdrant/qdrant

Or sign up for Qdrant Cloud and get a managed instance.


Constructor

QdrantVectorStore(
    embedder: EmbeddingProvider,
    collection_name: str = "selectools",
    url: str = "http://localhost:6333",
    api_key: str | None = None,
    prefer_grpc: bool = True,
    **qdrant_kwargs,
)
ParameterDescription
embedderAny EmbeddingProvider. Used to compute vectors for both add_documents() and search().
collection_nameQdrant collection. Auto-created on first add_documents() if it doesn't exist.
urlQdrant server URL. Use https://... for cloud.
api_keyOptional API key for Qdrant Cloud or authenticated servers.
prefer_grpcWhen True (default) the client uses gRPC for lower-latency vector ops.
**qdrant_kwargsAdditional arguments forwarded to qdrant_client.QdrantClient.

Cloud Configuration

import os

store = QdrantVectorStore(
    embedder=OpenAIEmbedder(),
    collection_name="prod_docs",
    url="https://my-cluster.qdrant.io",
    api_key=os.environ["QDRANT_API_KEY"],
)

Metadata Filtering

Document metadata is stored as Qdrant payload, so you can filter searches at the database level. Use qdrant_client.models.Filter constructs and pass them via **search_kwargs (the store forwards them to the underlying client).


API Reference

MethodDescription
add_documents(docs)Embed documents and upsert into the collection
search(query, top_k)Cosine similarity search
delete(ids)Delete documents by ID
clear()Delete the entire collection

#ScriptDescription
7878_qdrant_vector_store.pyQdrant quickstart with metadata filtering