From f451a29b47338075f46d8ef754db5b4e9a45dacf Mon Sep 17 00:00:00 2001 From: Ladebeze66 Date: Mon, 5 May 2025 17:13:35 +0200 Subject: [PATCH] 0505 --- .obsidian/app.json | 2 +- .obsidian/workspace.json | 26 +++++- ...Notes complémentaires préambule Ragflow.md | 93 +++++++++++++++++++ 3 files changed, 115 insertions(+), 6 deletions(-) create mode 100644 inbox/Notes complémentaires préambule Ragflow.md diff --git a/.obsidian/app.json b/.obsidian/app.json index d222747..d91acde 100644 --- a/.obsidian/app.json +++ b/.obsidian/app.json @@ -1,5 +1,5 @@ { - "spellcheck": true, + "spellcheck": false, "attachmentFolderPath": "./PJ", "newFileLocation": "folder", "newFileFolderPath": "inbox", diff --git a/.obsidian/workspace.json b/.obsidian/workspace.json index 463f25f..8860244 100644 --- a/.obsidian/workspace.json +++ b/.obsidian/workspace.json @@ -20,8 +20,23 @@ "icon": "lucide-file", "title": "Guide Complet des Paramètres LLM" } + }, + { + "id": "e9f11643def27837", + "type": "leaf", + "state": { + "type": "markdown", + "state": { + "file": "inbox/Notes complémentaires préambule Ragflow.md", + "mode": "source", + "source": false + }, + "icon": "lucide-file", + "title": "Notes complémentaires préambule Ragflow" + } } - ] + ], + "currentTab": 1 } ], "direction": "vertical" @@ -78,7 +93,8 @@ } ], "direction": "horizontal", - "width": 234.5 + "width": 234.5, + "collapsed": true }, "right": { "id": "ad0ed0087b43302d", @@ -372,11 +388,12 @@ "obsidian-excalidraw-plugin:New drawing": false } }, - "active": "f53d68a91dcd39e9", + "active": "e9f11643def27837", "lastOpenFiles": [ + "inbox/Guide Complet des Paramètres LLM.md", + "inbox/Notes complémentaires préambule Ragflow.md", "inbox/Modules OCR et Traduction.md", "inbox/main_llama.py.md", - "inbox/Guide Complet des Paramètres LLM.md", "inbox/Gestion des langues.md", "command_list/Ollama commands.md", "inbox/diagrammellamavision.drawio.crswap", @@ -401,7 +418,6 @@ "LLM/traitement_normes_ragflow.md", "LLM/Test Cline.md", "LLM/Résumé LLM-lab.md", - "LLM/Recherches LLama Vision 3.2 90b.md", "inbox/diagrammellamavision.drawio", "inbox/jsonmessages.png", "inbox/agentanalyseimage.png", diff --git a/inbox/Notes complémentaires préambule Ragflow.md b/inbox/Notes complémentaires préambule Ragflow.md new file mode 100644 index 0000000..bf2bb7c --- /dev/null +++ b/inbox/Notes complémentaires préambule Ragflow.md @@ -0,0 +1,93 @@ +### 1. Injection de données automatique (CSV->Ragflow) +#### Possibilité: Import direct via API +- Ragflow expose une API REST pour injecter des documents dans une base de connaissance. +- Tu peux parser tes CSV avec pandas puis envoyer chaque Q/R sous forme de documents. +- Format attendu: JSON avec champs content, metadata, source, etc. +##### Exemple python: +```python +import pandas as pd +import requests + +df = pd.read_csv("analyse_ticket.csv") + +for index, row in df.iterrows(): + payload = { + "collection": "tickets_support", + "document": { + "content": f"Question : {row['question']}\nRéponse : {row['reponse']}", + "metadata" : { + "ticket_id": row['ticket_id'], + "date": row['date'] + } + } + } + response = requests.port("http://localhost:7860/api/documents", json=payload) + print(response.status_code, response.text) +``` + +### 2. Création d'un agent Python Ragflow (sans interface web) + +Tu peux coder un agent Python qui: +- Lit tes données (CSV, JSON, etc.) +- Appelle Ragflow pour les injecter ou les interroger (recherche contextuelle) +- Utilise un LLM pour compléter ou reformuler les réponses +#### Exemple tâches possibles: +- AgentIndexer -> Injecte tes Q/R dans Ragflow +- AgentSearcher -> Reçoit une question, interroge Ragflow, appelle un LLM +- AgentAuditor -> Vérifie la cohérence ou résume les réponses dans Ragflow + +### 3. Choix de LLM: Mistral API vs Ollama local +#### Mistral API (externe): +- Précis, performant, fiable +- Idéal pour tâches complexes: résumé, diagnostic, reformulation +- Nécessite une bonne gestion du débit API et coût +#### Ollama local (modèles custom): +- Rapide, local, sans coût +- Tu peux créer des agents spécifiques pour chaque tâche (indexation; QA, résumé) +- Intégration possible via Ragflow, soit par l'interface, soit par ta couche Pyhton (ex: appel REST à Ollama) + +### 4. Combinaisons possibles dans ton projet +|Objectif|LLM utilisé|Accès Ragflow|Interface| +|---|---|---|---| +|Injection CSV automatique|Aucun ou Mistral/Ollama pour enrichissement|API REST|Python| +|Recherche depuis tickets|Mistral API (précision) ou Ollama local (rapide)|API ou Web UI|Python ou Web| +|Génération réponse automatique|Mistral (formel) ou Ollama (rapide)|API + index Ragflow|Python| +|Triage/priorisation automatique|Agents LLM personnalisés|Index ou table externe|Python avec accès CSV/DB| +### 5. Marche à suivre recommandée (projet scalable) +1. Créer un AgentIndexer -> injecte tes CSV dans Ragflow via API +2. Créer un AgentRagResponder -> interroge Ragflow avec une question, puis appelle un LLM +3. Créer un AgentAudit (optionnel) -> vérifie les réponses générées +4. Test avec deux backends LLM (Mistral API/ Ollama) -> comparer performances +5. Structurer ton pipeline RAG Python dans un module clair(agents/, utils/, config/) + +### 6. Indexation dans Ragflow +#### Objectif: +Ajouter un document dans une base de connaissance vectorielle pour qu'il puisse ensuite être retrouvé via une recherche sémantique. +#### Ce que fait Ragflow: +1. Il vectorise le contenu (content) avec un modèle d'embedding. +2. Il l'associe à une collection (ex: "ticket_support") +3. Il l'enregistre dans une base vectorielle locale (FAISS, Weaviate, etc.) +4. Il garde les métadonnées que tu as envoyées (ex: ticket ID, ligne, source) + +### 7. Par quel procédé ton agent effectue cela? +L'agent AgentRagIndexer automatise ce travail pour toi: +#### Etapes concrètes: +1. Il lit un fichier CSV contenant des questions/réponses +2. Pour chaque ligne: + 1. Il forme une chaîne contenu= "Question : ...\nRéponse : ..." + 2. Il crée un dictionnaire de métadonnées(ex {"ticket_id": ..., "ligne": ...}) +3. Il envoie ces deux élémentes à Ragflow via: + 1. self.ragflow.indexer(contenu, metadata) + 2. POST http://localhost:7860/api/documents + +### 8. Format CSV adpaté +- Tu produit un tableau proprement structuré avec les colonnes question, réponse (et même contexte si besoin) +- C'est un format lisible, léger, et facile à injecter dans Ragflow via script +Amélioration possible: +- Tu pourrais aussi aussi générer un format JSON structuré (utile si tu veux intégrer du multimodal ou enrichir les métadonnées). +- Ton script report_csv_exporter.py permettrait facilement d'ajouter cette exportation complémentaire. + - Le script génère bien un CSV exploitable par Ragflow + - Avec des colonnes question et réponse (ou plusieurs méthodes utilisées) + - Nettoie les caractères spéciaux dans les noms et modèles + +