0 / 0

Personnalisation des paramètres de l'expérience RAG

Dernière mise à jour : 09 juin 2025
Personnalisation des paramètres de l'expérience RAG

Lorsque vous créez une solution de génération augmentée par extraction dans l'AutoAI, vous pouvez personnaliser les paramètres de l'expérience pour adapter vos résultats.

Si vous exécutez une expérience RAG sur la base des paramètres par défaut, le processus AutoAI sélectionne :

  • La mesure d'optimisation à maximiser lors de la recherche du meilleur pipeline RAG
  • Les modèles d'intégration à essayer, sur la base de la liste disponible
  • Les modèles de fondation à essayer, sur la base de la liste disponible

Pour mieux contrôler l'expérience RAG, vous pouvez personnaliser les paramètres de l'expérience. Après avoir saisi les informations nécessaires à la définition de l'expérience, cliquez sur Paramètres de l'expérience pour personnaliser les options avant de lancer l'expérience. Les paramètres que vous pouvez revoir ou modifier se répartissent en trois catégories :

  • Récupération et génération : choisissez la métrique à utiliser pour optimiser le choix du modèle RAG, la quantité de données à récupérer et les modèles que l' AutoAI e peut utiliser pour l'expérience.
  • Indexation : choisir la manière dont les données sont réparties en blocs, la métrique utilisée pour mesurer la similarité sémantique et le modèle d'intégration que l' AutoAI peut utiliser pour l'expérimentation.
  • Informations complémentaires : vérifiez l'instance d'exécution watsonx.ai et l'environnement à utiliser pour l'expérience.

Paramètres de récupération et de génération

Visualiser ou modifier les paramètres utilisés pour générer les pipelines RAG.

Métrique d'optimisation

Choisissez la métrique à maximiser lors de la recherche des modèles RAG optimaux. Pour plus d'informations sur les mesures d'optimisation et leurs détails de mise en œuvre, voir les mesures RAG.

  • La fidélité de la réponse mesure le degré d'alignement de la réponse générée avec le contexte récupéré dans le magasin de vecteurs. Le score est calculé à l'aide d'une métrique lexicale qui compte le nombre de tokens de réponse générés inclus dans le contexte récupéré à partir du magasin de vecteurs. Un score élevé indique que la réponse représente bien le contexte recherché. Notez qu'un score de fidélité élevé n'indique pas nécessairement l'exactitude de la réponse. Pour plus d'informations sur la mise en œuvre de l'indicateur, voir Fidélité.
  • La justesse de la réponse mesure la justesse de la réponse générée par rapport à la réponse correcte fournie dans les fichiers de référence. Il s'agit notamment de la pertinence du contexte retrouvé et de la qualité de la réponse générée. Le score est calculé à l'aide d'une métrique lexicale qui compte le nombre de jetons de réponse de la réalité terrain inclus dans la réponse générée. Pour plus d'informations sur la mise en œuvre de la métrique, voir Correctness.
  • L'exactitude du contexte indique dans quelle mesure le contexte extrait du magasin de vecteurs correspond au contexte de vérité terrain fourni dans le benchmark. Le score est calculé en fonction du rang du contexte de vérité terrain parmi les morceaux extraits. Plus le contexte de la réalité terrain est proche du haut de la liste, plus le score est élevé. Pour plus d'informations sur la mise en œuvre de la métrique, voir Correction du contexte.

Méthodes de récupération

Vous pouvez sélectionner automatiquement les configurations pour récupérer les données pertinentes ou modifier les paramètres de configuration. Les méthodes de recherche diffèrent par la manière dont elles filtrent et classent les documents.

  • Choisissez la méthode de recherche par fenêtre ou la méthode de recherche simple.

    • La méthode de récupération de fenêtre entoure les morceaux récupérés avec des morceaux supplémentaires avant et après les morceaux, en fonction de ce qui se trouvait dans le document d'origine. Cette méthode est utile pour inclure plus de contexte qui pourrait manquer dans le morceau récupéré à l'origine. La récupération de la fenêtre fonctionne comme suit :
      • Rechercher : Trouve les fragments de document les plus pertinents dans le magasin de vecteurs.
      • Développer : pour chaque bloc trouvé, récupère les blocs environnants pour fournir un contexte.
      • Chaque bloc stocke son numéro de séquence dans ses métadonnées.
      • Après avoir récupéré un bloc, les métadonnées de ce bloc sont utilisées pour aller chercher les blocs voisins du même document. Par exemple, si window_size est égal à 2, il ajoute 2 morceaux avant et 2 morceaux après.
      • Fusionner : Combine le texte qui se chevauche dans la fenêtre pour supprimer les répétitions.
      • Gestion des métadonnées : fusionne les dictionnaires de métadonnées en conservant les mêmes clés et en regroupant les valeurs dans des listes.
      • Return : Sort la fenêtre fusionnée en tant que nouveau morceau, en remplaçant l'original.
    • Une méthode de récupération simple permet de trouver les morceaux les plus pertinents dans le magasin vectoriel.
  • Sélectionnez le nombre de morceaux de 1 à 10. Le nombre de morceaux d'extraction détermine le nombre de morceaux plus petits en lesquels un passage de texte extrait est divisé.

  • Si vous sélectionnez la méthode de récupération par fenêtre, vous pouvez définir la taille de la fenêtre entre 1 et 4. La taille de la fenêtre est le nombre de morceaux adjacents pris en compte par le modèle lors de la recherche d'informations dans les documents indexés.

  • Vous pouvez choisir une stratégie hybride pour améliorer la qualité de la sortie. Une stratégie hybride combine des vecteurs d'intégration denses et épars pour effectuer une recherche de similarité dans la base de données vectorielle. Les encastrements épars donnent la priorité aux correspondances exactes de mots clés, et les encastrements denses donnent la priorité aux résultats qui présentent une similarité sémantique. La combinaison d'encastrements épars et denses améliore la précision et la pertinence de la recherche, ce qui permet d'obtenir des informations plus complètes à partir de la base de données. Ce paramètre n'est pas disponible pour la base de données vectorielles Chroma en mémoire. Si vous utilisez la base de données vectorielle Elasticsearch, vous devez installer le modèle ELSER.

    Choisissez l'une de ces options de stratégie hybride :

    • RRF (Reciprocal Rank Fusion) : Combine les classements de plusieurs sources en une seule liste plus pertinente. Pour utiliser RRF avec la base de données vectorielle Elasticsearch, vous devez disposer de la version Elasticsearch 8.8 ou d'une version ultérieure.
    • Pondéré : Attribue de l'importance aux résultats et donne la priorité au plus fiable d'entre eux pour le résultat final.
    • Aucun : Utilise uniquement des encastrements denses, sans stratégie hybride.

Modèles de fondation à inclure

Vous pouvez choisir d'utiliser des modèles de fondation fournis ou des modèles de fondation personnalisés.

Par défaut, tous les modèles de fondations disponibles qui supportent AutoAI pour RAG sont sélectionnés pour l'expérimentation. Vous pouvez modifier manuellement la liste des modèles de fondation fournis que AutoAI peut prendre en compte pour générer des modèles RAG. Pour chaque modèle, vous pouvez cliquer sur Détails du modèle pour afficher ou exporter les détails du modèle.

Pour obtenir la liste des modèles de fondations disponibles et leur description, voir Modèles de fondations par tâche.

Pour utiliser des modèles de fondation personnalisés, cliquez sur Modèles personnalisés et sélectionnez les modèles que vous souhaitez que AutoAI prenne en compte pour générer des modèles RAG. La liste des modèles personnalisés comprend les modèles déployés à la demande et les modèles personnalisés qui sont déployés dans le projet où vous menez l'expérience et dans tous les espaces dont vous êtes membre.

Pour ajouter un nouveau modèle de fondation personnalisé, voir Déploiement de modèles de fondation personnalisés.

Pour plus d'informations sur la manière de coder une expérience avec un modèle de base personnalisé, voir Coder une expérience RAG AutoAI avec un modèle de base personnalisé.

Nombre maximal de motifs RAG à réaliser

Vous pouvez spécifier le nombre de modèles RAG à réaliser dans la phase d'expérimentation, jusqu'à un maximum de 20. Un nombre plus élevé compare plus de modèles et peut donner des modèles mieux notés, mais consomme plus de ressources informatiques.

Correspondre à la langue d'entrée

Par défaut, AutoAI détecte automatiquement la langue utilisée dans les invites et demande aux modèles de répondre dans la même langue. Les modèles qui ne prennent pas en charge la langue d'entrée sont moins prioritaires dans la recherche du modèle RAG. Désactivez ce paramètre pour prendre en compte tous les modèles disponibles et générer des réponses en anglais uniquement.

Paramètres d'indexation

Affichez ou modifiez les paramètres de création de la base de données vectorielles de texte à partir de la collection de documents.

Granularisation

Vous pouvez sélectionner automatiquement des configurations pour le regroupement de vos données ou modifier les paramètres de configuration. Les paramètres de découpage déterminent la manière dont les documents indexés sont divisés en morceaux plus petits avant d'être intégrés dans un magasin vectoriel. Le découpage des données permet de rechercher et de récupérer les morceaux d'un document les plus pertinents pour une requête. Cela permet au modèle de génération de ne traiter que les données les plus pertinentes.

AutoAI RAG utilise LangChain’s recursive text splitter pour découper les documents en morceaux. Cette méthode a pour effet de décomposer le document de manière hiérarchique, en essayant de garder tous les paragraphes (puis les phrases, puis les mots) ensemble aussi longtemps que possible, jusqu'à ce que le morceau soit plus petit que la taille de morceau demandée. Pour plus d'informations sur la méthode de découpage récursif, voir Retrieval recursively split by character dans la documentation Langchain.

La meilleure façon de découper vos données dépend de votre cas d'utilisation. Les morceaux plus petits permettent une interaction plus granulaire avec le texte, ce qui permet une recherche plus ciblée du contenu pertinent, tandis que les morceaux plus grands peuvent fournir plus de contexte. Pour votre cas d'utilisation de découpage, spécifiez une ou plusieurs options pour :

  • Le nombre de caractères à inclure dans chaque bloc de données.
  • Le nombre de caractères à chevaucher pour le découpage des données. Le nombre doit être inférieur à la taille du découpage.

Les options retenues sont explorées et comparées dans la phase d'expérimentation.

Modèles d'intégration

Les modèles d'intégration sont utilisés dans les solutions de génération augmentée par extraction pour encoder les morceaux et les requêtes sous forme de vecteurs afin de capturer leur signification sémantique. Les blocs de données d'entrée vectorisées sont ingérés dans un magasin vectoriel. Lorsqu'une requête est formulée, la représentation vectorisée est utilisée pour rechercher les blocs pertinents dans le magasin de vecteurs.

Pour obtenir la liste des modèles d'intégration disponibles pour une utilisation avec les expériences AutoAI RAG, consultez Modèles d'encodeur pris en charge disponibles avec watsonx.ai.

Renseignements supplémentaires

Examinez l'instance d'exécution watsonx.ai utilisée pour cette expérience et la définition de l'environnement.

Paramètres de configuration pour les réglages de l'expérience

Si vous codez une expérience AutoAI RAG, vous pouvez configurer les paramètres par programme à l'aide de l'objet rag_optimizer . Pour plus d'informations sur la manière d'initialiser l'optimiseur RAG avec des paramètres personnalisés, voir Working with AutoAI RAG class and rag_optimizer.

Paramètre Descriptif Valeurs
nom Entrez un nom valide pour l'expérience Nom de l'expérimentation
description Décrire éventuellement l'expérience Description de l'expérimentation
granularisation Paramètres de regroupement pour le fractionnement des documents {"method": "recursive", "chunk_size": 256, "chunk_overlap": 128}
modèles d'intégration Intégrer des modèles à essayer ibm/slate-125m-english-rtrvr
intfloat/multilingual-e5-large
récupération Paramètres de récupération Utiliser AutoAIRAGRetrievalConfig dataclass
modèles_de_fondation Modèles de base ou modèles personnalisés à utiliser Voir les modèles de fondation par tâche
Utiliser AutoAIRAGModelConfig ou AutoAIRAGCustomModelConfig
génération Configuration de l'étape de génération {"language": {"auto_detect": False}}
max_number_of_rag_patterns Nombre maximal de motifs RAG à créer 4-20
optimisation_métrie Nom(s) de la métrique à utiliser pour l'optimisation faithfulness
answer_correctness
context_correctness

Vous trouverez ci-dessous des exemples de code que vous pouvez utiliser pour initialiser l'optimiseur RAG et configurer chaque paramètre.

Exemple de configuration de recherche :

from ibm_watsonx_ai.foundation_models.schema import AutoAIRAGRetrievalConfig, AutoAIRAGHybridRankerParams, HybridRankerStrategy
from ibm_watsonx_ai.foundation_models.extensions.rag.retriever import RetrievalMethod


retrieval_config = AutoAIRAGRetrievalConfig(
    method=RetrievalMethod.SIMPLE,
    number_of_chunks=5,
    window_size=2,
    hybrid_ranker=AutoAIRAGHybridRankerParams(
        strategy=HybridRankerStrategy.RRF,
        sparse_vectors={"model_id": "elser_model_2"},
        alpha=0.9,
        k=70,
    )
)

Exemple de configuration d'un modèle de fondation :

from ibm_watsonx_ai.foundation_models.schema import (
    AutoAIRAGModelConfig,
    AutoAIRAGCustomModelConfig,
    AutoAIRAGModelParams,
    TextGenDecodingMethod
)

# Foundation model
model_id = "meta-llama/llama-3-1-8b-instruct"

# Foundation model with properties
fm = AutoAIRAGModelConfig(
    model_id="ibm/granite-13b-instruct-v2",
    parameters=AutoAIRAGModelParams(
        decoding_method=TextGenDecodingMethod.SAMPLE,
        min_new_tokens=5,
        max_new_tokens=300,
    max_sequence_length=4096,
    ),
    prompt_template_text="My question {question} related to these documents {reference_documents}.",
    context_template_text="My document {document}",
    word_to_token_ratio=1.5,
)

# Custom foundation model with properties
custom_fm = AutoAIRAGCustomModelConfig(
    deployment_id="<PASTE_DEPLOYMENT_ID_HERE>",
    space_id="<PASTE_SPACE_ID_HERE>",
    parameters=AutoAIRAGModelParams(
        decoding_method=TextGenDecodingMethod.GREEDY,
        min_new_tokens=5,
        max_new_tokens=300,
    max_sequence_length=4096,
    ),
    prompt_template_text="My question {question} related to these documents {reference_documents}.",
    context_template_text="My document {document}",
    word_to_token_ratio=1.5,
)

foundation_models = [model_id, fm, custom_fm]

Exemple de configuration de regroupement :

chunking_config = {
    "method": "recursive",
    "chunk_size": 256,
    "chunk_overlap": 128,
}

Exemple d'initialisation d'un optimiseur RAG avec une configuration personnalisée :

from ibm_watsonx_ai.experiment import AutoAI

experiment = AutoAI(credentials, project_id=project_id)

rag_optimizer = experiment.rag_optimizer(
    name="DEMO - AutoAI RAG ibm-watsonx-ai SDK documentation",
    description="AutoAI RAG experiment grounded with the ibm-watsonx-ai SDK documentation",
    embedding_models=["ibm/slate-125m-english-rtrvr", "intfloat/multilingual-e5-large"],
    foundation_models=foundation_models,
    retrieval=[retrieval_config],
    chunking=[chunking_config],
    generation={"language": {"auto_detect": False}},
    max_number_of_rag_patterns=5,
    optimization_metrics=[AutoAI.RAGMetrics.ANSWER_CORRECTNESS],
)

En savoir plus

Génération améliorée par récupération (RAG)

Sujet parent : Créer une expérience RAG