在这篇博客中,我们将重点介绍如何利用多个AWS服务构建一个高可扩展性和高性能的临床文档搜索平台。该平台是一个先进的信息检索系统,旨在帮助医疗专业人员和研究人员高效地导航庞大的医疗文档、医学文献、研究文章、临床指南、方案文件、活动日志等内容。其目标是通过结合各种类型的临床文档查询,快速准确地定位特定信息,以支持临床决策、研究和其他医疗相关活动。
是一家专注于转变全球医疗的管理咨询和科技公司。我们利用前沿分析、数据和科学帮助客户做出智能决策。我们的客户涵盖制药、医疗、科技、金融和消费品等多个行业。我们在上为客户开发并托管多种应用程序,同时也是AWS的高级咨询合作伙伴及服务交付合作伙伴。在本案例中,ZS在集成证据与策略规划(IESP)方面处于全球领先地位,提供一整套服务,帮助制药公司交付全面且差异化的新药证据包。
ZS在其多种产品、客户解决方案和服务中使用了多项AWS服务。亚马逊和构成了其数据和分析流水线的一部分,而则被用于长期数据和机器学习(ML)处理任务。
临床数据的高度关联性使得ZS选用了,这是一种为云环境构建的高性能全托管图数据库服务,以捕捉与数据相关的本体论和分类法,从而构成支撑的基础。我们为搜索需求使用了,它是一个开源的分布式搜索和分析套件。
临床文档包括各种数字记录,例如:
在全球生物制药公司中,有多个人物角色负责新药的证据生成。这些证据支持支付方、健康技术评估(HTA)、医生和患者在治疗决策时的选择。证据生成面临诸多知识管理挑战。在一项制药资产的生命周期内,会完成数百项研究和分析,保持所有证据的良好记录变得困难,尤其是在应对来自外部医疗利益相关者(如支付方、提供者、医生和患者)的询问时。此外,与证据生成活动(如健康经济学和结果研究(HEOR)、真实世界证据(RWE)、合作研究和研究者倡导的研究(ISR))相关的信息几乎都不存在于结构化数据中;而证据活动的丰富性通常存在于研究方案(研究设计)和研究报告(结果)中。对此讽刺的是,哪些专注于知识生成的团队在知识管理上却面临挑战。
ZS通过应用大型语言模型(LLMs)和为证据生成带来了新的价值,提升了对证据协议的高级语义搜索能力。现在,证据生成负责人(医学事务、HEOR和RWE)能够进行自然语言对话,并考虑结构化数据和来自非结构化源的研究详情,返回高相关性的证据活动列表。
该解决方案分层设计。文档处理层负责文档摄取和编排,而语义搜索平台(应用)层支持后端搜索和用户界面。多个不同类型的数据源,包括媒体、文档和外部分类法,被确定为在语义搜索平台内捕获和处理的相关内容。
所有组件和子层使用进行编排。Airflow中的管道会根据工作负载自动扩展。可以广泛地将层级分为如下所示的部分:

在数据抓取层,文档从指定的SharePoint位置中获取,并存入指定的桶。这些文档可能以多种格式存在,例如PDF、MicrosoftWord和Excel,并通过特定格式的适配器进行处理。
报告层处理特征提取层的JSON数据,并将其转换为CSV文件。每个CSV文件包含从文档特定部分提取的相关信息。随后,管道使用来自这些CSV文件的数据生成一个,其中每组实体表示在格式中的关系。该三元组文件用于摄取到Neptune和OpenSearch服务中。在完整的文档嵌入模块中,文档内容被分割成块,然后使用LLMs(如llama-2和)进行嵌入转换。这些嵌入以及文档ID和页码等元数据存储在OpenSearch服务中。我们使用各种分块策略来增强文本理解。语义分块将文本分成句子,分组为集合,并基于嵌入将相似内容合并。
代理分块则利用LLMs来确定基于上下文的分块大小,专注于基于命题的划分和简化复杂句子。此外,上下文和文档感知分块根据内容特性适应分块逻辑,以实现更有效的处理。
NLP层在提取文档中特定部分或实体方面起着至关重要的作用。特征提取阶段首先在文档中进行本地化,识别出文档内部的各个部分,以缩小后续实体提取的搜索空间。使用LLMs对提取的文本进行总结,增加该过程的效率。在本地化之后,特征提取步骤使用各种程序从识别的部分提取特征。这些程序根据相关性进行优先级排序,使用模型如Llama-2-7b、mistral-7b、Flan-t5-xl及Flan-T5-xxl来提取文档文本中的重要特征和实体。
自动映射阶段通过将提取的特征与本体中存在的标准术语进行匹配以保证一致性。这是通过与OpenSearch服务索引中存储的嵌入匹配提取的特征来实现的。最后,在文档布局凝聚步骤中,自动映射阶段的输出进行调整,以在文档层面上聚合实体,从而提供文档内容的凝聚表示。
该层使用Neptune作为图数据库,OpenSearch服务作为向量引擎。

OpenSearch服务兼具全文搜索和基于嵌入的语义搜索功能。OpenSearch服务向量引擎的能力支持使用LLMs的检索增强生成(RAG)工作流。这有助于在检索到与输入查询相关的文档后提供搜索的摘要输出。嵌入索引的方法采用了FAISS。
OpenSearch服务域详情:
为确定最近邻,我们使用了分层可导航小世界(HNSW)算法。我们使用FAISS近似k- NN库进行索引和搜索,并通过欧几里得距离(L2范数)计算两个向量之间的距离。
Neptune通过与OpenSearch服务的集成支持全文搜索(FTS)。AWS为启用FTS建立了一种本地流式服务,该服务用于从Neptune复制数据到OpenSearch服务。根据搜索的业务用例,定义了图模型。考虑到图模型,ZS领域团队的主题专家策划了自定义分类法,捕捉与临床数据相关的类和子类的层次关系。同时,确定了部分开源分类法和本体,将其整合入知识图谱中。我们识别出需要从临床文档中提取的部分和实体。ZS开发的非结构化文档处理管道并行处理文档,为Neptune摄取填充RDF格式的三元组。
这些的创建方式使得语义上相似的概念相互关联,从而构建搜索的语义层。在创建三元组文件后,它们被存储在S3桶中。使用,我们能够将数百万个三元组加载到图数据库中。
Neptune同时摄取结构化和非结构化数据,简化了跨不同源和格式检索内容的过程。在这一阶段,我们能够发现结构化和非结构化数据之间以前未知的关系,并将其提供给搜索平台。我们使用从Neptune图数据库中返回来自丰富知识图谱的结果,并与OpenSearch服务进行集成。
Neptune能够自动扩展存储和计算资源,以适应不断增长的数据集和并发API调用。目前,该应用程序维持着每天约3000个活跃用户,同时也观察到约30-50名用户在应用环境中同时发起查询。Neptune图容纳大约487万条三元组。由于每日和每周的摄取管道程序,三元组的数量还在不断增加。
Neptune配置:
大型语言模型(LLMs)如Llama-2、Mistral和Zephyr被用于提取文档中的部分和实体。Flan-t5等模型也用于提取程序中使用的其他相似实体。这些被选定的部分和实体对特定领域的搜索至关重要,因此在用于搜索的学习排序算法中优先级较高。
此外,LLMs还被用于生成顶级搜索结果的综合摘要。
LLMs托管在中,使用启用GPU的节点组以确保快速推断处理。我们为不同的使用案例使用了不同的模型。例如,为生成嵌入,我们部署了BGE基础模型,同时Mistral、Llama2、Zephyr等则用于提取特定医学实体、执行部分提取和总结搜索结果。通过为不同任务选择不同的LLMs,我们旨在在狭窄领域内提高准确性,从而提升系统的整体相关性。
已经经过微调的专注于制药行业文档的模型被使用。使用的模型包括:
从用户输入查询中删除停用词和特殊字符,以确保清晰的查询。在预处理查询后,通过形成多种的搜索术语组合来创造组合。这一步骤丰富了搜索范围,提高了找到相关结果的机会。例如,如果输入查询是“机器学习算法”,生成的n- grams可能是“机器学习”、“学习算法”和“机器学习算法”。同时运行搜索术语使用API访问Neptune图和OpenSearch服务索引。这种混合方法拓宽了搜索覆盖,充分利用了两个数据源的优势。根据领域的具体要求,对从数据源获得的每个结果分配特定的权重。此权重反映了结果在搜索查询和关联领域中的相关性与重要性。例如,当查询与图相关概念直接相关时,来自Neptune图的结果可能被赋予更高的权重,而来自OpenSearch服务的结果则可能在与基于文本的信息更紧密结合时获得更多权重。两个数据源中都出现的文档将优先级最高,因为它们可能提供全面的见解。其次是 exclusively sourced * from Neptunegraph的文档,随后是OpenSearch服务的文档。这种层次结构确保最相关和全面的结果首先展示。纳入这些考虑因素后,为每个结果计算最终分数。根据最终分数对结果进行排序,确保最相关的信息排在前n个结果中。
从不同系统中聚合的证据目录提供了一个全面的已完成、正在进行和计划的证据生成活动的存储库。随着证据负责人制定前瞻性计划,现有的内部证据库便于决策参考。
以下视频演示了证据目录的功能:
完成后,解决方案为客户提供了以下好处:
以下成功标准用于评估该解决方案:
在开发和部署这一解决方案的过程中,我们遇到了两个主要挑战。
需要对非结构化文档进行完整嵌入,OpenSearch服务通过正确的配置帮助实现了这一目标。这涉及部署具有主节点的OpenSearch服务,并为嵌入和存储非结构化文档嵌入分配足够的存储容量。我们在OpenSearch服务中存储了高达100GB的嵌入内容。
Leave a Reply