Back to docs
Recipe~8 min read

Qdrant Primer

A practical walkthrough for standing up Qdrant as your vector database backend. Covers collection design, payload indexing, and the exact gRPC calls Meridian uses under the hood.

Why Qdrant

Qdrant is a Rust-native vector database built for high-throughput approximate nearest neighbor search. It exposes a gRPC API with first-class payload filtering, quantization, and on-disk storage — no external dependencies beyond a single binary.

Meridian uses Qdrant to store embedding vectors for every indexed document, enabling sub-50ms semantic search across millions of records with real-time upserts.

Collections

A collection is a named set of points (vectors + payloads). Each collection defines a vector configuration — dimension count and distance metric. Meridian defaults to 1536-d vectors with Cosine distance, matching OpenAI's text-embedding-ada-002 output.

{
  "vectors": {
    "size": 1536,
    "distance": "Cosine"
  }
}

Payload Indexing

Every point carries a JSON payload. Qdrant lets you create secondary indexes on payload fields for filtered search. Meridian indexes workspace_id,doc_type, andingested_at.

Search Flow

  1. Client sends query text to Meridian API.
  2. API calls OpenAI embeddings endpoint, receives 1536-d vector.
  3. Vector is sent to Qdrant via gRPC SearchPoints.
  4. Qdrant returns top-k points with payloads and scores.
  5. API hydrates full document metadata and returns to client.

Next Steps

Ready to wire it up? Head to the Meridian + Qdrant integration recipe for the full gRPC client setup, retry logic, and collection bootstrap script.