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
@@ -218,7 +220,18 @@ What is not built yet is the full done state from the plan, especially live feed
218
220
219
221
Compute embeddings for all ingested content and store them in Qdrant for similarity search.
220
222
221
-
**Embedding model:** Local, free — `sentence-transformers/all-MiniLM-L6-v2` (384 dimensions) or `nomic-embed-text` via Ollama (768 dimensions). Configurable via `EMBEDDING_MODEL` env var.
223
+
**Embedding backend:** Configurable via `EMBEDDING_PROVIDER` plus `EMBEDDING_MODEL`.
224
+
225
+
-`sentence-transformers`: local Hugging Face / SentenceTransformers model loading
226
+
-`ollama`: local model served over Ollama's embedding API
227
+
-`openrouter`: hosted embeddings through the OpenRouter `/embeddings` API
-`get_reference_similarity(tenant_id: int, vector: list[float]) -> float` — average similarity against reference corpus
248
262
263
+
**Operational usage:**
264
+
265
+
-`just embed-all` — backfill embeddings for all content rows
266
+
-`just embed-tenant <tenant_id>` — backfill one tenant's content
267
+
-`python3 manage.py sync_embeddings --content-id <id>` — re-embed one record
268
+
249
269
**Definition of done:** Every ingested content item has an embedding in Qdrant. `search_similar` returns semantically related articles. Reference corpus is seeded for test tenant.
250
270
271
+
- Run `just embed-smoke` to confirm Django can talk to Ollama.
272
+
- If that works, run `just embed-all` or `just embed-tenant <tenant_id>` to backfill real content.
273
+
251
274
### WP5: AI Skills + LangGraph Pipeline
252
275
253
276
Implement the three Phase 1 skills and wire them into a LangGraph orchestrator.
For host-based development without Docker, install `requirements.txt`, then use `python3 manage.py migrate` and `python3 manage.py runserver`. The default `.env.example` is host-safe; Docker Compose overrides the service URLs inside containers.
94
94
95
+
### Embedding Backends
96
+
97
+
The embedding layer is provider-based. Configure it with `EMBEDDING_PROVIDER` and `EMBEDDING_MODEL`:
98
+
99
+
-`sentence-transformers`: loads a Hugging Face / SentenceTransformers model inside the Django process
100
+
-`ollama`: calls a local Ollama server for embeddings
101
+
-`openrouter`: calls OpenRouter's embeddings API using the configured model id
When `just dev` is running, Django admin uses the Postgres database inside Docker, not the host SQLite database. That means host commands like `python manage.py createsuperuser` create users in SQLite and will not let you log into the Docker-backed admin site.
96
137
97
138
Create or update an admin user for the running Docker stack with:
0 commit comments