Qdrant gRPC Compatibility Tracker

December 30, 2025 · View on GitHub

Target Version: Qdrant v1.16.x (via github.com/qdrant/go-client/qdrant)
Goal: 100% SDK compatibility using the upstream Qdrant gRPC contract
Philosophy: This layer is translation-only; storage/search semantics live in NornicDB core

Contract

NornicDB exposes a single gRPC surface: the official upstream Qdrant gRPC contract (package qdrant).

Embedding Ownership

  • If NORNICDB_EMBEDDING_ENABLED=true (NornicDB-managed embeddings): vector mutation RPCs are rejected with FailedPrecondition to avoid conflicting sources of truth.
  • If NORNICDB_EMBEDDING_ENABLED=false (client-managed vectors): Qdrant clients can fully manage stored vectors via gRPC.

Implemented RPCs (SDK-critical)

Collections

RPCStatusNotes
CreateSingle-vector and named-vector configs
GetReturns minimal-but-valid CollectionInfo (defaults filled for SDK parsing)
List
DeleteDeletes collection metadata and points
UpdateNo-op (validates existence; NornicDB manages params)
CollectionExists

Points

RPCStatusNotes
UpsertDense vectors + named vectors
GetWith payload/vectors selectors
DeleteBy ID list or filter
Count
Search / SearchBatchvector_name supported
Query / QueryBatchSupports VectorInput (Dense/Id) and Document when embeddings are enabled
Scroll
SetPayload / OverwritePayload / DeletePayload / ClearPayload
UpdateVectors / DeleteVectorsSubject to embedding ownership flag
Recommend / RecommendBatch
SearchGroups
CreateFieldIndex / DeleteFieldIndex

Snapshots

RPCStatusNotes
CreateCollection snapshot as NornicDB snapshot artifact
List
Delete
CreateFullUses storage backup when available, otherwise full export snapshot
ListFull
DeleteFull

Tests / Verification

  • Unit tests: go test ./pkg/qdrantgrpc -v
  • Go integration (server feature-flag): go test ./pkg/server -run QdrantGRPC -v
  • Python SDK compatibility E2E: ./scripts/qdrantgrpc_e2e_python.sh