在医学领域,采用先进技术对于加强患者护理和改进研究方法至关重要。检索增强生成 (RAG) 是这些开创性创新之一,它将大型语言模型 (LLM) 的强大功能与外部知识检索相结合。通过从数据库、科学文献和患者记录中提取相关信息,RAG 系统提供了更准确、上下文更丰富的响应基础,解决了纯法学硕士中经常观察到的过时信息和幻觉等限制。
在本概述中,我们将探讨 RAG 在医疗保健领域日益重要的作用,重点关注其改变药物发现和临床试验等应用的潜力。我们还将深入探讨评估医疗 RAG 系统独特需求所需的方法和工具,例如 NVIDIA 的 LangChain 端点和 Ragas 框架,以及 MACCROBAT 数据集(来自 PubMed Central 的患者报告集合)。
可扩展性:随着医疗数据以超过 35% 的复合年增长率扩展,RAG 系统需要在不影响速度的情况下高效管理和检索信息,特别是在及时洞察可能影响患者护理的情况下。
专业语言和知识要求:医疗 RAG 系统需要针对特定领域进行调整,因为医学词汇和内容与金融或法律等其他领域有很大不同。
缺乏定制的评估指标:与通用 RAG 应用不同,医疗 RAG 缺乏合适的基准。传统指标(如 BLEU 或 ROUGE)强调文本相似性,而不是医学环境中至关重要的事实准确性。
按组件评估:有效的评估需要对检索和生成组件进行独立审查。检索必须提取相关的当前数据,并且生成组件必须确保检索内容的忠实性。
Ragas 是一个开源评估框架,提供了评估 RAG 管道的自动化方法。其工具包侧重于上下文相关性、召回率、忠实度和答案相关性。 Ragas 利用法学硕士作为法官模型,最大限度地减少了对手动注释数据的需求,从而使流程高效且具有成本效益。
为了进行稳健的 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?"]
每个问题都与检索到的上下文和生成的真实答案相关联,然后可以将其用于评估检索和生成组件的性能。
医疗 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 示例。
免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。
Copyright© 2022 湘ICP备2022001581号-3