提升基于RAG的智能文档助手,通过实体提取、SQL查询和代理与亚马逊Bedrock 机器学习博客
  • 14

利用实体提取、SQL查询和代理提升基于RAG的智能文档助手

作者 Mohamed Ali Jamaoui、Giuseppe Hannen、Irina Radu 和 Laurens ten Cate日期 2023年12月6日来源 Amazon Bedrock Amazon SageMaker Amazon Textract 生成性AI 技术教程永久链接 评论

关键要点

近年来,对话式AI取得了显著进展,尤其是在生成性AI和大型语言模型LLM的表现上。传统的LLM无法很好地适应企业特定的问题,因为它们依赖于预训练期间接触到的公共数据。将LLM与内部知识库连接的RetrieverAugmented GenerationRAG方法可以提高文档助手的精准度和信任度。本文探讨RAG的局限性,以及通过元数据、SQL查询和LLM代理结合,提升文档助手功能的解决方案。

对话式AI在近年来迅速发展,得益于生成性AI的飞速进展,尤其是通过指令微调和人类反馈强化学习等训练技巧显著提高了大型语言模型LLM的性能。然而,LLM在处理企业特定问题时存在局限性,因为它们生成答案时主要依赖于公共数据,这些数据通常缺乏现代企业内部文件中蕴含的专业知识。

要创建一些能够基于专业企业知识进行讨论的AI助手,我们需要将这些强大的但通用的LLM与内部文档知识库连接。这种通过从内部数据源中获取信息来充实LLM生成上下文的方法被称为检索增强生成RAG。RAG产生的助手更加专注于特定领域且更具可信度。

然而,基于RAG的流行设计模式与语义搜索并不能解决所有可能的问题,尤其是那些需要跨多个文档进行分析推理的问题。举个例子,假如你在规划投资公司的战略,分析候选公司的财务结果和潜在风险的能力至关重要。

在本文中,我们将展示如何设计一款智能文档助手,该助手能够回答需要分析和多步推理的问题。我们将通过三个部分进行说明:首先,我们回顾RAG设计模式及其在分析问题上的局限性;其次,我们介绍一种更为灵活的架构以克服这些局限;最后,我们将通过示例演示如何利用Amazon Bedrock中的LLM查询数据并构建能够增强RAG的分析能力的代理,从而实现能够解答复杂领域特定问题的智能文档助手。

第一部分:RAG的局限性及解决方案概述

在这一部分,我们回顾RAG设计模式,并讨论其在分析问题上的局限性,同时提出一种能够克服这些局限的更灵活的架构。

RAG概述

RAG解决方案受到了表示学习和语义搜索思想的启发,自2010年以来逐渐被采用于排名问题例如推荐和搜索及自然语言处理NLP任务中。

如今流行的做法由以下三个步骤组成:

离线批处理:从输入知识库中摄取文档,将其拆分为块,为每个块创建语义嵌入,之后基于这些嵌入创建语义搜索索引。

实时查询:当回答新问题时,输入问题被转换为嵌入,利用相似度度量方法如余弦相似度进行搜索,以提取最相似的文档块。

构建提示:通过将系统消息与提取的文档块及输入问题连接构建提示,然后将其提交给LLM生成答案。

借助合适的嵌入模型和高效的语义搜索模块,这种解决方案能够回答需要从文档数据库中检索现有信息的问题。

基于语义搜索的RAG局限性

尽管RAG是现代领域特定AI助手的关键组成部分,但它无法回答那些需要同时扫描、比较和推理所有文档的问题。以投资为例,若要了解“2022年收入最高的前五家公司是什么?”此类问题涉及分析推理,一般通过结构化数据和SQL引擎来进行。

解决RAG的局限性

我们提议结合RAG、元数据、SQL查询和LLM代理来克服其局限性。要有效回答复杂分析问题,我们需要:

识别每家公司的收入。筛选出2022年的收入。按收入降序排序。提取收入最高的前五家公司名。

通常这些分析操作需在结构化数据上进行,通过SQL查询轻松实现。通过实现一个实时的SQL查询模块,我们可以增强RAG,使其能够处理更复杂的查询。

第二部分:实体提取管道

在这一部分中,我们深入探讨用于准备结构化数据的实体提取管道,这是实现分析问题回答的关键组成部分。

苹果加速器永久免费版

文本提取

通常,文档以PDF格式或扫描图像形式存储。借助Amazon Textract,我们可以将原始文档转换为普通文本,同时保留其原始结构。

通过Amazon Textract提取文本和表格。利用Python脚本生成数据框架。将提取结果合并,输出为一份文档。

利用LLM进行实体提取和查询

为有效回答分析问题,需要从文档知识库中提取相关元数据。这可以借助SQL来存储和检索信息。

提升基于RAG的智能文档助手,通过实体提取、SQL查询和代理与亚马逊Bedrock 机器学习博客

此过程涉及:

定义提取信息的JSON架构。调用LLM,以架构提示提取相关数据。解析JSON输出并验证提取内容。

第三部分:构建具有代理功能的文档助手

在这一部分中,我们展示如何利用Amazon Bedrock中的LLM查询数据,并构建增强分析能力的LLM代理,从而实现智能文档助手。

制定SQL查询和回答分析问题

在获取结构化元数据存储、提取相关实体后,接下来需要从自然语言问题生成正确的SQL查询。

利用Amazon Bedrock中的LLM生成SQL查询,同时明确任务和结构。使用AWS Lambda函数管理这一过程,调用LLM以获取相应的SQL查询,验证后进行执行。

安全性考虑以防SQL注入攻击

为了确保AI助手在查询SQL数据库时不会引入安全漏洞,需采取以下安全措施:

应用最小权限IAM权限。限制数据访问,仅提供必要的表和列。添加审核层,检测并防止注入攻击。

语义搜索检索以增强生成上下文

针对这一部分,RAG结合语义搜索模块是至关重要的。可以依托Amazon Kendra或其他向量搜索解决方案。

结论

在本文中,我们探讨了如何利用LLM与RAG设计模式构建领域专属AI助手,解释了为何仅使用RAG不足以产生商业价值。因而我们提出了一种结合代理与工具的扩展方案,使助手能够使用传统NLP技术和现代LLM能力,以更有效地帮助用户解决业务问题。希望本文的解决方案能为您设计自己基于内部知识库的AI助手提供灵感。