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.
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.
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.
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.
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.
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.
Berücksichtigen Sie für eine robuste RAG-Bewertung die folgenden Schritte:
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.
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)
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.
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()])
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?")
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.
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