This document describes vector store administration endpoints and advanced query filters.
-
GET
/api/v1/vector_stores/{store_id}/vectors- List vectors with pagination and optional filtering/sorting.
- Query params:
limit(int, default 50)offset(int, default 0)filter(JSON-encoded object; see Filter Grammar)order_by(idormetadata.<key>)order_dir(ascordesc)
-
GET
/api/v1/vector_stores/{store_id}/admin/index_info- Returns backend index info.
- For PG:
{ index_type: 'hnsw'|'ivfflat'|'none', ops, dimension, metric, ef_search } - For Chroma:
{ backend: 'chroma', index_type: 'managed', dimension, count }
-
POST
/api/v1/vector_stores/admin/hnsw_ef_search- Body:
{ "ef_search": 128 } - Sets session-level HNSW
ef_searchfor PG. No-op for Chroma.
- Body:
-
POST
/api/v1/vector_stores/{store_id}/admin/rebuild_index- Body:
{ "index_type": "hnsw"|"ivfflat"|"drop", "metric": "cosine"|"euclidean"|"ip", "m": 16, "ef_construction": 200, "lists": 100 } - Drops existing embedding index and creates requested type (or drops only).
- Body:
Filters are JSON objects applied against metadata. The adapter supports a simple grammar:
- Logical operators:
$and: list of subclauses$or: list of subclauses
- Field operators:
$eq(or plain value)$neq$in(array of values)$gt,$gte,$lt,$lte(numeric comparisons)
Examples:
- Equality on a field
{"genre": "sci-fi"}- Numeric comparison
{"score": {"$gte": 0.8}}- IN list
{"tag": {"$in": ["a", "b", "c"]}}- AND
{"$and": [ {"genre": "sci-fi"}, {"score": {"$gte": 0.8}} ]}- OR
{"$or": [ {"author": "alice"}, {"author": "bob"} ]}Ordering:
order_by=idsorts by vector id.order_by=metadata.<key>sorts lexicographically by the metadata field.order_dir=asc|desccontrols direction.
Notes:
- PG backend compiles filters into SQL (
metadata @> ...plus basic operators). - Chroma backend forwards simple
wherefilters where supported; advanced operators fall back to basic semantics or client-side processing.