Vector names answer “which vector?” Vector roles answer “what input shape and embedding path?” QQL keeps those decisions separate.
| Form | Role |
|---|---|
USING semantic | Resolve role from collection schema |
USING semantic AS DENSE | Explicit dense vector |
USING lexical AS SPARSE | Explicit sparse vector |
USING colbert AS MULTI | Explicit dense multivector |
QUERY TEXT 'late interaction' FROM papersUSING colbert AS MULTILIMIT 10;Late-interaction reranking
Section titled “Late-interaction reranking”WITH candidates AS ( QUERY TEXT 'vector compression' USING dense LIMIT 100)QUERY RERANK TEXT 'vector compression' MODEL 'colbert-v2'FROM papersUSING colbert AS MULTIPREFETCH (candidates)LIMIT 10;This embeds the query as a dense multivector and uses Qdrant MaxSim against the stored multivector target.
Cross-encoder reranking
Section titled “Cross-encoder reranking”WITH candidates AS ( QUERY TEXT 'vector compression' USING dense LIMIT 50)QUERY CROSS RERANK TEXT 'vector compression'MODEL 'bge-reranker-base'ON FIELD abstractFROM papersPREFETCH (candidates)LIMIT 10;Cross reranking reads candidate text from the payload, calls the host's pair-scoring capability, and reorders hits client-side. It does not use a Qdrant multivector target.