Connect a vector store¶
Three steps for any backend: install its extra (sqlite needs none — it
ships with the core install), pick one key in config.yaml, put its
connection secret in .env. Indexes, collections, tables, and search
schemas are all created automatically on first ingest. All eight
connectors deliver hybrid search;
switching stores never changes your code.
If you select a store whose SDK isn't installed, the error names the exact
extra: pip install "ingestlib[qdrant]".
Prefer compose over the per-tab docker run commands? The repo's
infra/docker-compose.yml
starts any backend with one profile —
docker compose -f infra/docker-compose.yml --profile qdrant up -d —
with ports matching the tabs below, and encodes the startup gotchas
(pg18 volume layout, mongodb's dual mounts, Milvus's companions).
The default. One local file, no server, no keys — sqlite-vec for dense KNN, FTS5 BM25 for lexical, fused with RRF.
Nothing to install or run. Best single-machine choice.
Serverless, fully managed. Two indexes (dense + hosted sparse model) are created on first use.
Local docker or Qdrant Cloud. Dense + BM25 sparse on one collection, fused server-side.
The Postgres you already run — HNSW cosine + built-in full-text over a generated tsvector. The extension is enabled and the table created automatically.
Works with RDS, Supabase, Neon — anywhere the extension ships.
Atlas Vector Search + Atlas Search (true BM25). Atlas any tier, the atlas-local docker image, or self-managed 8.2+ with mongot.
Search indexes sync a few seconds behind writes — ingestion is unaffected; only write-then-query-immediately notices.
Dense ANN + server-computed BM25, fused server-side. Local standalone docker or Zilliz Cloud.
faiss k-NN + Lucene BM25. An Amazon OpenSearch domain — requests are
SigV4-signed with your configured aws.profile, no separate key — or
a local server.
docker run -p 9200:9200 -e discovery.type=single-node \
-e DISABLE_SECURITY_PLUGIN=true opensearchproject/opensearch
For production, bring your own Amazon OpenSearch Service domain (or any
k-NN-capable OpenSearch) and point OPENSEARCH_URL at it — AWS domains
SigV4-sign with your aws.profile.
HNSW dense + native BM25, fused server-side in one hybrid call. Local docker (publish both ports — the client speaks gRPC too) or Weaviate Cloud.
Verify¶
Behaviors shared by every connector¶
- Created on first use — no manual index/collection/table setup, and nothing is created on the read path
- Idempotent re-ingestion — same document overwrites in place; a re-parse with fewer chunks prunes the leftovers
- Namespaces and filters work identically everywhere
- Index/collection/table names are configurable per backend — see the configuration reference
- Only the selected connector's SDK is ever used at runtime
Migrating between stores¶
Moving stores is a rebuild, not an export: change vector_store, then run
reindex() (or
ingestlib reindex), which re-embeds every document straight from the
registry — no re-parse — into the new connector.