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

使用 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原文:

相关文章:

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

作者&#xff1a;来自 Elastic Hemant Malik 及 Jonathan Fritz 组织依靠自然语言查询从非结构化数据中获取见解&#xff0c;但要获得高质量的答案&#xff0c;首先要进行有效的数据准备。Aryn DocParse 和 DocPrep通过将复杂文档转换为结构化 JSON 或 markdown 来简化此过程&a…...

Couchbase UI: Server

在 Couchbase UI 中的 Server&#xff08;服务器&#xff09;标签页主要用于管理和监控集群中的各个节点。以下是 Server 标签页的主要内容和功能介绍&#xff1a; 1. 节点列表 显示集群中所有节点的列表&#xff0c;每个节点的详细信息包括&#xff1a; 节点地址&#xff1…...

Web3.0时代的挑战与机遇:以开源2+1链动模式AI智能名片S2B2C商城小程序为例的深度探讨

摘要&#xff1a;Web3.0作为互联网的下一代形态&#xff0c;承载着去中心化、开放性和安全性的重要愿景。然而&#xff0c;其高门槛、用户体验差等问题阻碍了Web3.0的主流化进程。本文旨在深入探讨Web3.0面临的挑战&#xff0c;并提出利用开源21链动模式、AI智能名片及S2B2C商城…...

langchain基础(一)

模型又可分为语言模型&#xff08;擅长文本补全&#xff0c;输入和输出都是字符串&#xff09;和聊天模型&#xff08;擅长对话&#xff0c;输入时消息列表&#xff0c;输出是一个消息&#xff09;两大类。 以调用openai的聊天模型为例&#xff0c;先安装langchain_openai库 1…...

【Android】布局文件layout.xml文件使用控件属性android:layout_weight使布局较为美观,以RadioButton为例

目录 说明举例 说明 简单来说&#xff0c;android:layout_weight为当前控件按比例分配剩余空间。且单个控件该属性的具体数值不重要&#xff0c;而是多个控件的属性值之比发挥作用&#xff0c;例如有2个控件&#xff0c;各自的android:layout_weight的值设为0.5和0.5&#xff0…...

RabbitMQ 架构分析

文章目录 前言一、RabbitMQ架构分析1、Broker2、Vhost3、Producer4、Messages5、Connections6、Channel7、Exchange7、Queue8、Consumer 二、消息路由机制1、Direct Exchange2、Topic Exchange3、Fanout Exchange4、Headers Exchange5、notice5.1、备用交换机&#xff08;Alter…...

Qt Enter和HoverEnter事件

介绍 做PC开发的过程中或多或少都会接触到鼠标的悬停事件&#xff0c;Qt中处理鼠标悬停有Enter和HoverEnter两种事件 相同点 QEvent::Enter对应QEnterEvent&#xff0c;描述的是鼠标进入控件坐标范围之内的行为&#xff0c;QEnterEvent可以抓取鼠标的位置&#xff1b;QEvent…...

大语言模型之prompt工程

前言 随着人工智能的快速发展&#xff0c;我们正慢慢进入AIGC的新时代&#xff0c;其中对自然语言的处理成为了智能化的关键一环&#xff0c;在这个大背景下&#xff0c;“Prompt工程”由此产生&#xff0c;并且正逐渐成为有力的工具... LLM &#xff08;Large Language Mode…...

WPF基础 | WPF 常用控件实战:Button、TextBox 等的基础应用

WPF基础 | WPF 常用控件实战&#xff1a;Button、TextBox 等的基础应用 一、前言二、Button 控件基础2.1 Button 的基本定义与显示2.2 按钮样式设置2.3 按钮大小与布局 三、Button 的交互功能3.1 点击事件处理3.2 鼠标悬停与离开效果3.3 按钮禁用与启用 四、TextBox 控件基础4.…...

[笔记] 极狐GitLab实例 : 手动备份步骤总结

官方备份文档 : 备份和恢复极狐GitLab 一. 要求 为了能够进行备份和恢复&#xff0c;请确保您系统已安装 Rsync。 如果您安装了极狐GitLab&#xff1a; 如果您使用 Omnibus 软件包&#xff0c;则无需额外操作。如果您使用源代码安装&#xff0c;您需要确定是否安装了 rsync。…...

随笔十七、eth0单网卡绑定双ip的问题

在调试语音对讲过程中遇到过一个“奇怪”问题&#xff1a;泰山派作为一端&#xff0c;可以收到对方发来的语音&#xff0c;而对方不能收到泰山派发出的语音。 用wireshark抓包UDP发现&#xff0c;泰山派发送的地址是192.168.1.30&#xff0c;而给泰山派实际设置的静态地址是19…...

逻辑复制parallel并发参数测试

逻辑复制parallel并发参数测试 一、测试结果、测试环境描述 1.1、测试结果 cpu表中有1000万条数据&#xff0c;大小为1652MB,当更新的数据量多于10万条的时候有明显变化&#xff0c;多余30万条的时候相差2倍。 更新的数据量较多时&#xff0c;逻辑复制使用并发参数相比于使用…...

Cursor 帮你写一个小程序

Cursor注册地址 首先下载客户端 点击链接下载 1 打开微信开发者工具创建一个小程序项目 选择TS-基础模版 官方 2 然后使用Cursor打开小程序创建的项目 3 在CHAT聊天框输入自己的需求 比如 小程序功能描述&#xff1a;吃什么助手 项目名称&#xff1a; 吃什么小程序 功能目标…...

WordPress免费证书插件

为了在您的网站上启用HTTPS&#xff0c;您可以使用本插件快速获取Let’s Encrypt免费证书。 主要功能&#xff1a; 支持快速申请Let’s Encrypt免费证书支持通配符证书申请&#xff0c;每个证书最多可以绑定100个域名支持自动续期证书支持重颁发证书&#xff0c;证书过期或失…...

Linux:多线程[2] 线程控制

了解&#xff1a; Linux底层提供创建轻量级进程/进程的接口clone&#xff0c;通过选择是否共享资源创建。 vfork和fork都调用的clone进行实现&#xff0c;vfork和父进程共享地址空间-轻量级进程。 库函数pthread_create调用的也是底层的clone。 POSIX线程库 与线程有关的函数构…...

C++——list的了解和使用

目录 引言 forward_list与list 标准库中的list 一、list的常用接口 1.list的迭代器 2.list的初始化 3.list的容量操作 4.list的访问操作 5.list的修改操作 6.list的其他操作 二、list与vector的对比 结束语 引言 本篇博客要介绍的是STL中的list。 求点赞收藏评论…...

Agent群舞,在亚马逊云科技搭建数字营销多代理(Multi-Agent)(下篇)

在本系列的上篇中&#xff0c;小李哥为大家介绍了如何在亚马逊云科技上给社交数字营销场景创建AI代理的方案&#xff0c;用于社交动态的生成和对文章进行推广曝光。在本篇中小李哥将继续本系列的介绍&#xff0c;为大家介绍如何创建主代理&#xff0c;将多个子代理挂载到主代理…...

DBeaver连接MySQL数据库

打开DBeaver&#xff0c;点击“新建数据库连接”选项。 点击“测试连接”&#xff0c;首次连接mysql会提示下载对应的JDBC驱动&#xff0c;点击下载即可。 填写服务器地址&#xff08;这里是本地测试&#xff09;、mysql的用户名&#xff08;root&#xff09;和密码&#xff…...

Leetcode40: 组合总和 II

题目描述&#xff1a; 给定一个候选人编号的集合 candidates 和一个目标数 target &#xff0c;找出 candidates 中所有可以使数字和为 target 的组合。 candidates 中的每个数字在每个组合中只能使用 一次 。 注意&#xff1a;解集不能包含重复的组合。 代码思路&#xff…...

win32汇编环境,对话框程序中使用进度条控件

;运行效果 ;win32汇编环境,对话框程序中使用进度条控件 ;进度条控件主要涉及的是长度单位,每步步长,推进的时间。 ;比如你的长度是1000,步长是100,每秒走1次,则10秒走完全程 ;比如你的长度是1000,步长是10,每秒走1次,则100秒走完全程,但每格格子的长度与上面一样 ;以下…...

AIGC时代下的Vue组件开发深度探索

文章目录 一、AIGC时代对Vue组件开发的深远影响二、Vue组件开发基础与最佳实践三、AIGC技术在Vue组件开发中的具体应用四、结论与展望 随着人工智能技术的飞速发展&#xff0c;AIGC&#xff08;人工智能生成内容&#xff09;时代已经悄然来临。在这个时代背景下&#xff0c;软件…...

在Kubernets Cluster中部署LVM类型的StorageClass - 上

适用场景 看到B站技术部门的文章&#xff0c;是关于如何在k8s集群部署Elastic Search和Click House等IO密集型数据库应用的。 因为要充分利用NvME SSD盘的IOPS&#xff0c;所有数据库应用都直接调用本地SSD盘做为stateful application的 Persistent Volumes。为了可用动态的分…...

一次StarRocks分析的经历

起因 有人反馈说SR&#xff0c;在系统资源还有空闲的时候&#xff0c;被操作系统杀掉了。没有日志&#xff0c;怀疑是bug&#xff0c;如果要解决这个bug。据说在网上查到要升级。请我准备一下升级。 质疑 StarRocks是一款分析型数据库&#xff0c;2021年正式开源&#xff0c…...

Django网站搭建流程

使用Django搭建网站是一个系统的过程&#xff0c;涉及从环境搭建到部署上线的多个步骤。以下是详细的流程&#xff1a; 1. 环境搭建 &#xff08;1&#xff09;安装Python Django是基于Python的Web框架&#xff0c;因此需要先安装Python。建议安装Python 3.8及以上版本。 下载地…...

Vue-day2

7.Vue的生命周期 mounted函数&#xff1a;在页面加载完毕时&#xff0c;发送异步请求&#xff0c;加载数据&#xff0c;渲染页面 createApp({date(){},methods:{},mounted:function(){console.log(Vue挂载完毕&#xff0c;发送请求获取数据)} }).mount(#{app}) 8.ajax函数库…...

Day44:列表元素的修改

在 Python 中&#xff0c;列表是一种可变的数据结构&#xff0c;意味着我们可以对列表中的元素进行修改。修改列表元素的方式有很多种&#xff0c;包括通过索引修改、切片修改、使用 append() 和 extend() 添加新元素、以及删除元素等。今天&#xff0c;我们将学习如何在列表中…...

在 AMD GPU 上使用 vLLM 的 Triton 推理服务器

Triton Inference Server with vLLM on AMD GPUs — ROCm Blogs 2025年1月8日&#xff0c;作者&#xff1a;Fabricio Flores&#xff0c;Tiffany Mintz&#xff0c;Eliot Li&#xff0c;Yao Liu&#xff0c;Ted Themistokleous&#xff0c;Brian Pickrell&#xff0c;Vish Vadl…...

day7手机拍照装备

对焦对不上&#xff1a;1、光太暗&#xff1b;2、离太近&#xff1b;3、颜色太单一没有区分点 滤镜可以后期P 渐变灰滤镜&#xff1a;均衡色彩&#xff0c;暗的地方亮一些&#xff0c;亮的地方暗一些 中灰滤镜&#xff1a;减少光差 手机支架&#xff1a;最基本70cm即可 手…...

HarmonyOS:创建应用静态快捷方式

一、前言 静态快捷方式是一种在系统中创建的可以快速访问应用程序或特定功能的链接。它通常可以在长按应用图标&#xff0c;以图标和相应的文字出现在应用图标的上方&#xff0c;用户可以迅速启动对应应用程序的组件。使用快捷方式&#xff0c;可以提高效率&#xff0c;节省了查…...

[SUCTF 2018]MultiSQL1

进去题目页面如下 发现可能注入点只有登录和注册,那么我们先注册一个用户&#xff0c;发现跳转到了/user/user.php&#xff0c; 查看用户信息,发现有传参/user/user.php?id1 用?id1 and 11,和?id1 and 12,判断为数字型注入 原本以为是简单的数字型注入&#xff0c;看到大…...