ZS 如何使用 Amazon OpenSearch Service 和 Amazon Neptune

ZS如何使用亚马逊OpenSearch服务和亚马逊Neptune构建临床知识库以实现语义搜索

关键要点

在这篇博客中,我们将重点介绍如何利用多个AWS服务构建一个高可扩展性和高性能的临床文档搜索平台。该平台是一个先进的信息检索系统,旨在帮助医疗专业人员和研究人员高效地导航庞大的医疗文档、医学文献、研究文章、临床指南、方案文件、活动日志等内容。其目标是通过结合各种类型的临床文档查询,快速准确地定位特定信息,以支持临床决策、研究和其他医疗相关活动。

ZS简介

是一家专注于转变全球医疗的管理咨询和科技公司。我们利用前沿分析、数据和科学帮助客户做出智能决策。我们的客户涵盖制药、医疗、科技、金融和消费品等多个行业。我们在上为客户开发并托管多种应用程序,同时也是AWS的高级咨询合作伙伴及服务交付合作伙伴。在本案例中,ZS在集成证据与策略规划(IESP)方面处于全球领先地位,提供一整套服务,帮助制药公司交付全面且差异化的新药证据包。

ZS在其多种产品、客户解决方案和服务中使用了多项AWS服务。亚马逊和构成了其数据和分析流水线的一部分,而则被用于长期数据和机器学习(ML)处理任务。

临床数据的高度关联性使得ZS选用了,这是一种为云环境构建的高性能全托管图数据库服务,以捕捉与数据相关的本体论和分类法,从而构成支撑的基础。我们为搜索需求使用了,它是一个开源的分布式搜索和分析套件。

临床文档搜索平台概述

临床文档包括各种数字记录,例如:

  • 研究协议
  • 证据差距
  • 临床活动
  • 出版物

在全球生物制药公司中,有多个人物角色负责新药的证据生成。这些证据支持支付方、健康技术评估(HTA)、医生和患者在治疗决策时的选择。证据生成面临诸多知识管理挑战。在一项制药资产的生命周期内,会完成数百项研究和分析,保持所有证据的良好记录变得困难,尤其是在应对来自外部医疗利益相关者(如支付方、提供者、医生和患者)的询问时。此外,与证据生成活动(如健康经济学和结果研究(HEOR)、真实世界证据(RWE)、合作研究和研究者倡导的研究(ISR))相关的信息几乎都不存在于结构化数据中;而证据活动的丰富性通常存在于研究方案(研究设计)和研究报告(结果)中。对此讽刺的是,哪些专注于知识生成的团队在知识管理上却面临挑战。

ZS通过应用大型语言模型(LLMs)和为证据生成带来了新的价值,提升了对证据协议的高级语义搜索能力。现在,证据生成负责人(医学事务、HEOR和RWE)能够进行自然语言对话,并考虑结构化数据和来自非结构化源的研究详情,返回高相关性的证据活动列表。

解决方案概述

该解决方案分层设计。文档处理层负责文档摄取和编排,而语义搜索平台(应用)层支持后端搜索和用户界面。多个不同类型的数据源,包括媒体、文档和外部分类法,被确定为在语义搜索平台内捕获和处理的相关内容。

文档处理解决方案框架层

所有组件和子层使用进行编排。Airflow中的管道会根据工作负载自动扩展。可以广泛地将层级分为如下所示的部分:

![文档处理解决方案框架](https://d2908q01vomqb2.cloudfront.net/b6692ea5df920cad691c20319a6fffd7a4a766b8/2024/08/29/ZS- 删除)

数据抓取

在数据抓取层,文档从指定的SharePoint位置中获取,并存入指定的桶。这些文档可能以多种格式存在,例如PDF、MicrosoftWord和Excel,并通过特定格式的适配器进行处理。

数据摄取

  • 数据摄取层是提议框架的第一步。在这一阶段,来自多种来源的数据平稳地进入系统的高级处理设置。在管道中,数据摄取过程按照精心构建的步骤顺序进行。
  • 这些步骤包括每次运行管道时创建唯一的运行ID、在版本控制表中管理自然语言处理(NLP)模型版本、识别文档格式,以及通过服务健康检查确保NLP模型服务的正常运行。
  • 该过程接着将数据从输入层转移到着陆层,创建动态批次,并在整个运行过程中持续跟踪文档处理状态。如发生任何问题,容错机制会使得过程暂停,从而顺利过渡到框架的NLP阶段。

数据库摄取

报告层处理特征提取层的JSON数据,并将其转换为CSV文件。每个CSV文件包含从文档特定部分提取的相关信息。随后,管道使用来自这些CSV文件的数据生成一个,其中每组实体表示在格式中的关系。该三元组文件用于摄取到Neptune和OpenSearch服务中。在完整的文档嵌入模块中,文档内容被分割成块,然后使用LLMs(如llama-2和)进行嵌入转换。这些嵌入以及文档ID和页码等元数据存储在OpenSearch服务中。我们使用各种分块策略来增强文本理解。语义分块将文本分成句子,分组为集合,并基于嵌入将相似内容合并。

代理分块则利用LLMs来确定基于上下文的分块大小,专注于基于命题的划分和简化复杂句子。此外,上下文和文档感知分块根据内容特性适应分块逻辑,以实现更有效的处理。

自然语言处理(NLP)

NLP层在提取文档中特定部分或实体方面起着至关重要的作用。特征提取阶段首先在文档中进行本地化,识别出文档内部的各个部分,以缩小后续实体提取的搜索空间。使用LLMs对提取的文本进行总结,增加该过程的效率。在本地化之后,特征提取步骤使用各种程序从识别的部分提取特征。这些程序根据相关性进行优先级排序,使用模型如Llama-2-7b、mistral-7b、Flan-t5-xl及Flan-T5-xxl来提取文档文本中的重要特征和实体。

自动映射阶段通过将提取的特征与本体中存在的标准术语进行匹配以保证一致性。这是通过与OpenSearch服务索引中存储的嵌入匹配提取的特征来实现的。最后,在文档布局凝聚步骤中,自动映射阶段的输出进行调整,以在文档层面上聚合实体,从而提供文档内容的凝聚表示。

语义搜索平台应用层

该层使用Neptune作为图数据库,OpenSearch服务作为向量引擎。

![语义搜索平台应用层](https://d2908q01vomqb2.cloudfront.net/b6692ea5df920cad691c20319a6fffd7a4a766b8/2024/08/29/ZS- 删除)

亚马逊OpenSearch服务

OpenSearch服务兼具全文搜索和基于嵌入的语义搜索功能。OpenSearch服务向量引擎的能力支持使用LLMs的检索增强生成(RAG)工作流。这有助于在检索到与输入查询相关的文档后提供搜索的摘要输出。嵌入索引的方法采用了FAISS。

OpenSearch服务域详情:

  • OpenSearch服务版本:2.9
  • 节点数:1
  • 实例类型:r6g.2xlarge.search
  • 卷大小:Gp3: 500GB
  • 可用区数量:1
  • 专用主节点:启用
  • 可用区数量:3
  • 主节点数量:3
  • 主节点实例类型:r6g.large.search

为确定最近邻,我们使用了分层可导航小世界(HNSW)算法。我们使用FAISS近似k- NN库进行索引和搜索,并通过欧几里得距离(L2范数)计算两个向量之间的距离。

亚马逊Neptune

Neptune通过与OpenSearch服务的集成支持全文搜索(FTS)。AWS为启用FTS建立了一种本地流式服务,该服务用于从Neptune复制数据到OpenSearch服务。根据搜索的业务用例,定义了图模型。考虑到图模型,ZS领域团队的主题专家策划了自定义分类法,捕捉与临床数据相关的类和子类的层次关系。同时,确定了部分开源分类法和本体,将其整合入知识图谱中。我们识别出需要从临床文档中提取的部分和实体。ZS开发的非结构化文档处理管道并行处理文档,为Neptune摄取填充RDF格式的三元组。

这些的创建方式使得语义上相似的概念相互关联,从而构建搜索的语义层。在创建三元组文件后,它们被存储在S3桶中。使用,我们能够将数百万个三元组加载到图数据库中。

Neptune同时摄取结构化和非结构化数据,简化了跨不同源和格式检索内容的过程。在这一阶段,我们能够发现结构化和非结构化数据之间以前未知的关系,并将其提供给搜索平台。我们使用从Neptune图数据库中返回来自丰富知识图谱的结果,并与OpenSearch服务进行集成。

Neptune能够自动扩展存储和计算资源,以适应不断增长的数据集和并发API调用。目前,该应用程序维持着每天约3000个活跃用户,同时也观察到约30-50名用户在应用环境中同时发起查询。Neptune图容纳大约487万条三元组。由于每日和每周的摄取管道程序,三元组的数量还在不断增加。

Neptune配置:

  • 实例类型:db.r5d.4xlarge
  • 引擎版本:1.2.0.1

大型语言模型(LLMs)

大型语言模型(LLMs)如Llama-2、Mistral和Zephyr被用于提取文档中的部分和实体。Flan-t5等模型也用于提取程序中使用的其他相似实体。这些被选定的部分和实体对特定领域的搜索至关重要,因此在用于搜索的学习排序算法中优先级较高。

此外,LLMs还被用于生成顶级搜索结果的综合摘要。

LLMs托管在中,使用启用GPU的节点组以确保快速推断处理。我们为不同的使用案例使用了不同的模型。例如,为生成嵌入,我们部署了BGE基础模型,同时Mistral、Llama2、Zephyr等则用于提取特定医学实体、执行部分提取和总结搜索结果。通过为不同任务选择不同的LLMs,我们旨在在狭窄领域内提高准确性,从而提升系统的整体相关性。

微调

已经经过微调的专注于制药行业文档的模型被使用。使用的模型包括:

  • PharMolix/BioMedGPT-LM-7B(在医疗上微调的LLAMA-2)
  • emilyalsentzer/Bio_ClinicalBERT
  • stanford-crfm/BioMedLM
  • microsoft/biogpt

重新排序、排序和过滤阶段

从用户输入查询中删除停用词和特殊字符,以确保清晰的查询。在预处理查询后,通过形成多种的搜索术语组合来创造组合。这一步骤丰富了搜索范围,提高了找到相关结果的机会。例如,如果输入查询是“机器学习算法”,生成的n- grams可能是“机器学习”、“学习算法”和“机器学习算法”。同时运行搜索术语使用API访问Neptune图和OpenSearch服务索引。这种混合方法拓宽了搜索覆盖,充分利用了两个数据源的优势。根据领域的具体要求,对从数据源获得的每个结果分配特定的权重。此权重反映了结果在搜索查询和关联领域中的相关性与重要性。例如,当查询与图相关概念直接相关时,来自Neptune图的结果可能被赋予更高的权重,而来自OpenSearch服务的结果则可能在与基于文本的信息更紧密结合时获得更多权重。两个数据源中都出现的文档将优先级最高,因为它们可能提供全面的见解。其次是 exclusively sourced * from Neptunegraph的文档,随后是OpenSearch服务的文档。这种层次结构确保最相关和全面的结果首先展示。纳入这些考虑因素后,为每个结果计算最终分数。根据最终分数对结果进行排序,确保最相关的信息排在前n个结果中。

最终用户界面

从不同系统中聚合的证据目录提供了一个全面的已完成、正在进行和计划的证据生成活动的存储库。随着证据负责人制定前瞻性计划,现有的内部证据库便于决策参考。

以下视频演示了证据目录的功能:

客户影响

完成后,解决方案为客户提供了以下好处:

  • 在多个数据源(结构化和非结构化文档)上的搜索使复杂的隐藏关系和洞察一览无遗。
  • 临床文档通常包含结构化与非结构化数据的混合。Neptune可以以图形格式存储结构化信息,而向量数据库则可以利用嵌入处理非结构化数据。这种集成为查询和分析多样的临床信息提供了全面的方法。
  • 通过构建使用Neptune的知识图谱,临床数据得以丰富额外的上下文信息,包括疾病、治疗、药物和患者记录之间的关系,从而提供对医疗数据的更全面的视角。
  • 搜索应用程序帮助客户保持对最新研究、临床进展和竞争态势的了解。
  • 这样,客户能够及时决策,识别市场趋势,并根据对行业的全面理解帮助产品定位。
  • 该应用程序有助于监控不良事件,跟踪安全信号,确保药物相关信息的易获取性和易理解性,从而支持药物警戒工作。
  • 目前,该搜索应用程序在生产环境中运行,活跃用户达到3000人。

客户成功标准

以下成功标准用于评估该解决方案:

  • 快速、高准确率的搜索结果:前三项搜索结果的准确率为99%,用户的整体延迟小于3秒。
  • 识别和提取协议的特定部分:识别的部分精度为0.98,召回率为0.87。
  • 基于简单人类语言的准确和相关的搜索结果,能够解答用户的问题。
  • 清晰的用户界面及明确指示对齐文档(协议、临床研究报告和出版物)中匹配的文本提取部分。
  • 了解哪些证据已完成或正在进行,减少新提议的证据活动中的冗余。

所面临的挑战与经验教训

在开发和部署这一解决方案的过程中,我们遇到了两个主要挑战。

大数据量

需要对非结构化文档进行完整嵌入,OpenSearch服务通过正确的配置帮助实现了这一目标。这涉及部署具有主节点的OpenSearch服务,并为嵌入和存储非结构化文档嵌入分配足够的存储容量。我们在OpenSearch服务中存储了高达100GB的嵌入内容。

Leave a Reply

Required fields are marked *