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.
É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.
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.
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.
É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é.
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.
Pour une évaluation RAG robuste, considérez ces étapes :
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.
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é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.
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()])
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?")
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.
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