coffreobsidian/inbox/Notes complémentaires préambule Ragflow.md
2025-05-05 17:13:35 +02:00

4.4 KiB

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:
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