You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Support local embeddings for self-hosted installs (model downloaded on demand) #202
Without an embedding API key, FrontLit falls back to hash vectors, which barely capture meaning, so self-hosters without a provider key effectively get keyword-only search. A small local embedding model closes that gap and gives a strong self-hosting story:
Content is never sent to a third party just to be indexed (data residency, regulated customers)
Add a local embedding provider (e.g. FastEmbed / ONNX with a small model such as BGE-small) alongside the existing API providers.
Do not bundle the model in the Docker image. The model is downloaded when the user configures indexing in their workspace, then cached on a persistent volume.
When no API key is set, offer local embeddings as the default instead of the hash fallback.
Hosted FrontLit can keep its current provider.
Details to handle
Download progress and errors shown in workspace settings; indexing waits until the model is ready (keyword search keeps working meanwhile)
Configurable model cache path, and an option to pre-seed the model for air-gapped installs
Store the embedding model id and dimension with the index; changing models triggers a full reindex (vectors from different models can't be mixed)
Batching and CPU limits so indexing a large site doesn't starve the web server
Acceptance criteria
Docker image size unchanged (no model files baked in)
Choosing local embeddings in workspace settings downloads the model once and reuses it across restarts
Self-hosted install with no API key gets semantic results from the local model, not hash vectors
Activity