大语言模型(LLMs)的出现使 AI 行业受益匪浅,它提供了能够生成类似人类的文本和处理各种任务的通用工具。然而,虽然 LLMs 展示了令人印象深刻的一般知识,但开箱即用时,它们在专业领域(例如动物科学)中的性能有限。为了提高其在特定领域的效用,该行业通常采用两种主要策略:微调和检索增强生成(RAG)。
微调需要在精心策划和结构化的数据集上训练模型,这需要大量的硬件资源以及领域专家的参与,而这一过程通常既耗时又昂贵。遗憾的是,在许多领域,以兼容业务限制的方式联系领域专家极具挑战性。
相反,RAG 涉及构建全面的知识文献语料库,以及一个有效的检索系统,该系统可以提取相关文本块以解决用户查询。通过将这些检索到的信息添加到用户查询中,LLMs 可以生成更好的答案。虽然这种方法仍然需要主题专家为数据集精心策划最佳来源,但它比微调更易于处理和业务兼容。此外,由于无需对模型进行大量训练,因此这种方法的计算密集程度较低,且成本效益更高。
在创建 RAG 系统时,开发者投入了大量精力来设计一种有效的机制,以从知识数据集中检索最佳信息片段。因此,通常会通过文本嵌入使用语义相似度测量来检索最相关的文本。
NVIDIA NIM 和 NLP 流程
NVIDIA NIM 使用 LLM 简化了 NLP 流程的设计,这些微服务简化了跨平台生成式 AI 模型的部署,使团队能够在提供标准 API 来构建应用的同时自行托管 LLM。
NIM 抽象化执行引擎和运行时操作等模型推理内部,确保 TensorRT-LLM、vLLM 等实现出色性能。主要功能包括:
- 可扩展部署
- 支持各种具有优化引擎的LLM架构
- 灵活集成到现有工作流程中
- 具有安全张量和持续 CVE 监控的企业级安全
您可以使用 Docker 运行 NIM 微服务,并使用 API 执行推理。经过专门训练的模型权重还可通过修改容器命令用于特定任务,例如文档解析。
在本文中,我将介绍 NIM 微服务如何帮助 AITEM 团队开发 LAIKA(面向兽医学从业者的 AI Co-pilot)。具体来说,我将探讨 NIM 如何支持 RAG 流程,以最大限度地提高检索效率,并展示模型如何简化和加速分析和开发流程。
借助 AI 重塑动物护理
AITEM 是 NVIDIA Inception 计划面向初创公司的成员,我们与 NVIDIA 密切合作,专注于在工业和生命科学等多个领域开发基于 AI 的解决方案。
在动物医学领域,我们正在开发 LAIKA,这是一种创新的 AI Copilot,旨在通过处理患者数据以及提供诊断建议、指导和澄清来协助动物医生。LAIKA 充当对话代理,能够处理文本查询和实验室分析文档。LAIKA 最近在意大利和法国推出,不久后将扩展到其他国家。
LAIKA 集成了多个 LLM 和 RAG 流程。RAG 组件从精心策划的兽医资源数据集中检索相关信息(图 2)。在准备过程中,每个资源被划分为多个块,并计算嵌入内容并存储在 RAG 数据库中。在推理过程中,会对查询进行预处理,并计算其嵌入内容,并使用几何距离指标将其与 RAG 数据库中的嵌入内容进行比较。选择最接近的匹配项作为最相关的匹配项,用于生成响应。
由于 RAG 数据库中可能存在冗余,多个检索到的数据块可能包含相同的信息,从而限制了提供给应答系统的概念的多样性。为了解决这一问题,LAIKA 采用了最大边缘相关性(Maximal Marginal Relevance,MMR)算法,以最大限度地减少数据块冗余,并确保更广泛的相关信息。
由于从资源中提取数据块是自动化的,且资源量过大,无法进行手动验证,因此可能会包含格式错误的数据块,例如脚注、错误的字符集或 OCR 错误。虽然由于分布外的嵌入,检索此类无关数据块的概率较低,但不是零,这仍然可能影响响应质量。
虽然基于距离指标的相似度检索是一种广泛使用的方法,但并非完美无缺。它可以检索格式良好但无用甚至具有误导性的信息。最大限度地减少错误检索的影响对于保持高答案质量至关重要。
NVIDIA NeMo Retriever 重构 NIM 微服务
NVIDIA API 目录包含一系列 NeMo Retriever NIM 微服务,使组织能够将自定义模型无缝连接到各种业务数据,并提供高度准确的响应。
该集合包括 NVIDIA Retrieval QA Mistral 4B 重新排名 NIM 微服务,该模型旨在评估给定文本段落包含回答用户查询的相关信息的概率。将此模型集成到 RAG 流程中,使我们能够过滤掉不通过重新排名模型评估的检索内容,确保仅使用最相关和准确的信息。或者,可以使用重新排名模型的输出对检索的数据块进行排序,仅保留排名在顶部的数据块。
为了评估此步骤对 RAG 管道的影响,我们设计了一个实验:
- 从 LAIKA 用户中提取包含约 100 个匿名问题的数据集。
- 运行当前的 RAG 工作流以检索每个问题的 chunks。
- 根据重新排序模型提供的概率,对检索到的数据块进行排序。
- 评估每个数据块与查询的相关性。
- 分析重新排序模型的概率分布与步骤4所确定的相关性的关系。
- 比较 Step 3 中数据块的排名与 Step 4 中数据块的相关性。
LAIKA 中的用户问题在形式上可能会有很大差异(图 3)。一些查询包含对情况的详细解释,但缺少特定问题。其他查询包含有关研究的精确查询,而有些则寻求基于临床案例或分析文档的指导或区别诊断。
由于每个问题的数据块数量众多,我们使用了 Llama 3.1 70B Instruct NIM 微服务进行评估,该服务也可在 NVIDIA API 目录中获取。
为了更好地了解重新排序模型在数据集上的表现,我们详细检查了具体的查询和模型响应。表 1 突出显示了该查询的顶部和底部重新排名块,“这只猫已经瘦了两个月,保持了食欲,没有出现呕吐或腹泻。潜在的差分诊断是什么?”
带有正 logits(相关性概率 > 50%)的前三个数据块都提供了与问题直接相关的有用信息。相比之下,具有较大负 logits 的后三个数据块的相关性较小,涵盖了有限的案例研究和药物投诉,但这些都于事无补。
文本 | 重新排名逻辑 |
尤其难以诊断的减重原因包括:未引起呕吐的胃病、未引起呕吐或腹泻的肠病、肝脏疾病… | 3.3125 |
诊断非特异性体征(如厌食症、体重减轻、呕吐和腹泻等)的差异……在猫中,急性胰腺炎很少见,……症状非特异性且定义不清(例如:厌食症、嗜睡、体重减轻)。 | 2.3222 |
如果出现癌症恶衰、消化不良/吸收不良……在某些情况下,食欲可能会增加……但是,正常的食欲并不排除存在严重的疾病。 | 2.2265 |
Overall, weight loss was the most common presenting sign … with little difference between the groups … | -5.0078 |
其他客户投诉包括嗜睡、厌食症、体重减轻、呕吐…… | -7.3672 |
There were 6 British Shorthair, 4 European Shorthair, and 1 Bengal cat … Reported clinical signs by owners included: reduced appetite or anorexia… | -10.3281 |
图 4 比较了相关 (良好) 和无关 (坏) 数据块之间重新排序的模型概率输出分布 (在对数中)。良好数据块的概率高于坏数据块,并且 t 检验确认此差异在统计上具有显著性,p 值低于 3e-72。
图 5 显示了重新排名诱导的排序位置的分布差异:好数据块主要位于顶部位置,而坏数据块较低。Mann-Whitney 测试确认这些差异在统计上具有显著性,导致 p 值低于 9e-31。
图 6 显示了排名分布,并有助于定义有效的截止点。在前五个位置中,大多数数据块是好的,而位置 11-15 中的大多数数据块是坏的。因此,仅保留前五个检索项或其他选定的数字可以作为有效排除大多数坏数据块的一种方法。
为了优化检索流程并在更大限度提高准确性的同时尽可能降低提取成本,轻量级嵌入模型可以与 NVIDIA 重新排名 NIM 微服务搭配使用,以提高检索准确性。执行时间可以缩短 1.75 倍(图 7)。
借助 NVIDIA 重新排名的 NIM 微服务获得更好的答案。
结果表明,将 NVIDIA 重新排名的 NIM 微服务添加到 LAIKA RAG 流程会对检索数据块的相关性产生积极影响。通过将更精确的专业信息转发到下游应答 LLM,它为模型提供了在兽医科学等高度专业领域所需的知识。
NVIDIA API 目录中提供的 NVIDIA 重新排名 NIM 微服务可简化采用流程,因为您可以轻松拉取和运行模型,并通过 API 推理其评估。这消除了与环境设置和手动优化相关的压力,因为它几乎适用于任何平台,并通过 NVIDIA TensorRT 进行了预量化和优化。
关于 LAIKA 和其他 AITEM 项目的更多信息和最新更新,请参阅 AITEM 解决方案,并在 LinkedIn 上关注 LAIKA 和 AITEM。