Skip to content

docs(config): add storage backends configuration reference - #1904

Merged
igorls merged 2 commits into
developfrom
docs/storage-backend-config
Jun 30, 2026
Merged

docs(config): add storage backends configuration reference#1904
igorls merged 2 commits into
developfrom
docs/storage-backend-config

Conversation

@igorls

@igorls igorls commented Jun 30, 2026

Copy link
Copy Markdown
Member

Summary

Establishes guide/configuration.md as the canonical home for per-backend
storage configuration, so connection settings live in the docs reference
instead of accreting one prose paragraph per backend in the README.

  • Adds a Storage backends section with a compatibility table (Mode /
    Install / namespace isolation / lexical search / how to select) for the
    current backends: chroma, sqlite_exact, qdrant, pgvector.
  • Documents each backend's connection variables in its own subsection
    (MEMPALACE_QDRANT_*, MEMPALACE_PGVECTOR_*), grounded in each backend's
    declared capabilities and config.py defaults.
  • Keeps the verbatim-data opt-in warning and the shared marker-file guarantee
    at contract level.
  • Wires MEMPALACE_BACKEND into 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 was
effectively 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.

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.
@igorls
igorls requested a review from milla-jovovich as a code owner June 30, 2026 10:26

@gemini-code-assist gemini-code-assist Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.

Comment thread website/guide/configuration.md Outdated
Comment on lines +33 to +36
| `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` |

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

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.

Suggested change
| `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` |

Comment thread website/guide/configuration.md Outdated
| `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 |

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

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.

Suggested change
| `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).
@igorls
igorls merged commit 3b8d265 into develop Jun 30, 2026
8 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant