faz
Databases

Milvus

Connect faz to a Milvus vector database. Intent-based JSON queries — search, query, get, count.

Milvus's connector uses the pymilvus client (specifically MilvusClient, the simplified high-level API). Queries are JSON with an intent field. The connector exposes the data plane only.

Default portQuery languageWrite supportSchema discoveryDriver
19530Intent-based JSONYes (RBAC-gated)Collection metadatapymilvus

Quick example

faz.yaml
databases:
  - name: <database>          # used as --database <database> in queries
    type: milvus
    host: localhost
    port: 19530
    username: <username>      # leave empty if Milvus auth is disabled
    password: <password>

permissions:
  - database: <database>      # must match `name:` above
    access: R
    # access codes:
    # R    read only           — search, query, get, count
    # W    write only          — insert, upsert, delete (no reads — blocked at connector)
    # RW   read + write
    # RA   read + append       — reads + insert
    # 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
hoststringlocalhostMilvus host.
portinteger19530Milvus gRPC port.
databasestring""Milvus DB name (Milvus 2.3+ supports multiple databases). Empty uses the default.
usernamestring""Set when Milvus's RBAC is enabled.
passwordstring""Password.
sslbooleanfalseWhen true, uses TLS.
extramapping{}Reserved.

Capabilities

Supported intents:

IntentOp classNotes
searchSELECTVector similarity. vector, filter (boolean expression), limit.
querySELECTBoolean-expression filter without vector similarity.
getSELECTFetch by primary key.
countSELECTTotal or filtered row count.

Filter strings use Milvus's boolean-expression language (e.g. "price > 100 && stock < 50"). The connector passes them through to the client.

Schema discovery returns each collection's field schema. Field types include the standard scalars (INT8/16/32/64, FLOAT, DOUBLE, BOOL, VARCHAR, JSON, ARRAY) plus vector types (BINARY_VECTOR, FLOAT_VECTOR, FLOAT16_VECTOR, BFLOAT16_VECTOR).

Limitations

  • Write intents are blocked: insert, upsert, delete, drop_collection, create_collection. Manage Milvus collections outside faz.
  • load_collection and partition loading aren't reachable through query_simple. If a collection isn't loaded, queries error with "collection not loaded"; load it via pymilvus directly.
  • No streaming — large search results are buffered.

Troubleshooting

MilvusException: failed to connect — Milvus isn't listening on host:port. Verify with pymilvus's connections.connect.

Authentication failed / RBAC denied — credentials are wrong (or Milvus's RBAC denies the read for this user/role).

Collection not loaded — load the collection in Milvus before querying. faz doesn't auto-load.

Vector dimension mismatch — your vector length doesn't match the collection's configured dimension. Check via describe_collection to see the schema.

For the broader troubleshooting flow, see Connection failed.

On this page