References for RAG

RAGProcessor

Processeur RAG (Retrieval-Augmented Generation) optimisé pour petits LLM.

Cette classe orchestre la récupération de documents pertinents et leur utilisation pour générer des réponses avec un petit modèle LLM Qwen3.

Parameters:
  • model_loader (ModelLoader) –

    Chargeur de modèle LLM.

  • search_engine (SearchEngine) –

    Moteur de recherche vectorielle.

  • db_session (Session) –

    Session de base de données SQLAlchemy.

  • max_tokens_per_doc (int, default: 300 ) –

    Nombre maximum de tokens par document.

  • max_docs (int, default: 5 ) –

    Nombre maximum de documents à utiliser.

Attributes:
  • model_loader (ModelLoader) –

    Chargeur de modèle LLM.

  • search_engine (SearchEngine) –

    Moteur de recherche vectorielle.

  • db_session (Session) –

    Session de base de données SQLAlchemy.

  • max_tokens_per_doc (int) –

    Nombre maximum de tokens par document.

  • max_docs (int) –

    Nombre maximum de documents à utiliser.

  • logger (Logger) –

    Logger pour les messages et diagnostics.

__init__(model_loader, search_engine, db_session, max_tokens_per_doc=300, max_docs=5)

Initialise le processeur RAG.

Parameters:
  • model_loader (ModelLoader) –

    Chargeur de modèle LLM.

  • search_engine (SearchEngine) –

    Moteur de recherche vectorielle.

  • db_session (Session) –

    Session de base de données SQLAlchemy.

  • max_tokens_per_doc (int, default: 300 ) –

    Nombre maximum de tokens par document.

  • max_docs (int, default: 5 ) –

    Nombre maximum de documents à utiliser.

format_context(search_results)

Formate les résultats de recherche en contexte structuré pour le LLM.

Utilise les résultats d'une requête pour créer un contexte formaté qui sera utilisé dans le prompt envoyé au modèle LLM.

Parameters:
  • search_results (SearchResponse) –

    Réponse de recherche contenant les chunks pertinents.

Returns:
  • str( str ) –

    Contexte formaté prêt à être injecté dans le prompt.

get_prompt_template(query, context, prompt_type='standard', **kwargs)

Retourne un template de prompt adapté au type de requête.

Parameters:
  • query (str) –

    Question de l'utilisateur.

  • context (str) –

    Contexte documentaire formaté.

  • prompt_type (str, default: 'standard' ) –

    Type de prompt à utiliser ('standard', 'summary', 'comparison').

  • **kwargs

    Paramètres additionnels spécifiques au type de prompt.

Returns:
  • PromptTemplate( PromptTemplate ) –

    Template de prompt configuré avec les variables appropriées.

Raises:
  • ValueError

    Si le type de prompt spécifié n'est pas reconnu.

retrieve_and_generate(query, filters=None, prompt_type='standard', generation_kwargs=None, enable_thinking=None, **prompt_kwargs) async

Récupère les documents pertinents et génère une réponse.

Parameters:
  • query (str) –

    Question de l'utilisateur.

  • filters (Dict[str, Any], default: None ) –

    Filtres à appliquer lors de la recherche.

  • prompt_type (str, default: 'standard' ) –

    Type de prompt à utiliser ('standard', 'summary', 'comparison').

  • generation_kwargs (Dict[str, Any], default: None ) –

    Paramètres additionnels pour la génération de texte.

  • enable_thinking (Optional[bool], default: None ) –

    Active ou désactive le mode de réflexion. Si None, utilise la configuration du modèle.

  • **prompt_kwargs

    Paramètres additionnels pour le template de prompt.

Returns:
  • tuple( tuple ) –
    • Si enable_thinking=True : (thinking, response, search_results)
    • Si enable_thinking=False : (response, search_results)

retrieve_and_generate_stream(query, filters=None, prompt_type='standard', generation_kwargs=None, enable_thinking=None, **prompt_kwargs) async

Récupère les documents pertinents et génère une réponse en streaming.

Cette méthode enrichit la réponse avec les documents utilisés pour la génération. Chaque fragment retourné est un dictionnaire identifiant son type et contenu.

Parameters:
  • query (str) –

    Question de l'utilisateur.

  • filters (Dict[str, Any], default: None ) –

    Filtres à appliquer lors de la recherche.

  • prompt_type (str, default: 'standard' ) –

    Type de prompt à utiliser ('standard', 'summary', 'comparison').

  • generation_kwargs (Dict[str, Any], default: None ) –

    Paramètres additionnels pour la génération de texte.

  • enable_thinking (Optional[bool], default: None ) –

    Active ou désactive le mode de réflexion. Si None, utilise la configuration du modèle.

  • **prompt_kwargs

    Paramètres additionnels pour le template de prompt.

Yields:
  • AsyncGenerator[Dict[str, Any], None]

    Dict[str, Any]: Fragments de la réponse ou métadonnées avec leur type : - {"type": "thinking", "content": str} pour les parties de réflexion - {"type": "response", "content": str} pour les parties de réponse - {"type": "context", "content": Dict} pour le contexte utilisé - {"type": "error", "content": str} en cas d'erreur - {"type": "done", "content": ""} à la fin du streaming

retrieve_documents(query, filters=None) async

Récupère les documents pertinents pour une requête donnée.

Effectue une recherche dans la base de données vectorielle et retourne les résultats formatés selon le schéma standard de l'application.

Parameters:
  • query (str) –

    Question de l'utilisateur.

  • filters (Dict[str, Any], default: None ) –

    Filtres à appliquer lors de la recherche.

Returns:
  • SearchResponse( SearchResponse ) –

    Réponse contenant les résultats de recherche pertinents.