首頁 > web前端 > js教程 > 主體

使用 NVIDIA AI 端點和 Ragas 評估醫療檢索增強生成 (RAG)

Patricia Arquette
發布: 2024-11-09 03:03:02
原創
916 人瀏覽過

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

在醫學領域,採用先進技術對於加強病患照護和改進研究方法至關重要。檢索增強生成 (RAG) 是這些開創性創新之一,它將大型語言模型 (LLM) 的強大功能與外部知識檢索相結合。透過從資料庫、科學文獻和患者記錄中提取相關信息,RAG 系統提供了更準確、上下文更豐富的響應基礎,解決了純法學碩士中經常觀察到的過時信息和幻覺等限制。

在本概述中,我們將探討 RAG 在醫療保健領域日益重要的作用,重點關注其改變藥物發現和臨床試驗等應用的潛力。我們還將深入探討評估醫療 RAG 系統獨特需求所需的方法和工具,例如 NVIDIA 的 LangChain 端點和 Ragas 框架,以及 MACCROBAT 資料集(來自 PubMed Central 的患者報告集合)。


醫療 RAG 的主要挑戰

  1. 可擴展性:隨著醫療數據以超過35% 的複合年增長率擴展,RAG 系統需要在不影響速度的情況下高效管理和檢索信息,特別是在及時洞察可能影響患者護理的情況下。

  2. 專業語言和知識要求:醫療 RAG 系統需要針對特定領域進行調整,因為醫學詞彙和內容與金融或法律等其他領域有很大不同。

  3. 缺乏客製化的評估指標:與通用 RAG 應用不同,醫療 RAG 缺乏合適的基準。傳統指標(如 BLEU 或 ROUGE)強調文本相似性,而不是醫療環境中至關重要的事實準確性。

  4. 按組件評估:有效的評估需要對檢索和生成組件進行獨立審查。檢索必須提取相關的當前數據,生成組件必須確保檢索內容的忠實性。

引入 Ragas 進行 RAG 評估

Ragas 是一個開源評估框架,提供了一種評估 RAG 管道的自動化方法。其工具包著重於上下文相關性、召回率、忠實度和答案相關性。 Ragas 利用法學碩士作為法官模型,最大限度地減少了對手動註釋資料的需求,從而使流程高效且具有成本效益。

RAG 系統的評估策略

為了進行穩健的 RAG 評估,請考慮以下步驟:

  1. 合成資料產生:根據向量儲存文件產生三元組資料(問題、答案、上下文)以建立合成測試資料。
  2. 基於指標的評估:根據精確度和召回率等指標評估 RAG 系統,將其反應與產生的合成數據作為基本事實進行比較。
  3. 獨立組件評估:對於每個問題,評估檢索上下文相關性和生成的答案準確性。

這是一個範例流程:給出諸如「充血性心臟衰竭的典型血壓測量是什麼?」之類的問題。系統首先檢索相關上下文,然後評估回應是否準確地解決了問題。

使用 NVIDIA API 和 LangChain 設定 RAG

要繼續操作,請建立 NVIDIA 帳戶並取得 API 金鑰。使用以下命令安裝必要的軟體包:

pip install langchain
pip install langchain_nvidia_ai_endpoints
pip install ragas
登入後複製

下載MACCROBAT資料集,該資料集提供了可以透過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()
登入後複製

使用 NVIDIA 端點和 LangChain,我們現在可以建立一個強大的測試集產生器並基於資料集建立合成資料:

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)
登入後複製

部署和評估管道

在向量儲存上部署您的 RAG 系統,從實際醫療報告中產生範例問題:

# 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?"]
登入後複製

每個問題都與檢索到的上下文和生成的真實答案相關聯,然後可以將其用於評估檢索和生成組件的性能。

使用 Ragas 自訂指標

醫療 RAG 系統可能需要自訂指標來評估檢索精度。例如,一個指標可以決定檢索到的文件對於搜尋查詢是否足夠相關:

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()])
登入後複製

結構化輸出確保精度和可靠性

為了實現高效可靠的評估,結構化輸出簡化了處理。使用 NVIDIA 的 LangChain 端點,將您的 LLM 答案分為預先定義的類別(例如,是/否)。

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 連結了法學碩士和密集向量檢索,以實現跨醫療、多語言和程式碼生成領域的高效、可擴展的應用程式。在醫療保健領域,它帶來準確、情境感知回應的潛力是顯而易見的,但評估必須優先考慮準確性、領域特異性和成本效率。

概述的評估流程採用綜合測試資料、NVIDIA 端點和 Ragas,提供了滿足這些需求的強大方法。如需更深入了解,您可以在 GitHub 上探索 Ragas 和 NVIDIA Generative AI 範例。

以上是使用 NVIDIA AI 端點和 Ragas 評估醫療檢索增強生成 (RAG)的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:dev.to
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板