MicroFish/backend
Dominik Seemann ebeff4940d fix(graph): default embeddings to local ollama and gate empty graph builds
Two coupled changes that together restore non-empty post-migration graph
builds and remove the silent "succeeded but empty" outcome.

Root cause: Config defaulted EMBEDDING_MODEL to OpenAI text-embedding-3-small
(1536 dim), but Graphiti's Neo4j vector index is 1024 dim. With the
documented Dashscope LLM default, EMBEDDING_API_KEY/EMBEDDING_BASE_URL
fell back to LLM_*, producing either a 4xx (since #29 propagates as
Task.FAILED) or a write that landed metadata but no entities.

Changes:
- Flip Config defaults to local Ollama (mxbai-embed-large, 1024 dim,
  http://localhost:11434/v1). Override semantics unchanged: explicit
  EMBEDDING_* env vars continue to win, so existing OpenAI/Gemini setups
  are not affected.
- Gate _build_graph_worker on a non-zero entity-node count before
  complete_task. Mirrors the existing _recover_stuck_projects rule;
  surfaces any residual silent failure as Task.FAILED with the new
  progress.emptyGraphFailure locale key, instead of marking the project
  GRAPH_COMPLETED on an empty graph.
- Update README, CLAUDE.md, and docker-compose.yml comments to reflect
  Ollama as the active default and OpenAI/Gemini as commented fallbacks.
- The matching .env.example diff is recorded in
  .kiro/specs/graph-build-empty-fix/HANDOFF.md for manual operator apply
  (file is hook-protected from the assistant).

Spec: .kiro/specs/graph-build-empty-fix/

Closes #37
2026-05-11 09:43:28 +00:00
..
app fix(graph): default embeddings to local ollama and gate empty graph builds 2026-05-11 09:43:28 +00:00
scripts docs(i18n): translate chinese docstrings/comments in backend/scripts 2026-05-09 10:59:44 +00:00
tests feat(i18n): externalize chinese log and api response strings 2026-05-07 13:52:22 +00:00
pyproject.toml docs(i18n): translate readme tagline and rename chinese assets 2026-05-07 19:39:30 +00:00
requirements.txt fix(file_parser): handle non-UTF-8 encoded text files with automatic encoding detection 2026-01-22 18:28:37 +08:00
run.py docs(i18n): translate chinese docstrings/comments in backend root, api init, simulation_ipc, simulation_manager, zep_entity_reader 2026-05-07 14:49:20 +00:00
uv.lock feat: migrate knowledge graph from Zep Cloud to Graphiti + local Neo4j 2026-03-22 01:30:28 +05:30