# 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/` ```bash 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