0

0

使用 NVIDIA AI 端点和 Ragas 评估医疗检索增强生成 (RAG)

聖光之護

聖光之護

发布时间:2024-11-10 09:51:01

|

719人浏览过

|

来源于dev.to

转载

使用 nvidia ai 端点和 ragas 评估医疗检索增强生成 (rag)

在医学领域,融入先进技术对于加强患者护理和改进研究方法至关重要。检索增强生成 (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 密钥。使用以下命令安装必要的软件包:

HaiSnap
HaiSnap

一站式AI应用开发和部署工具

下载
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 示例。

相关专题

更多
数据库三范式
数据库三范式

数据库三范式是一种设计规范,用于规范化关系型数据库中的数据结构,它通过消除冗余数据、提高数据库性能和数据一致性,提供了一种有效的数据库设计方法。本专题提供数据库三范式相关的文章、下载和课程。

330

2023.06.29

如何删除数据库
如何删除数据库

删除数据库是指在MySQL中完全移除一个数据库及其所包含的所有数据和结构,作用包括:1、释放存储空间;2、确保数据的安全性;3、提高数据库的整体性能,加速查询和操作的执行速度。尽管删除数据库具有一些好处,但在执行任何删除操作之前,务必谨慎操作,并备份重要的数据。删除数据库将永久性地删除所有相关数据和结构,无法回滚。

2068

2023.08.14

vb怎么连接数据库
vb怎么连接数据库

在VB中,连接数据库通常使用ADO(ActiveX 数据对象)或 DAO(Data Access Objects)这两个技术来实现:1、引入ADO库;2、创建ADO连接对象;3、配置连接字符串;4、打开连接;5、执行SQL语句;6、处理查询结果;7、关闭连接即可。

346

2023.08.31

MySQL恢复数据库
MySQL恢复数据库

MySQL恢复数据库的方法有使用物理备份恢复、使用逻辑备份恢复、使用二进制日志恢复和使用数据库复制进行恢复等。本专题为大家提供MySQL数据库相关的文章、下载、课程内容,供大家免费下载体验。

251

2023.09.05

vb中怎么连接access数据库
vb中怎么连接access数据库

vb中连接access数据库的步骤包括引用必要的命名空间、创建连接字符串、创建连接对象、打开连接、执行SQL语句和关闭连接。本专题为大家提供连接access数据库相关的文章、下载、课程内容,供大家免费下载体验。

318

2023.10.09

数据库对象名无效怎么解决
数据库对象名无效怎么解决

数据库对象名无效解决办法:1、检查使用的对象名是否正确,确保没有拼写错误;2、检查数据库中是否已存在具有相同名称的对象,如果是,请更改对象名为一个不同的名称,然后重新创建;3、确保在连接数据库时使用了正确的用户名、密码和数据库名称;4、尝试重启数据库服务,然后再次尝试创建或使用对象;5、尝试更新驱动程序,然后再次尝试创建或使用对象。

402

2023.10.16

vb连接access数据库的方法
vb连接access数据库的方法

vb连接access数据库方法:1、使用ADO连接,首先导入System.Data.OleDb模块,然后定义一个连接字符串,接着创建一个OleDbConnection对象并使用Open() 方法打开连接;2、使用DAO连接,首先导入 Microsoft.Jet.OLEDB模块,然后定义一个连接字符串,接着创建一个JetConnection对象并使用Open()方法打开连接即可。

368

2023.10.16

vb连接数据库的方法
vb连接数据库的方法

vb连接数据库的方法有使用ADO对象库、使用OLEDB数据提供程序、使用ODBC数据源等。详细介绍:1、使用ADO对象库方法,ADO是一种用于访问数据库的COM组件,可以通过ADO连接数据库并执行SQL语句。可以使用ADODB.Connection对象来建立与数据库的连接,然后使用ADODB.Recordset对象来执行查询和操作数据;2、使用OLEDB数据提供程序方法等等。

217

2023.10.19

excel制作动态图表教程
excel制作动态图表教程

本专题整合了excel制作动态图表相关教程,阅读专题下面的文章了解更多详细教程。

30

2025.12.29

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Git 教程
Git 教程

共21课时 | 2.3万人学习

Git版本控制工具
Git版本控制工具

共8课时 | 1.5万人学习

Git中文开发手册
Git中文开发手册

共0课时 | 0人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号