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

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

在医学领域,融入先进技术对于加强患者护理和改进研究方法至关重要。检索增强生成 (rag) 是这些开创性创新之一,它将大型语言模型 (llm) 的强大功能与外部知识检索相结合。通过从数据库、科学文献和患者记录中提取相关信息,rag 系统提供了更准确、上下文更丰富的响应基础,解决了纯法学硕士中经常观察到的过时信息和幻觉等限制。

在本概述中,我们将探讨 rag 在医疗保健领域日益重要的作用,重点关注其改变药物发现和临床试验等应用的潜力。我们还将深入探讨评估医疗 rag 系统独特需求所需的方法和工具,例如 nvidia 的 langchain 端点和 ragas 框架,以及 maccrobat 数据集(来自 pubmed central 的患者报告集合)。

医疗 rag 的主要挑战

可扩展性:随着医疗数据以超过 35% 的复合年增长率扩展,rag 系统需要在不影响速度的情况下高效管理和检索信息,特别是在及时洞察可能影响患者护理的情况下。

专业语言和知识要求:医疗 rag 系统需要针对特定​​领域进行调整,因为医学词汇和内容与金融或法律等其他领域有很大不同。

缺乏定制的评估指标:与通用 rag 应用不同,医疗 rag 缺乏合适的基准。传统指标(如 bleu 或 rouge)强调文本相似性,而不是医疗环境中至关重要的事实准确性。

按组件评估:有效的评估需要对检索和生成组件进行独立审查。检索必须提取相关的当前数据,生成组件必须确保检索内容的忠实性。

引入 ragas 进行 rag 评估

ragas 是一个开源评估框架,提供了一种评估 rag 管道的自动化方法。其工具包侧重于上下文相关性、召回率、忠实度和答案相关性。 ragas 利用法学硕士作为法官模型,最大限度地减少了对手动注释数据的需求,从而使流程高效且具有成本效益。

rag 系统的评估策略

为了进行稳健的 rag 评估,请考虑以下步骤:

合成数据生成:根据向量存储文档生成三元组数据(问题、答案、上下文)以创建合成测试数据。基于指标的评估:根据精确度和召回率等指标评估 rag 系统,将其响应与生成的合成数据作为基本事实进行比较。独立组件评估:对于每个问题,评估检索上下文相关性和生成的答案准确性。

这是一个示例流程:给出诸如“充血性心力衰竭的典型血压测量是什么?”之类的问题。系统首先检索相关上下文,然后评估响应是否准确地解决了问题。

使用 nvidia api 和 langchain 设置 rag

要继续操作,请创建一个 nvidia 帐户并获取 api 密钥。使用以下命令安装必要的软件包:

pip install langchainpip install langchain_nvidia_ai_endpointspip install ragas

下载maccrobat数据集,该数据集提供了可以通过langchain加载和处理的全面医疗记录。

from langchain_community.document_loaders import huggingfacedatasetloaderfrom datasets import load_datasetdataset_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 testsetgeneratorfrom langchain_nvidia_ai_endpoints import chatnvidia, nvidiaembeddingscritic_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, fieldfrom ragas.evaluation.metrics import metricwithllm, promptretrieval_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"])@dataclassclass 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 evaluationscore = evaluate(dataset["eval"], metrics=[retrievalprecision()])

结构化输出确保精度和可靠性

为了实现高效可靠的评估,结构化输出简化了处理。借助 nvidia 的 langchain 端点,将您的 llm 回答分为预定义的类别(例如,是/否)。

import enumclass 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)的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1496719.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年12月19日 18:51:06
下一篇 2025年12月19日 18:51:18

相关推荐

  • Svelte 5 中的“助手”变量

    再见神奇 svelte 4 $: 在我最近发布 svelte 5 迁移的经验和注意事项之后,我想重点介绍从 svelte 4 迁移到 svelte 5 时的一些技巧和心态的变化。 svelte 4 使用“神奇的”$: 并让和完成所有繁重的工作以使代码具有反应性。我们还接受了变量重新分配,例如 let…

    2025年12月19日 好文分享
    000
  • 使用 Nextra 生成文档站点

    在本文中,您将了解如何使用 nextra 生成静态文档站点,我们还提供了一个示例。 使用 nextra,您可以使用 next.js 和 mdx 制作精美的网站。 nextra docs 提供了两种选项,一种用于文档,另一种用于博客。 使用 nextra 手动配置 nextra 很简单。您安装软件包,…

    2025年12月19日
    000
  • 如何解决下拉列表刷新导致数据丢失的问题?

    下拉列表刷新问题解决方案 在提交数据时,下拉列表需要刷新,以免影响数据准确性。但如果您希望在进行操作后保留下拉列表绑定的数据,同时在刷新页面时重新刷新下拉列表,可以使用以下三种方法: 通过页面重定向实现:在进行下拉列表操作后,将其值存储在会话变量中。在刷新页面时,从会话变量中检索该值并重新绑定到下拉…

    2025年12月19日
    000
  • JavaScript 的工作原理

    JavaScript 是一种多功能的高级编程语言,主要用于增强网页、创建交互式内容和构建 Web 应用程序。它可以在浏览器环境(客户端)中运行,也可以在服务器端使用,特别是与 Node.js 一起使用。以下是 JavaScript 工作原理的概述: JavaScript 引擎 每个浏览器(如 Chr…

    2025年12月19日
    000
  • 前端测试驱动开发 (TDD)

    测试驱动开发(tdd)因提高代码质量和减少软件开发中的错误而被广泛认可。虽然 tdd 在后端和 api 开发中很常见,但它在前端开发中同样强大。通过在实现功能之前编写测试,前端开发人员可以尽早发现问题,确保一致的用户体验并自信地进行重构。在本文中,我们将在前端开发的背景下探索 tdd,讨论它的好处,…

    2025年12月19日
    000
  • 测试数据生成器:提高软件测试效率

    在软件测试中,测试数据的准确性和一致性对于可靠的结果至关重要。然而,手动创建和管理测试数据非常耗时且经常容易出错,尤其是对于大型应用程序。这就是测试数据生成器派上用场的地方。测试数据生成器自动创建测试所需的数据,节省时间,减少手动错误,并确保测试过程尽可能无缝。这篇文章探讨了什么是测试数据生成器、为…

    2025年12月19日
    000
  • 为什么需要类型保护?探索不同类型及其用例

    为什么需要类型保护?探索不同类型及其用例 在 typescript 中,类型保护 在使代码库更加可靠、对开发人员更友好方面发挥着重要作用。它们通过允许开发人员缩小类型来帮助确保类型安全,这有助于减少运行时错误并使代码更易于理解和维护。 什么是类型保护? 类型保护是对类型执行运行时检查的函数表达式,确…

    2025年12月19日
    000
  • 了解 JavaScript 中的作用域和作用域链

    javascript 开发人员经常会遇到作用域、作用域链、词法环境和不同类型的作用域(全局作用域、函数作用域和局部作用域)等术语。这些概念对于理解变量和函数的行为方式、它们的可访问性以及 javascript 在执行代码时如何找到它们至关重要。在本博客中,我们将分解这些主题,以帮助您掌握 javas…

    2025年12月19日
    000
  • Detailed explanation of Javascript event loop rules

    众所周知,Javacript是单线程语言,但是为什么我们可以使用异步操作呢?因为异步操作是由具有多线程、多进程能力的浏览器执行的。 Javascript始终运行在单线程上,当异步代码被发现时,就会交给浏览器执行,然后浏览器调用相应的线程或进程,包括http请求、GUI、事件触发等来处理这些异步操作.…

    2025年12月19日
    000
  • 在 React 中构建一款可靠的 Pokémon 游戏:开发者的冒险!

    s:单一职责 – 一只神奇宝贝,一份工作 问题:pokemoncomponent 处理捕捉、战斗和显示分数,违反了 srp。 function pokemoncomponent({ pokemon, oncatch, onbattle, score }) { return ( {poke…

    2025年12月19日
    000
  • 页面组件失灵:当 realtyProcessAccount.customer.nature 为空时如何解决?

    页面组件无反应难题解析 网友提出了一个问题,表示页面组件在 certain 条件下才会产生响应。具体来说,当 realtyprocessaccount.customer.nature 不为空时,组件会出现反应;否则,则不会。 潜在解决方案 根据提供的答案,该问题可能是由于在控制器中声明的 realt…

    2025年12月19日
    000
  • 从基础到高级:逐步掌握角度信号

    为什么角度信号很重要:更好应用的初学者指南 angular signals 代表了 angular 应用程序中状态管理和反应性的革命性方法。这份综合指南将引导您了解有关信号所需了解的所有内容,从基本概念到高级实现。 什么是角度信号? 信号是 angular 16+ 中引入的新原语,它提供了一种处理反…

    2025年12月19日 好文分享
    000
  • 如何用 ag-grid 优雅地实现嵌套行表格?

    如何优雅地处理嵌套行的表格 对于需要显示嵌套数据的表格,前端开发者常常会面临处理嵌套行的挑战。本文旨在探讨一个极佳的解决方案——ag-grid。 ag-grid 简介 ag-grid 是一个强大的 javascript 表格库,它提供了广泛的功能,包括支持嵌套行。使用 ag-grid,您可以轻松地创…

    2025年12月19日
    000
  • 将 Jest 添加到Explainerjs

    本周我们应该向我们的 cli 工具添加测试。迄今为止最令人沮丧的事情。 为什么我选择杰斯特 我是 TDD(测试驱动开发)的坚定支持者。几乎每一段代码都应该被测试。在我的合作期间,我一半以上的时间都花在为我的 PR 编写测试上。我相信这段经历确实帮助我理解了测试的必要性。我很惊讶地发现 JS 和 Ru…

    2025年12月19日
    000
  • 您应该随 Web 组件一起发送清单

    除了组件之外,自定义元素清单是您可以在库中提供的最重要的东西。 什么是自定义元素清单 (CEM)? 自定义元素清单是一个架构,旨在记录有关自定义元素/web 组件的元数据,包括属性、属性、方法、事件、槽、css 部分和 css 变量。它获取有关组件的所有信息并将其序列化到项目中的单个 json 文件…

    2025年12月19日
    000
  • 如何轻松创建可扩展的、基于模块的应用程序

    现代应用程序在模块化架构上蓬勃发展,无缝适应不断变化的业务需求。然而,要实现真正的模块化,您需要的不仅仅是独立的组件 – 您需要一种高效方式将它们组合在一起。这意味着控制模块如何加载、以什么顺序加载以及使用哪些依赖项。当您想要关闭系统的某些部分代码中没有任何痕迹(例如 if/else 语…

    2025年12月19日
    000
  • 探索角度形式:信号的新替代方案

    探索角度形式:信号的新替代方案 在 angular 的世界中,无论您是在制作简单的登录页面还是更复杂的用户配置文件界面,表单对于用户交互都是至关重要的。 angular 传统上提供两种主要方法:模板驱动表单和反应式表单。在我之前的 angular 反应式表单系列中,我探索了如何利用反应式表单的强大功…

    2025年12月19日
    000
  • 学习 Typescript 的旅程

    大家好,我最近开始了我的 typescript 之旅,并通过编程英雄的高级 web 开发课程取得了进步。我对 typescript 有一些基础知识,但没有深入探索。我的课程从深入研究 typescript 开始。一周过去了,我的学习有了很大的进步。以下是我所掌握的关键概念的简化概述。 typescr…

    2025年12月19日
    000
  • 使用 React Hook Form + Zod 构建表单

    介绍 当我开始编程时,我需要用纯 javascript 编写大量代码来从表单收集数据。从那时起,web 开发已经发展得如此之快,以至于今天我们有了抽象了大部分工作的库,从而促进了表单数据的管理。 在本文中,我将向您展示如何使用 react hook form 来处理表单数据,并使用 zod 以高效且…

    2025年12月19日
    000
  • 优质工程软件:通过自动化和精确性增强软件开发

    在当今快节奏的软件开发环境中,质量工程 (QE) 已成为交付可靠、高性能应用程序的关键因素。质量工程软件在简化测试流程和确保软件满足最高质量标准方面发挥着关键作用。在这篇文章中,我们将探讨什么是质量工程、质量工程软件的作用、其好处、挑战以及利用这些工具确保整个开发生命周期的软件质量的最佳实践。什么是…

    2025年12月19日
    000

发表回复

登录后才能评论
关注微信