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 port | Query language | Write support | Schema discovery | Driver |
|---|---|---|---|---|
| 6333 | Intent-based JSON | Yes (RBAC-gated) | Collection enumeration | qdrant-client |
Quick example
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 vectoruv run faz query '{"intent":"search","vector":[<your-vector>],"limit":5}' --database <database> --table <collection> --language vectorpython -m faz query '{"intent":"search","vector":[<your-vector>],"limit":5}' --database <database> --table <collection> --language vectorConfiguration
| Field | Type | Default | Notes |
|---|---|---|---|
host | string | localhost | Qdrant host. |
port | integer | 6333 | REST API port. gRPC port (6334) isn't exposed by the connector. |
database | string | "" | Not used. Collections are addressed via the IR step's table. |
username | string | "" | Not used. |
password | string | "" | Not used. |
ssl | boolean | false | When true, uses HTTPS. |
extra | mapping | {} | api_key for managed Qdrant Cloud or hosted setups. |
Capabilities
Supported intents:
| Intent | Op class | Notes |
|---|---|---|
search | SELECT | Vector similarity. vector, filter, limit, score_threshold. |
scroll | SELECT | Pagination through a collection without similarity scoring. |
count | SELECT | Optional filter. |
recommend | SELECT | Provide 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
searchcall 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 Unauthorized — extra.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.
Related
- Databases overview — cross-connector basics.
- Weaviate — sibling vector database with a richer intent vocabulary.
- Milvus — sibling vector database.
faz.yaml— the full config schema.