QQL
ONE LANGUAGE · EVERY HOST

Declarative vector search for Qdrant

Parse once, enforce policy on a typed AST, plan once, then execute over REST, gRPC, or in-process edge—from Rust, Python, Node.js, WebAssembly, or the CLI.

qql-rs quickstart
# Install the qql-rs CLI
curl -fsSL https://raw.githubusercontent.com/srimon12/qql-rs/main/scripts/install.sh | sh
# Save the QQL below as quickstart.qql, then run:
qql execute quickstart.qql
CREATE COLLECTION docs (
dense VECTOR(384, COSINE),
bm25 SPARSE
);
UPSERT INTO docs VALUES {
id: 1,
text: 'QQL provides typed vector retrieval',
category: 'qql'
} USING HYBRID;
QUERY TEXT 'typed query language' FROM docs
USING HYBRID DENSE dense SPARSE bm25 FUSION RRF
WHERE category = 'qql'
LIMIT 5;

One coherent execution stack

The language, policy model, planner, and host bindings evolve together in the qql-rs workspace.

Strict language frontend

Full-input parsing, typed statements, stable structured errors, versioned conformance fixtures, and canonical AST snapshots.

Transport-neutral planning

Collection schema and embedding preparation feed one plan IR before REST, gRPC, or edge projection.

AST-level isolation

Recursively inject trusted tenant predicates before planning, while keeping custom shard routing a separate concern.

Native and web SDKs

RustPythonNode.jsWASM

Common questions

What is QQL?

QQL is a typed, declarative query language and execution stack for Qdrant. It covers retrieval, filtering, mutations, schema operations, and policy-safe AST rewriting.

Which SDKs are available?

The qql-rs workspace ships Rust crates, native Python and Node.js bindings, a WebAssembly package, and the qql command-line tool.

How does multitenancy work?

Hosts parse untrusted QQL and inject a trusted tenant filter into the AST before planning. Custom SHARD routing is separate and can be used alongside the filter.

Does QQL replace Qdrant?

No. QQL plans operations for Qdrant and dispatches them over REST or gRPC, or evaluates the supported subset through the in-process edge backend.