faz
Databases

Qdrant

Connect faz to a Qdrant vector database. Intent-based JSON queries — search, scroll, count, recommend.

Qdrant's connector talks to the REST API. Queries are JSON with an intent field that picks the operation. Filters use Qdrant's payload language; vectors are caller-supplied.

Default portQuery languageWrite supportSchema discoveryDriver
6333Intent-based JSONYes (RBAC-gated)Collection enumerationqdrant-client

Quick example

faz.yaml
databases:
  - name: <database>          # used as --database <database> in queries
    type: qdrant
    host: localhost
    port: 6333
    ssl: false
    extra:
      api_key: <api-key>      # leave empty if your Qdrant doesn't require auth

permissions:
  - database: <database>      # must match `name:` above
    access: R
    # access codes:
    # R    read only           — search, scroll, count, recommend
    # W    write only          — upsert, delete (no reads — blocked at connector)
    # RW   read + write
    # RA   read + append       — reads + upsert
    # RWA  read + write, no DELETE
    # A    admin (incl. collection DDL — blocked at connector)

See Permissions for the full model, per-table overrides, and the operation matrix.

faz query '{"intent":"search","vector":[<your-vector>],"limit":5}' --database <database> --table <collection> --language vector
uv run faz query '{"intent":"search","vector":[<your-vector>],"limit":5}' --database <database> --table <collection> --language vector
python -m faz query '{"intent":"search","vector":[<your-vector>],"limit":5}' --database <database> --table <collection> --language vector

Configuration

FieldTypeDefaultNotes
hoststringlocalhostQdrant host.
portinteger6333REST API port. gRPC port (6334) isn't exposed by the connector.
databasestring""Not used. Collections are addressed via the IR step's table.
usernamestring""Not used.
passwordstring""Not used.
sslbooleanfalseWhen true, uses HTTPS.
extramapping{}api_key for managed Qdrant Cloud or hosted setups.

Capabilities

Supported intents:

IntentOp classNotes
searchSELECTVector similarity. vector, filter, limit, score_threshold.
scrollSELECTPagination through a collection without similarity scoring.
countSELECTOptional filter.
recommendSELECTProvide positive/negative point ids; finds similar candidates.

The query body's filter field uses Qdrant's payload-filter language directly; the connector passes it through to the client.

Schema discovery enumerates collections and reports their vector dimensions and payload schema.

Limitations

  • Write intents are blocked at the connector level: upsert, delete, create_collection, delete_collection. Qdrant's data plane is reachable through faz only for reads. Use Qdrant's own client for write workflows.
  • No batch search. A single search call submits one query vector. Batch queries need multiple calls (or a federated query).
  • Filter language is Qdrant-native — different from Weaviate's filters. Reads on Weaviate aren't directly portable.

Troubleshooting

ConnectionError / unable to connect — Qdrant isn't listening on host:port. curl http://host:port/ should return a JSON banner.

401 Unauthorizedextra.api_key is missing or wrong. Test via curl: curl -H "api-key: $QDRANT_API_KEY" http://host:port/collections.

Collection not found — the table you submitted doesn't exist. List collections: curl http://host:port/collections.

Vector dimension mismatch — your vector length doesn't match the collection's configured dimension. Qdrant returns this directly; faz passes it through.

For the broader troubleshooting flow, see Connection failed.

On this page