当前位置: 首页 > article >正文

使用 Aryn DocPrep、DocParse 和 Elasticsearch 向量数据库实现高质量 RAG

作者:来自 Elastic Hemant Malik 及 Jonathan Fritz

组织依靠自然语言查询从非结构化数据中获取见解,但要获得高质量的答案,首先要进行有效的数据准备。Aryn DocParse 和 DocPrep通过将复杂文档转换为结构化 JSON 或 markdown 来简化此过程,为混合搜索和检索增强生成 (RAG) 应用程序提供高达 6 倍的数据分块和 2 倍的召回率。这些工具由开源 Aryn Partitioner 和在 80K+ 企业文档上训练的有效深度学习 DETR AI 模型提供支持,与现成的解决方案相比,它们可确保更高的准确性和相关性。

在本博客中,我们将演示如何使用 DocParse 和 DocPrep 为 RAG 应用程序准备和加载复杂 PDF 数据集到 Elasticsearch 中。我们将使用美国国家运输安全委员会 (NTSB) 提供的约 75 份有关飞机事故的 PDF 报告。此处提供了该集合中的一个示例文档。
 

什么是 Aryn DocParse 和 DocPrep

Aryn DocParse 可对文档进行分段和标记,提取表格和图像,并进行 OCR 操作,将 30 多种文档类型转换为结构化 JSON。它运行开源 Aryn Partitioner 及其 开源深度学习 DETR AI 模型,该模型已在 80,000 多份企业文档上进行训练。与现成的系统相比, 这可使数据分块准确率提高 6 倍,混合搜索或 RAG 的召回率提高 2 倍。

Aryn DocPrep 是一种用于创建文档 ETL 管道的工具,用于准备这些数据并将其加载到向量数据库和混合搜索索引(如 Elasticsearch)中。管道的第一步是使用 DocParse 处理每个文档。DocPrep 使用 Sycamore(一个开源、可扩展、由 LLM 提供支持的文档 ETL 库)创建 Python 代码。尽管 DocPrep 可以轻松使用 Sycamore 代码创建 ETL 管道,但你可能需要使用其他 Sycamore 数据转换、分块/合并、提取和清理功能来自定义管道。

可以看出,这些文档很复杂,包含表格、图像、章节标题和复杂的布局。让我们开始吧!

构建高质量 RAG 应用

启动 Elasticsearch 向量数据库容器

我们将使用 Docker 容器在本地安装 Elasticsearch,用于演示 RAG 应用程序。请按照以下说明进行部署。

使用 Aryn DocPrep 和 DocParse 对数据进行分块并加载 Elasticsearch

Aryn DocPrep 是一款用于创建文档 ETL 管道的工具,该管道用于准备数据并将其加载到向量数据库和混合搜索索引(如 Elasticsearch)中。管道的第一步是使用 DocParse 处理每个文档。

我们将使用 Aryn Cloud 中的 Aryn DocParse 来生成我们的初始 ETL 管道代码。你可以免费注册使用 Aryn Cloud 并转到 Aryn Cloud 控制台中的 DocPrep UI。

你还可以编写 ETL 管道并在本地运行 Aryn Partitioner 的一个版本(用于 DocParse)。访问 Sycamore 文档以了解更多信息。

使用 DocPrep 创建 ETL 管道

DocPrep 使用 Sycamore(一个开源、可扩展、由 LLM 提供支持的文档 ETL 库)创建 Python 代码。虽然 DocPrep 可以使用 Sycamore 代码轻松创建 ETL 管道,但你可能需要使用其他 Sycamore 数据转换、提取和清理功能进一步自定义管道。

DocPrep 简化了基本 ETL 管道的创建,以便为 RAG 和语义搜索准备非结构化数据。

首先,我们在 Amazon S3 中提供文档类型 (PDF) 和 PDF 的源位置 (s3://aryn-public/ntsb/):

选择文档类型和来源

接下来,我们将选择 MiniLM 作为我们的嵌入模型,以在本地创建向量嵌入。DocPrep 使用 DocParse 进行文档分割、提取和其他处理,但我们不需要更改默认配置。

选择分块选项

最后,我们选择 Elasticsearch 作为目标数据库,并添加主机 URL 和索引名称。

请注意,URL 设置为 “localhost”,因为我们在本地运行 Elasticsearch。我们还将在本地运行 DocPrep/Sycamore ETL 管道,以便它可以轻松加载集群。

配置 Elasticsearch 连接器

现在,单击 “Generate pipeline” 以创建 ETL 管道。单击下一页上的 “Download notebook” 以将代码下载为 Jupyter 笔记本文件。

安装 Jupyter 和 Sycamore

我们将在 Jupyter 笔记本中本地运行 ETL 管道并使用 Sycamore 文档 ETL 库。首先,使用 Elasticsearch 连接器和本地推理库安装 Jupyter 和 Sycamore 以创建向量嵌入。

pip install jupyter
pip install 'sycamore-ai[elasticsearch,local-inference]'

运行 pipeline

Jupyter 并打开包含前面步骤中下载的 ETL 管道的笔记本。

如果你尚未将 Aryn Cloud API 密钥设置为名为 ARYN_API_KEY 的环境变量,则可以直接在笔记本中设置它。

在倒数第二个单元格中,更新 Elasticsearch 加载配置。将设置 Elasticsearch 密码的 es_client_args 替换为容器中的 Elasticsearch 基本身份验证配置:

es_client_args={"basic_auth": (“<YOUR-USERNAME>”, os.getenv("ELASTIC_PASSWORD"))}

如果密码未设置为环境变量,你可以直接在此处添加。

现在,运行笔记本中的单元格。大约 75 个 PDF 中的每一个都被发送到 DocParse 进行处理,管道中的这一步将需要几分钟。其中一个单元格将输出带有边界框的三页文档,以显示 DocParse 如何分段数据。

最后一个单元格运行读取查询以验证数据是否已正确加载。现在,你可以将 Elasticsearch 索引中准备好的数据与你的 RAG 应用程序一起使用。

添加额外的数据丰富和转换。

DocPrep 中生成的代码非常适合基本的 ETL 管道,但是,你可能希望提取元数据并执行数据清理。管道代码是完全可定制的,你可以在 Sycamore 或任意 Python 代码中使用额外的转换。

这是一个示例笔记本,其中包含额外的数据转换、元数据提取和数据清理步骤。你可以在 RAG 应用程序中使用此元数据来过滤结果。

结论

本博客使用 Aryn DocParse、DocPrep 和 Sycamore 解析、提取、丰富、清理、嵌入和加载数据到 Elasticsearch 矢量数据库中的矢量和关键字索引中。我们使用 DocPrep 创建初始 ETL 管道,然后使用带有额外 Sycamore 代码的笔记本来演示额外的数据丰富和清理。

你的文档的解析、丰富和处理方式会显著影响你的 RAG 查询的质量。使用本博客文章中的示例,你可以快速轻松地使用 Aryn 和 Elasticsearch 构建自己的 RAG 系统,并在构建 GenAI 应用程序时迭代处理和检索策略。

以下是一些后续步骤的资源:

  • 使用 Aryn DataPrep 和 Elasticsearch 的示例笔记本
  • 使用 Elasticsearch 向量数据库启动本地
  • 开始使用 Aryn Cloud DocPrep
  • Sycamore 文档
  • Elasticsearch 向量数据库生态系统集成


Elasticsearch 包含许多新功能,可帮助你为你的用例构建最佳搜索解决方案。深入了解我们的示例笔记本以了解更多信息,开始免费云试用,或立即在你的本地机器上试用 Elastic。

High Quality RAG with Aryn DocPrep, DocParse and Elasticsearch vector database - Elasticsearch Labs原文:


http://www.kler.cn/a/515643.html

相关文章:

  • RabbitMQ的消息可靠性保证
  • 基于Python django的音乐用户偏好分析及可视化系统设计与实现
  • C语言之图像文件的属性
  • GS论文阅读--GeoTexDensifier
  • 记一次常规的网络安全渗透测试
  • Python_CUDA入门教程学习记录
  • ASP .NET Core 学习(.NET9)部署(一)windows
  • WordPress Fancy Product Designer插件Sql注入漏洞复现(CVE-2024-51818)(附脚本)
  • CSS中选择器的分类
  • 代码编写java代做matlab程序代编Python接单c++代写web系统设计
  • FastExcel:高性能Excel处理框架
  • Nacos 和 Zookeeper
  • Go语言通过Casbin配合MySQL和Gorm实现RBAC访问控制模型
  • ES的聚合:定义与技术特点
  • arkime和elasticsearch 安装方法三
  • 记录一次k8s起不来的排查过程
  • 营销2.0时代的挑战与开源AI智能名片2+1链动模式S2B2C商城小程序源码的解决方案
  • 15_业务系统基类
  • .gitignore配置忽略out目录
  • macOS安装Gradle环境
  • 移植前准备之git管理内核源码
  • Appium(四)
  • 【Android学习】Kotlin随笔
  • kafka学习笔记2 —— 筑梦之路
  • centos部署rabbitmq
  • Next.js:构建大模型智能体GPT研究者应用的 Web开发框架