

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 为医疗保健开发和协调生成式 AI 解决方案
<a name="development"></a>

要构建本指南中的解决方案，您必须构建一个 RAG 架构，该架构使用经过微调的 LLM 向医疗保健提供者提供增强的患者数据、临床和诊断见解以及预测的患者预后。这需要整合多种 AWS 服务 工具来创建有凝聚力和高效的工作流程。本节讨论以下内容：
+ [Amazon Q 开发者版](#development-amazon-q)— 使用 Amazon Q Developer 解决开发过程中的工程问题和代码错误。
+ [Multi-retriever RAG 设计](#development-multi-retriever-rag)— 设计和实现 RAG 解决方案，使用多个检索器为用户的问题获取正确的医疗背景。
+ [ReAct 代理人](#development-react-agents)— 实现将推理与动态动作相结合的代理。

## Amazon Q 开发者版
<a name="development-amazon-q"></a>

在构建生成式 AI 解决方案时，可能很难创建 AI 代理和连接关键服务。但是，[Amazon Q De](https://aws.amazon.com/q/developer/) veloper 通过提供对高级生成人工智能助手的访问权限来帮助数据科学家和人工智能工程师。Amazon Q 可以快速准确地解决用户问题和代码错误，这可以帮助您优化 LLM 开发流程。Amazon Q 为开发者创建使用 Amazon Bedrock 基础模型的应用程序提供了显著的优势。它可以简化工作流程并提高代码质量。它可以自动生成 Python 脚本和基础设施即代码 (IaC) 配置，从而显著减少开发时间和工作量。通过高级重构功能，Amazon Q 可以提高代码性能，识别安全漏洞，并确保开发人员遵守最佳实践。此外，它还通过提供情境感知建议和解释来促进初学者的学习和采用，使复杂的编码任务更易于访问和高效。

## Multi-retriever RAG 设计
<a name="development-multi-retriever-rag"></a>

在生成式 AI 应用程序中，多检索器 RAG 管道可以高效地从多个数据源检索信息，以帮助医疗保健提供者和临床医生回答医疗问题。该管道使用不同类型的检索器从不同的知识库中提取相关数据。每只寻回犬都专门获取特定类型的信息，例如患者病史、诊断见解、临床记录或医学研究和学术论文中的内容。

根据数据的性质和特定的应用程序要求来确定哪些正确的后端知识库适合您的用例。Amazon S OpenSearch ervice 矢量数据库非常适合存储大量非结构化或半结构化医疗数据，包括图像诊断评估摘要、出院摘要、临床报告、医学研究和学术文本内容。另一方面，诸如Amazon Neptune之类的图形数据库服务非常适合需要深入探索实体之间时间关系的医疗用例，例如患者、患者病史、医疗保健提供者、药物、症状和治疗。

该管道的一个关键组成部分是*用户查询意图预测*。这样可以确保系统将查询路由到正确的检索器链。例如，如果临床医生询问患者的治疗史、症状、与医院的互动、再次入院的可能性或潜在的患者预后，则查询意图预测模块会识别出这种意图。它将请求定向到检索器链，该链可以从医学知识图中获取患者记录或按时间顺序排列的治疗数据。或者，如果问题涉及疾病发现、特定的诊断评估或学术教科书中特定临床程序的细节，则将查询路由到检索器链，该链可以从 OpenSearch 服务向量数据库中获取这些信息。您可以使用的[工具调用功能将自定义工具](https://python.langchain.com/docs/concepts/tool_calling/)绑定LangChain到 Amazon Bedrock LLM，该工具可以将用户问题归类为预定义的意图。

这种多重检索器 RAG 系统包括旨在管理对特定知识库的访问的LangChain代理。您可以使用LangChain来编排 Amazon Bedrock LLM、不同的检索器和工具之间的互动。 LangChain包括一个工具调用类，可帮助您创建自定义工具，例如意图分类器、Neptune 的检索器、Service 的检索器或任何其他可以开发的 OpenSearch 用于对用户意图进行分类和以结构化格式访问特定知识库中的数据的工具。然后，你将这些工具提供给全班以创建推理和行动 (ReAct) 代理。 ReAct 代理处理用户问题，计划回答问题的顺序步骤，然后迭代执行可用工具并处理工具响应以最终回答用户查询。

下图显示了专为高效知识检索和智能查询解析而设计的多检索器 RAG 系统的工作原理。LangChain ReAct 代理分析用户的意图，制定结构化的执行计划，并选择最相关的检索工具。系统会查询先前的问题缓存，并根据关键属性（例如患者 ID、医疗状况和就诊日期）检查是否存在类似的查询。如果找到高度相似的问题，则直接检索相应的答案。否则，代理会执行相应的检索器。为了检索以患者为中心的信息，例如治疗史、症状、医院互动或再次入院的可能性，该系统使用图表检索器。对于诊断评估、临床程序和结构化医学发现，该代理使用矢量数据库检索器。在需要将来自两个数据存储的上下文知识组合起来才能生成全面响应的场景中，系统使用混合检索策略，该策略将知识图谱和向量数据库的结果集成在一起。

![一种使用多个LangChain检索器执行检索增强生成的架构。](http://docs.aws.amazon.com/zh_cn/prescriptive-guidance/latest/rag-healthcare-use-cases/images/multi-retriever-rag.png)


## ReAct 代理人
<a name="development-react-agents"></a>

推理和行动 (ReAct) 代理专为多方面的 RAG 应用程序而设计。这些代理提供了推理和动态操作的强大组合，特别是对于涉及分步逻辑信息检索工作流程的复杂应用程序。有关更多信息，请参阅 [ReAct：在语言模型中协同推理和行动](https://react-lm.github.io/)。

在医疗和保健领域，来自临床医生或医生的询问通常是多方面的。例如，临床医生可能会问 “对同时患有高血压和2型糖尿病的类似患者进行了哪些治疗？” 在确定了用户的意图（即获取高血压和 2 型糖尿病的治疗方法）之后，AI 代理需要将此查询分为子任务，然后选择最有效的检索策略。在这种情况下，AI 代理应确定最相关的节点（例如患者年龄、性别、病情、治疗和药物），然后在图表中查询这些实体及其属性和关系。 ReAct 代理非常有用，因为它们将 LLM 的推理（逻辑推断）能力与操作（查询外部资源或知识库或与之交互）相结合。

回答用户询问 “对同时患有高血压和2型糖尿病的类似患者进行了哪些治疗？” ，以下示例说明了 ReAct 代理的工作原理：

1. **代理推理** — ReAct 代理推断问题涉及检索有关疾病（糖尿病和高血压）的信息。它考虑了患者的年龄、治疗方法、药物和分析期。

1. **代理操作** — 代理使用 OpenCypher 在知识图中查询 2 型糖尿病和高血压特有的治疗方法。它还检索给药的药物、就诊日期、药物的副作用、已知的患者预后以及相似患者（例如相同性别和年龄的患者）的交叉参考数据。

1. 药物@@ **观察 — 从知识图中，该药物检索了最近六个月有关同时患有高血压和2型糖尿病**的患者接受治疗的表格数据。

1. 药物@@ **推理** — 为了对检索到的记录的结果进行排名，代理人可以识别重要属性，例如最近程度、药物的副作用或已知的患者预后。

1. **代理操作**-代理根据已识别的属性和通过系统提示传递的预定义逻辑对记录进行重新排名。

1. **响应生成** — Amazon Bedrock 中的 LLM 根据 ReAct 代理准备的上下文生成响应。