"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > Évaluation de la génération augmentée par récupération médicale (RAG) avec les points de terminaison NVIDIA AI et Ragas

Évaluation de la génération augmentée par récupération médicale (RAG) avec les points de terminaison NVIDIA AI et Ragas

Publié le 2024-11-15
Parcourir:453

Evaluating Medical Retrieval-Augmented Generation (RAG) with NVIDIA AI Endpoints and Ragas

Dans le domaine de la médecine, l'intégration de technologies avancées est essentielle pour améliorer les soins aux patients et les méthodologies de recherche. La génération augmentée par récupération (RAG) est l'une de ces innovations pionnières, alliant la puissance des grands modèles de langage (LLM) à la récupération de connaissances externes. En extrayant des informations pertinentes des bases de données, de la littérature scientifique et des dossiers des patients, les systèmes RAG fournissent une base de réponse plus précise et enrichie en contexte, répondant aux limites telles que les informations obsolètes et les hallucinations souvent observées dans les LLM purs.

Dans cet aperçu, nous explorerons le rôle croissant de RAG dans le secteur des soins de santé, en nous concentrant sur son potentiel à transformer des applications telles que la découverte de médicaments et les essais cliniques. Nous aborderons également les méthodes et les outils nécessaires pour évaluer les exigences uniques des systèmes RAG médicaux, tels que les points de terminaison LangChain de NVIDIA et le framework Ragas, ainsi que l'ensemble de données MACCROBAT, une collection de rapports de patients de PubMed Central.


Principaux défis du RAG médical

  1. Évolutivité : avec une croissance des données médicales de plus de 35 % du TCAC, les systèmes RAG doivent gérer et récupérer les informations efficacement sans compromettre la vitesse, en particulier dans les scénarios où des informations opportunes peuvent avoir un impact sur les soins aux patients.

  2. Exigences en matière de langage et de connaissances spécialisées : les systèmes RAG médicaux nécessitent des réglages spécifiques à un domaine, car le lexique médical et le contenu diffèrent considérablement de ceux d'autres domaines comme la finance ou le droit.

  3. Absence de mesures d'évaluation personnalisées : contrairement aux applications RAG à usage général, le RAG médical manque de critères de référence bien adaptés. Les mesures conventionnelles (comme BLEU ou ROUGE) mettent l'accent sur la similarité des textes plutôt que sur l'exactitude factuelle essentielle dans les contextes médicaux.

  4. Évaluation par composants : une évaluation efficace nécessite un examen indépendant des composants de récupération et de génération. La récupération doit extraire des données pertinentes et actuelles, et le composant de génération doit garantir la fidélité au contenu récupéré.

Présentation de Ragas pour l'évaluation RAG

Ragas, un cadre d'évaluation open source, propose une approche automatisée pour évaluer les pipelines RAG. Sa boîte à outils se concentre sur la pertinence du contexte, le rappel, la fidélité et la pertinence des réponses. En utilisant un modèle LLM en tant que juge, Ragas minimise le besoin de données annotées manuellement, rendant le processus efficace et rentable.

Stratégies d'évaluation pour les systèmes RAG

Pour une évaluation RAG robuste, considérez ces étapes :

  1. Génération de données synthétiques : Générez des données triplet (question, réponse, contexte) basées sur les documents du magasin vectoriel pour créer des données de test synthétiques.
  2. Évaluation basée sur des métriques : évaluez le système RAG sur des métriques telles que la précision et le rappel, en comparant ses réponses aux données synthétiques générées comme vérité terrain.
  3. Évaluation des composants indépendants : pour chaque question, évaluez la pertinence du contexte de récupération et l'exactitude des réponses de la génération.

Voici un exemple de pipeline : étant donné une question du type « Quelles sont les mesures typiques de la pression artérielle en cas d'insuffisance cardiaque congestive ? » le système récupère d'abord le contexte pertinent, puis évalue si la réponse répond avec précision à la question.

Configuration de RAG avec l'API NVIDIA et LangChain

Pour suivre, créez un compte NVIDIA et obtenez une clé API. Installez les packages nécessaires avec :

pip install langchain
pip install langchain_nvidia_ai_endpoints
pip install ragas

Téléchargez l'ensemble de données MACCROBAT, qui propose des dossiers médicaux complets pouvant être chargés et traités via LangChain.

from langchain_community.document_loaders import HuggingFaceDatasetLoader
from datasets import load_dataset

dataset_name = "singh-aditya/MACCROBAT_biomedical_ner"
page_content_column = "full_text"

loader = HuggingFaceDatasetLoader(dataset_name, page_content_column)
dataset = loader.load()

En utilisant les points de terminaison NVIDIA et LangChain, nous pouvons désormais créer un générateur d'ensembles de tests robuste et créer des données synthétiques basées sur l'ensemble de données :

from ragas.testset.generator import TestsetGenerator
from langchain_nvidia_ai_endpoints import ChatNVIDIA, NVIDIAEmbeddings

critic_llm = ChatNVIDIA(model="meta/llama3.1-8b-instruct")
generator_llm = ChatNVIDIA(model="mistralai/mixtral-8x7b-instruct-v0.1")
embeddings = NVIDIAEmbeddings(model="nv-embedqa-e5-v5", truncate="END")

generator = TestsetGenerator.from_langchain(
    generator_llm, critic_llm, embeddings, chunk_size=512
)
testset = generator.generate_with_langchain_docs(dataset, test_size=10)

Déploiement et évaluation du pipeline

Déployez votre système RAG sur un magasin de vecteurs, en générant des exemples de questions à partir de rapports médicaux réels :

# Sample questions
["What are typical BP measurements in the case of congestive heart failure?",
 "What can scans reveal in patients with severe acute pain?",
 "Is surgical intervention necessary for liver metastasis?"]

Chaque question est liée à un contexte récupéré et à une réponse de vérité terrain générée, qui peut ensuite être utilisée pour évaluer les performances des composants de récupération et de génération.

Métriques personnalisées avec Ragas

Les systèmes RAG médicaux peuvent nécessiter des mesures personnalisées pour évaluer la précision de la récupération. Par exemple, une métrique pourrait déterminer si un document récupéré est suffisamment pertinent pour une requête de recherche :

from dataclasses import dataclass, field
from ragas.evaluation.metrics import MetricWithLLM, Prompt

RETRIEVAL_PRECISION = Prompt(
    name="retrieval_precision",
    instruction="Is this result relevant enough for the first page of search results? Answer '1' for yes and '0' for no.",
    input_keys=["question", "context"]
)

@dataclass
class RetrievalPrecision(MetricWithLLM):
    name: str = "retrieval_precision"
    evaluation_mode = EvaluationMode.qc
    context_relevancy_prompt: Prompt = field(default_factory=lambda: RETRIEVAL_PRECISION)

# Use this custom metric in evaluation
score = evaluate(dataset["eval"], metrics=[RetrievalPrecision()])

Sortie structurée pour la précision et la fiabilité

Pour une évaluation efficace et fiable, la sortie structurée simplifie le traitement. Avec les points de terminaison LangChain de NVIDIA, structurez votre réponse LLM en catégories prédéfinies (par exemple, oui/non).

import enum

class Choices(enum.Enum):
    Y = "Y"
    N = "N"

structured_llm = nvidia_llm.with_structured_output(Choices)
structured_llm.invoke("Is this search result relevant to the query?")

Conclusion

RAG relie les LLM et la récupération de vecteurs denses pour des applications hautement efficaces et évolutives dans les domaines médicaux, multilingues et de génération de code. Dans le domaine des soins de santé, son potentiel à apporter des réponses précises et contextuelles est évident, mais l’évaluation doit donner la priorité à l’exactitude, à la spécificité du domaine et à la rentabilité.

Le pipeline d'évaluation décrit, utilisant des données de test synthétiques, des points de terminaison NVIDIA et Ragas, offre une méthode robuste pour répondre à ces demandes. Pour une analyse plus approfondie, vous pouvez explorer les exemples de Ragas et NVIDIA Generative AI sur GitHub.

Déclaration de sortie Cet article est reproduit sur : https://dev.to/koolkamalkishor/evaluating-medical-retrieval-augmented-generation-rag-with-nvidia-ai-endpoints-and-ragas-2m34?1. En cas d'infraction, veuillez contacter study_golang@163 .comdelete
Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3