Funk-lab/ansible/roles/rag
ALI YESILKAYA af98b47018
docs(cluster): aligne la doc sur l'état réel + re-ingest RAG + fix ubatch embed (#44)
* fix(rag): ubatch=2048 pour llama-embed + retry rag-ingest + nettoie defaults rag

L'instance llama-embed (:1238) tournait avec l'ubatch llama.cpp par défaut (512).
En mode --embeddings + pooling, toute l'entrée doit tenir dans un seul ubatch →
tout chunk > 512 tokens échouait en HTTP 500 « input too large to process.
increase the physical batch size ». ~46 chunks du RAG (CHUNK_MAX=2000 chars ≈
700 tokens) n'étaient pas indexés.

- llama_server : ajoute llama_embed_ubatch_size (2048 = ctx) + flags
  --batch-size/--ubatch-size dans le template llama-embed.service.
- rag-ingest : retry (5×, backoff) sur erreurs transitoires 5xx/réseau de l'embed.
- rag/defaults : aligne embed_url/embed_model sur nomic :1238 (étaient des vars
  mortes pointant encore qwen3-8b :1234 — trompeuses).

Résultat : ré-ingestion 436/436 chunks, 0 erreur.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

* docs(cluster): aligne la doc sur l'état réel (relevé 2026-06-21) + snapshot

Passe de vérification terrain (SSH s01/g01 + kubectl) pour corriger les écarts
doc↔réalité, et ajout d'un document de référence vérifié.

- admin/ops/etat-cluster.md (nouveau) : snapshot daté — machines, services+ports
  par hôte, workloads k8s, namespaces, IngressRoute, bases PG, modèles LiteLLM,
  RAG/Qdrant, + procédure pour régénérer le relevé.
- OS AlmaLinux 9.7 → 9.8 (s01/g01) ; précise k8s v1.33.1 (CLAUDE/README/install/talos).
- RAG funk-docs : retire le warning périmé « supprimée 2026-06-17 / à re-ingérer » →
  reconstruite (436 chunks, nomic-embed-text :1238 dim 768, CPU). Maj rag.md,
  incidents.md, stt.md.
- Namespace sacrifice (hors-repo, hors ArgoCD) + bases PG grafana/sacrifice +
  services ai via IngressRoute + registry in-cluster (CLAUDE.md, k9s.md).
- Services de résilience (llm-heartbeat, llama-watchdog/embed) et instances CPU
  manuelles :1236/:1237 (souvent éteintes) documentés.
- Journal progress/2026-06-21.md : section relevé + RAG.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-21 23:29:05 +02:00
..
defaults docs(cluster): aligne la doc sur l'état réel + re-ingest RAG + fix ubatch embed (#44) 2026-06-21 23:29:05 +02:00
files docs(cluster): aligne la doc sur l'état réel + re-ingest RAG + fix ubatch embed (#44) 2026-06-21 23:29:05 +02:00
handlers feat(rag): RAG Hermes — Qdrant + rag-ingest/rag-query + skill funk-ai 2026-05-14 22:16:06 +02:00
tasks feat(rag): RAG Hermes — Qdrant + rag-ingest/rag-query + skill funk-ai 2026-05-14 22:16:06 +02:00
README.md feat(rag): embedder dédié nomic-embed-text (768) au lieu de qwen3-8b (#25) 2026-06-19 21:52:52 +02:00

rag

Déploie la chaîne RAG sur storage-01 : scripts d'ingestion/requête + copie des docs + skill Hermes.

Ce que fait le rôle

  • Crée /srv/data/rag/docs
  • Déploie /usr/local/bin/rag-ingest et /usr/local/bin/rag-query
  • Synchronise admin/ du repo vers /srv/data/rag/docs/ (copie indexée)
  • Déploie le skill rag-docs dans les skills globaux Hermes + le profil funk-ai

Variables principales

Variable Défaut
rag_docs_dir /srv/data/rag/docs
qdrant_url http://127.0.0.1:6333
embed_url http://192.168.10.20:1238/v1/embeddings (instance llama-embed dédiée)
embed_model / dim nomic-embed-text / 768
rag_collection funk-docs

Ces valeurs sont les défauts codés dans rag-ingest/rag-query (surchargeables par env : EMBED_URL, EMBED_MODEL, RAG_VECTOR_DIM, RAG_MIN_SCORE, RAG_EXCLUDE). rag-ingest et rag-query doivent utiliser le même modèle/dim, sinon la recherche renvoie n'importe quoi.

Workflow après modification de admin/

ansible-playbook -i inventory.yml playbooks/storage-01.yml --tags rag   # re-sync les docs
ssh storage-01 /usr/local/bin/rag-ingest                                # ré-indexe dans Qdrant

(hermes-auto-improve fait aussi un rsync + rag-ingest en fin de run.)

Caveats

  • Dépendances fortes : Qdrant up (:6333) et l'instance llama-embed up (:1238, nomic-embed-text) — sinon connection refused
  • rag-ingest exclut hermes/builtin/ (rapports auto-générés par hermes-auto-improve) via RAG_EXCLUDE — ils noyaient sinon la vraie doc (~84% des points)
  • Changement de modèle d'embedding = changement de dimension → il faut supprimer puis recréer la collection (curl -X DELETE …/collections/funk-docs avant rag-ingest), sinon Qdrant refuse un vecteur de dim différente