Summary
Replace the custom Python/Gunicorn embedding service (knowledge-embeddings Docker container at :8001) with direct Ollama integration and support for bring-your-own-key (BYOK) providers like OpenAI.
Current State
- Knowledge uses
EmbeddingServiceInterface backed by a custom EmbeddingService that calls a Gunicorn Python server running BAAI/bge-large-en-v1.5 at http://localhost:8001/embed
- This is the same model Ollama already serves locally (
bge-large) on the same hardware
- The Gunicorn container is a single point of failure with no scaling, no fallback, and extra operational overhead
Proposed Changes
- Add Ollama embedding provider — call Ollama's
/api/embed endpoint directly (or via laravel/ai if feasible in Laravel Zero)
- Add OpenAI-compatible provider — support
text-embedding-3-large or any OpenAI-compatible API with an API key
- Config-driven provider selection —
~/.knowledge/config.json or env vars to choose provider:
{
"embeddings": {
"provider": "ollama",
"model": "bge-large",
"url": "http://100.68.122.24:11434"
}
}
- Kill
knowledge-embeddings container — remove Docker service, update docs
- No vector re-indexing needed — same
bge-large model produces identical 1024-dim vectors
Context
Acceptance Criteria
Summary
Replace the custom Python/Gunicorn embedding service (
knowledge-embeddingsDocker container at:8001) with direct Ollama integration and support for bring-your-own-key (BYOK) providers like OpenAI.Current State
EmbeddingServiceInterfacebacked by a customEmbeddingServicethat calls a Gunicorn Python server runningBAAI/bge-large-en-v1.5athttp://localhost:8001/embedbge-large) on the same hardwareProposed Changes
/api/embedendpoint directly (or vialaravel/aiif feasible in Laravel Zero)text-embedding-3-largeor any OpenAI-compatible API with an API key~/.knowledge/config.jsonor env vars to choose provider:{ "embeddings": { "provider": "ollama", "model": "bge-large", "url": "http://100.68.122.24:11434" } }knowledge-embeddingscontainer — remove Docker service, update docsbge-largemodel produces identical 1024-dim vectorsContext
laravel/aithe-shit/vectorv0.1.1 is now the Qdrant layer (PR feat: wire the-shit/vector as official Qdrant connector #145, merged)100.68.122.24:11434withbge-largepulledAcceptance Criteria
bge-largemodelknowledge-embeddingsDocker container is removed