docs(config): add storage backends configuration reference - #1904
Conversation
Establish guide/configuration.md as the canonical home for per-backend connection settings, with a compatibility table and connection-variable reference for the chroma, sqlite_exact, qdrant, and pgvector backends. remote-server.md already links Postgres + pgvector to /guide/configuration, but the page had no backend section; this populates that target. New backends add one table row plus a connection subsection, keeping README's compatibility table in sync rather than accreting a prose paragraph per backend.
There was a problem hiding this comment.
Code Review
This pull request adds comprehensive documentation for the pluggable storage backends supported by MemPalace (ChromaDB, SQLite exact, Qdrant, and Postgres + pgvector) in website/guide/configuration.md. The review feedback suggests improving the documentation's clarity and accuracy by standardizing the "Select with" column in the backends table to consistently use backend identifiers, and specifying the exact default value of 10.0 seconds for the Qdrant timeout configuration variable.
Important
The consumer version of Gemini Code Assist on GitHub is being sunset. Starting June 18, 2026, new organization installations will be blocked, and all code review activity will officially cease on July 17, 2026.
For more details on the timeline and next steps, please review the Help Documentation.
| | `chroma` _(default)_ | Local (embedded) | bundled | – | ✓ | default | | ||
| | `sqlite_exact` | Local (exact cosine) | bundled | – | ✓ | `--backend sqlite_exact` | | ||
| | `qdrant` | Server (REST) | bundled | ✓ | ✓ | `MEMPALACE_QDRANT_URL` | | ||
| | `pgvector` | Server (Postgres) | `mempalace[pgvector]` | ✓ | ✓ | `MEMPALACE_PGVECTOR_DSN` | |
There was a problem hiding this comment.
The Select with column is currently inconsistent. For sqlite_exact it lists the CLI flag --backend sqlite_exact, but for qdrant and pgvector it lists their connection environment variables (MEMPALACE_QDRANT_URL and MEMPALACE_PGVECTOR_DSN), which do not actually select the backend (they only configure it once selected).
To select a backend, users must pass the backend name (e.g., qdrant or pgvector) to --backend or MEMPALACE_BACKEND. We should update this column to consistently list the backend identifier/name.
| | `chroma` _(default)_ | Local (embedded) | bundled | – | ✓ | default | | |
| | `sqlite_exact` | Local (exact cosine) | bundled | – | ✓ | `--backend sqlite_exact` | | |
| | `qdrant` | Server (REST) | bundled | ✓ | ✓ | `MEMPALACE_QDRANT_URL` | | |
| | `pgvector` | Server (Postgres) | `mempalace[pgvector]` | ✓ | ✓ | `MEMPALACE_PGVECTOR_DSN` | | |
| | `chroma` _(default)_ | Local (embedded) | bundled | – | ✓ | `chroma` (default) | | |
| | `sqlite_exact` | Local (exact cosine) | bundled | – | ✓ | `sqlite_exact` | | |
| | `qdrant` | Server (REST) | bundled | ✓ | ✓ | `qdrant` | | |
| | `pgvector` | Server (Postgres) | `mempalace[pgvector]` | ✓ | ✓ | `pgvector` | |
| | `MEMPALACE_QDRANT_URL` | `http://localhost:6333` | Qdrant REST endpoint | | ||
| | `MEMPALACE_QDRANT_API_KEY` | _(none)_ | Sent as the `api-key` header when set | | ||
| | `MEMPALACE_QDRANT_NAMESPACE` | _(none)_ | Collection namespace prefix (tenant isolation) | | ||
| | `MEMPALACE_QDRANT_TIMEOUT` | backend default | REST request timeout, in seconds | |
There was a problem hiding this comment.
The default value for MEMPALACE_QDRANT_TIMEOUT is explicitly defined as 10.0 seconds in mempalace/config.py (via self._file_config.get("qdrant_timeout", 10.0)). Specifying the actual default value of 10.0 is more precise and helpful to users than backend default.
| | `MEMPALACE_QDRANT_TIMEOUT` | backend default | REST request timeout, in seconds | | |
| | `MEMPALACE_QDRANT_TIMEOUT` | `10.0` | REST request timeout, in seconds | |
Rename the table's 'Select with' column to 'Configure with' and list each backend's primary connection knob, since a connection variable (e.g. MEMPALACE_QDRANT_URL) configures a backend but does not select it — selection is uniform via --backend / MEMPALACE_BACKEND, covered in the prose below the table. Also state the concrete MEMPALACE_QDRANT_TIMEOUT default (10.0s).
Summary
Establishes
guide/configuration.mdas the canonical home for per-backendstorage configuration, so connection settings live in the docs reference
instead of accreting one prose paragraph per backend in the README.
Install / namespace isolation / lexical search / how to select) for the
current backends:
chroma,sqlite_exact,qdrant,pgvector.(
MEMPALACE_QDRANT_*,MEMPALACE_PGVECTOR_*), grounded in each backend'sdeclared
capabilitiesandconfig.pydefaults.at contract level.
MEMPALACE_BACKENDinto the Environment Variables quick-index.Why now
The Remote / Team Server guide already links "Postgres + pgvector" to
/guide/configuration, but that page had no backend content — the link waseffectively dead. This populates the target.
It also creates the structure the in-flight Milvus backend can extend: a new
backend adds one table row plus one connection subsection (and keeps the
README compatibility table in sync) rather than a new README paragraph.
Testing
bun run docs:build— clean, no dead links, all anchors resolve.