Skip to content

Capabilities

Edge implements the same plan path as remote Qdrant and shares its response envelope, but it is a single-process engine. This page is the definitive boundary: what runs offline, what fails, and with which stable error code.

The rule is simple: unsupported is a loud, stable error, never a silent no-op. Every rejection carries a reason and, when applicable, a "use remote Qdrant" hint.

CapabilityEdgeNotes
Parser, planner, explainyesidentical to remote
Dense nearest searchyesHNSW, single-threaded per shard
Sparse search (BM25 hash)yesdefault; real ONNX with sparse_model
Hybrid dense + sparseyesfront-form or tail-form USING HYBRID
Fusion RRF / DBSFyesplain FUSION RRF uses k = 2; parameterized form honors PARAMS (rrf_k, rrf_weights)
MMRyesdense only
Recommendpartialbest_score and sum_scores only
Context / Discoveryesrequires embeddable inputs
Formula scoringyesfull operator set including geo and decay
Relevance feedbackyesnaive strategy
QUERY POINTSyesintegers or UUIDs
Scrollyescursor via AFTER / next_page_offset
Countyesexact by default
Order-by queriesyesQUERY ORDER BY field ASC/DESC
Random sampleyesQUERY SAMPLE RANDOM
CTEs / prefetchyesWITH … PREFETCH
Cross rerankyesclient-side, host cross-encoder model
Score threshold, offset/limityes
PARAMS (hnsw_ef, exact, quantization, indexed_only)yes
Payload filtersyescomparisons, IN, BETWEEN, MATCH, geo, NESTED, …
UPSERT with auto-embeddingyesdense, sparse, multi, image
DELETE / payload / vector operationsyesby id or filter
CREATE/DROP COLLECTIONyes
CREATE/DROP INDEXyeskeyword, integer, float, bool, geo, text, datetime, uuid
SHOW COLLECTIONS / SHOW COLLECTIONyes
Query/update batchingpartialfan-out, not a native batch RPC
GROUP BYnoQQL-EDGE-UNSUPPORTED-GROUP-BY
SHARD routing / custom shardingnoQQL-EDGE-UNSUPPORTED-SHARD
CREATE/DROP SHARD KEYnoQQL-EDGE-UNSUPPORTED-SHARD-KEY
ALTER COLLECTIONnoQQL-EDGE-UNSUPPORTED-ALTER
Collection WITH PARAMSnoQQL-EDGE-UNSUPPORTED-COLLECTION-PARAMS
PARAMS (acorn = …)noQQL-EDGE-UNSUPPORTED-ACORN
RECOMMEND STRATEGY average_vectornoQQL-EDGE-UNSUPPORTED-RECOMMEND-STRATEGY
Point-id query inputsnoQQL-EDGE-UNSUPPORTED-POINT-REF
String point IDs (non-UUID)noQQL-EDGE-INVALID-POINT-ID
gRPC transportnoedge has no protobuf dependency
PARAMS (timeout, consistency)noQQL-EDGE-UNSUPPORTED-TIMEOUT / QQL-EDGE-UNSUPPORTED-CONSISTENCY
Remote image URLspartiallocal ONNX embedder: local file paths only; the HTTP embedder forwards the source string verbatim, so endpoints that accept HTTP(S) image URLs can back CLIP vision
QQLCollections and indexesTry in playground
CREATE COLLECTION docs HYBRID;
CREATE INDEX ON COLLECTION docs FOR category TYPE keyword;
SHOW COLLECTIONS;
DROP COLLECTION docs;
QQLUpsert with auto-embeddingTry in playground
UPSERT INTO docs VALUES
{id: 1, text: 'runs locally', category: 'edge'},
{id: 2, text: 'shipped to production', category: 'qql'}
USING HYBRID;

Upserts embed text on-device (or via the configured HTTP endpoint) into the schema's dense and sparse vectors. Explicit vectors work too:

QQLExplicit dense vectorTry in playground
UPSERT INTO docs VALUES {id: 1, text: 'precomputed', vector: {dense: [0.1, 0.2, 0.3]}};
QQLDelete and payload updatesTry in playground
DELETE FROM docs WHERE status = 'expired';
UPDATE docs SET PAYLOAD = {status: 'reviewed'} WHERE id = 42;
UPDATE docs SET VECTOR = [0.1, 0.2, 0.3] WHERE id = 42;
CLEAR PAYLOAD FROM docs WHERE status = 'archived';
DELETE PAYLOAD draft FROM docs WHERE id = 42;
DELETE VECTOR colbert FROM docs WHERE id = 42;
QQLDense, sparse, and hybrid searchTry in playground
QUERY TEXT 'edge vector search' FROM docs USING dense LIMIT 10;
QUERY TEXT 'keyword style' FROM docs USING sparse LIMIT 10;
QUERY 'hybrid' FROM docs USING HYBRID LIMIT 10;
QUERY HYBRID TEXT 'hybrid' DENSE dense SPARSE sparse FUSION RRF FROM docs LIMIT 10;
QQLFusion, MMR, and recommendationTry in playground
WITH candidates AS (QUERY TEXT 'x' USING dense LIMIT 100)
QUERY FUSION RRF FROM docs PREFETCH (candidates) LIMIT 10;
QUERY MMR TEXT 'x' DIVERSITY 0.7 CANDIDATES 100 FROM docs USING dense LIMIT 10;
QUERY RECOMMEND POSITIVE (1, 2) NEGATIVE (3) STRATEGY best_score FROM docs USING dense LIMIT 10;
QQLAdvanced query formsTry in playground
QUERY FORMULA $score * 0.8 DEFAULTS (score = 0.0) FROM docs LIMIT 10;
QUERY CONTEXT (POSITIVE TEXT 'good' NEGATIVE TEXT 'bad') FROM docs LIMIT 10;
QUERY SAMPLE RANDOM FROM docs LIMIT 10;
QUERY ORDER BY year DESC FROM docs LIMIT 10;

Cross-encoder reranking runs client-side: candidate stages execute against local storage and the host cross-encoder model scores the pairs.

QQLSearch params, threshold, and offsetTry in playground
QUERY TEXT 'x' FROM docs USING dense
PARAMS (hnsw_ef = 64, exact = true)
SCORE THRESHOLD 0.5
LIMIT 10 OFFSET 20;

execute with a list of statements or a semicolon-delimited string is executed statement-by-statement against the edge backend. There is no native batch RPC — results are returned per operation with cardinality matching the input.

Every unsupported feature returns a stable error code. The message includes the feature, the reason, and a remediation hint.

CodeFeature
QQL-EDGE-UNSUPPORTED-GROUP-BYGROUP BY / query groups
QQL-EDGE-UNSUPPORTED-SHARDSHARD routing or collection sharding options
QQL-EDGE-UNSUPPORTED-SHARD-KEYCREATE / DROP SHARD KEY
QQL-EDGE-UNSUPPORTED-ALTERALTER COLLECTION
QQL-EDGE-UNSUPPORTED-COLLECTION-PARAMScollection WITH PARAMS (replication, shard count, …)
QQL-EDGE-UNSUPPORTED-ACORNPARAMS (acorn = …)
QQL-EDGE-UNSUPPORTED-RECOMMEND-STRATEGYRECOMMEND STRATEGY average_vector
QQL-EDGE-UNSUPPORTED-POINT-REFpoint-id-only inputs (need materialized vectors)
QQL-EDGE-UNSUPPORTED-ROUTEany other unmapped projection
QQL-EDGE-INVALID-POINT-IDnon-integer, non-UUID string point IDs

Example rejection:

GROUP BY / query groups is not supported offline: qdrant-edge has no /points/query/groups
endpoint. Use remote Qdrant (REST or gRPC) for this feature.

See the complete list of fixed codes in the error codes reference.

Recommendations and point reference inputs: QUERY POINT 42 FROM docs, QUERY RECOMMEND POSITIVE (1), and similar point-id inputs need the point's vector materialized. Text, vector, or image inputs that can be embedded by the configured model work; point-id-only inputs fail with QQL-EDGE-UNSUPPORTED-POINT-REF (or resolve to vectors first).

timeout and consistency are request-level fields for remote REST/gRPC transports and are rejected offline with QQL-EDGE-UNSUPPORTED-TIMEOUT and QQL-EDGE-UNSUPPORTED-CONSISTENCY. hnsw_ef, exact, quantization, and indexed_only are honored.

Edge has no gRPC and no protobuf dependency. The runtime executor always dispatches through the embedded QdrantOps backend. If your tooling needs gRPC, use the remote path.

For storage behavior across restarts and the data directory layout, continue to persistence.