„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > Evaluierung der Medical Retrieval-Augmented Generation (RAG) mit NVIDIA AI Endpoints und Ragas

Evaluierung der Medical Retrieval-Augmented Generation (RAG) mit NVIDIA AI Endpoints und Ragas

Veröffentlicht am 15.11.2024
Durchsuche:173

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

Im Bereich der Medizin ist die Einbeziehung fortschrittlicher Technologien von entscheidender Bedeutung, um die Patientenversorgung zu verbessern und Forschungsmethoden zu verbessern. Retrieval-Augmented Generation (RAG) ist eine dieser bahnbrechenden Innovationen, die die Leistungsfähigkeit großer Sprachmodelle (LLMs) mit externem Wissensabruf verbindet. Durch das Abrufen relevanter Informationen aus Datenbanken, wissenschaftlicher Literatur und Patientenakten bieten RAG-Systeme eine genauere und kontextbezogenere Antwortgrundlage und beseitigen Einschränkungen wie veraltete Informationen und Halluzinationen, die häufig bei reinen LLMs beobachtet werden.

In diesem Überblick untersuchen wir die wachsende Rolle der RAG im Gesundheitswesen und konzentrieren uns dabei auf ihr Potenzial, Anwendungen wie die Arzneimittelforschung und klinische Studien zu transformieren. Wir werden uns auch mit den Methoden und Werkzeugen befassen, die zur Bewertung der besonderen Anforderungen medizinischer RAG-Systeme erforderlich sind, wie beispielsweise NVIDIAs LangChain-Endpunkte und das Ragas-Framework, zusammen mit dem MACCROBAT-Datensatz, einer Sammlung von Patientenberichten von PubMed Central.


Wichtigste Herausforderungen der medizinischen RAG

  1. Skalierbarkeit: Da medizinische Daten mit einer jährlichen Wachstumsrate von über 35 % wachsen, müssen RAG-Systeme Informationen effizient verwalten und abrufen, ohne die Geschwindigkeit zu beeinträchtigen, insbesondere in Szenarien, in denen zeitnahe Erkenntnisse Auswirkungen auf die Patientenversorgung haben können.

  2. Spezielle Sprach- und Wissensanforderungen: Medizinische RAG-Systeme erfordern eine domänenspezifische Abstimmung, da sich das medizinische Lexikon und die Inhalte erheblich von anderen Bereichen wie Finanzen oder Recht unterscheiden.

  3. Fehlen maßgeschneiderter Bewertungsmetriken: Im Gegensatz zu allgemeinen RAG-Anwendungen fehlen bei medizinischen RAG gut geeignete Benchmarks. Herkömmliche Metriken (wie BLEU oder ROUGE) betonen eher die Textähnlichkeit als die sachliche Genauigkeit, die in medizinischen Kontexten entscheidend ist.

  4. Komponentenweise Bewertung: Eine effektive Bewertung erfordert eine unabhängige Prüfung sowohl der Abruf- als auch der Generierungskomponenten. Der Abruf muss relevante, aktuelle Daten abrufen und die Generierungskomponente muss die Treue zum abgerufenen Inhalt sicherstellen.

Einführung von Ragas für die RAG-Bewertung

Ragas, ein Open-Source-Bewertungsframework, bietet einen automatisierten Ansatz zur Bewertung von RAG-Pipelines. Sein Toolkit konzentriert sich auf Kontextrelevanz, Erinnerung, Treue und Antwortrelevanz. Durch den Einsatz eines LLM-as-a-Judge-Modells minimiert Ragas den Bedarf an manuell kommentierten Daten und macht den Prozess effizient und kosteneffektiv.

Evaluierungsstrategien für RAG-Systeme

Berücksichtigen Sie für eine robuste RAG-Bewertung die folgenden Schritte:

  1. Synthetische Datengenerierung: Generieren Sie Triplettdaten (Frage, Antwort, Kontext) basierend auf den Vektorspeicherdokumenten, um synthetische Testdaten zu erstellen.
  2. Metrikbasierte Bewertung: Bewerten Sie das RAG-System anhand von Metriken wie Präzision und Erinnerung und vergleichen Sie seine Antworten mit den generierten synthetischen Daten als Grundwahrheit.
  3. Unabhängige Komponentenbewertung: Bewerten Sie für jede Frage die Relevanz des Abrufkontexts und die Antwortgenauigkeit der Generation.

Hier ist eine Beispielpipeline: Angesichts einer Frage wie „Was sind typische Blutdruckmessungen bei Herzinsuffizienz?“ Das System ruft zunächst den relevanten Kontext ab und bewertet dann, ob die Antwort die Frage genau beantwortet.

Einrichten von RAG mit NVIDIA API und LangChain

Um mitzumachen, erstellen Sie ein NVIDIA-Konto und erhalten Sie einen API-Schlüssel. Installieren Sie die erforderlichen Pakete mit:

pip install langchain
pip install langchain_nvidia_ai_endpoints
pip install ragas

Laden Sie den Datensatz MACCROBAT herunter, der umfassende Krankenakten bietet, die über LangChain geladen und verarbeitet werden können.

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()

Mithilfe von NVIDIA-Endpunkten und LangChain können wir jetzt einen robusten Testsatzgenerator erstellen und synthetische Daten basierend auf dem Datensatz erstellen:

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)

Bereitstellung und Evaluierung der Pipeline

Stellen Sie Ihr RAG-System in einem Vector Store bereit und generieren Sie Beispielfragen aus tatsächlichen medizinischen Berichten:

# 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?"]

Jede Frage ist mit einem abgerufenen Kontext und einer generierten Ground-Truth-Antwort verknüpft, die dann zur Bewertung der Leistung sowohl der Abruf- als auch der Generierungskomponenten verwendet werden kann.

Benutzerdefinierte Metriken mit Ragas

Medizinische RAG-Systeme benötigen möglicherweise benutzerdefinierte Metriken, um die Abrufgenauigkeit zu bewerten. Beispielsweise könnte eine Metrik bestimmen, ob ein abgerufenes Dokument für eine Suchabfrage relevant genug ist:

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()])

Strukturierte Ausgabe für Präzision und Zuverlässigkeit

Für eine effiziente und zuverlässige Auswertung vereinfacht die strukturierte Ausgabe die Verarbeitung. Mit den LangChain-Endpunkten von NVIDIA strukturieren Sie Ihre LLM-Antwort in vordefinierte Kategorien (z. B. Ja/Nein).

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?")

Abschluss

RAG verbindet LLMs und den dichten Vektorabruf für hocheffiziente, skalierbare Anwendungen in den Bereichen Medizin, Mehrsprachigkeit und Codegenerierung. Im Gesundheitswesen ist das Potenzial, genaue, kontextbezogene Antworten zu liefern, offensichtlich, doch bei der Bewertung müssen Genauigkeit, Domänenspezifität und Kosteneffizienz Vorrang haben.

Die skizzierte Evaluierungspipeline, die synthetische Testdaten, NVIDIA-Endpunkte und Ragas verwendet, bietet eine robuste Methode, um diesen Anforderungen gerecht zu werden. Für einen tieferen Einblick können Sie Beispiele für generative KI von Ragas und NVIDIA auf GitHub erkunden.

Freigabeerklärung Dieser Artikel ist abgedruckt unter: https://dev.to/koolkamalkishor/evaluating-medical-retrieval-augmented-generation-rag-with-nvidia-ai-endpoints-and-ragas-2m34?1 Wenn es einen Verstoß gibt, bitte Kontaktieren Sie Study_golang@163 .comdelete
Neuestes Tutorial Mehr>

Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.

Copyright© 2022 湘ICP备2022001581号-3