使用 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 管道,以便它可以轻松加载集群。

现在,单击 “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
作者:来自 Elastic Hemant Malik 及 Jonathan Fritz 组织依靠自然语言查询从非结构化数据中获取见解,但要获得高质量的答案,首先要进行有效的数据准备。Aryn DocParse 和 DocPrep通过将复杂文档转换为结构化 JSON 或 markdown 来简化此过程&a…...

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

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

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

【Android】布局文件layout.xml文件使用控件属性android:layout_weight使布局较为美观,以RadioButton为例
目录 说明举例 说明 简单来说,android:layout_weight为当前控件按比例分配剩余空间。且单个控件该属性的具体数值不重要,而是多个控件的属性值之比发挥作用,例如有2个控件,各自的android:layout_weight的值设为0.5和0.5࿰…...

RabbitMQ 架构分析
文章目录 前言一、RabbitMQ架构分析1、Broker2、Vhost3、Producer4、Messages5、Connections6、Channel7、Exchange7、Queue8、Consumer 二、消息路由机制1、Direct Exchange2、Topic Exchange3、Fanout Exchange4、Headers Exchange5、notice5.1、备用交换机(Alter…...
Qt Enter和HoverEnter事件
介绍 做PC开发的过程中或多或少都会接触到鼠标的悬停事件,Qt中处理鼠标悬停有Enter和HoverEnter两种事件 相同点 QEvent::Enter对应QEnterEvent,描述的是鼠标进入控件坐标范围之内的行为,QEnterEvent可以抓取鼠标的位置;QEvent…...

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

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

[笔记] 极狐GitLab实例 : 手动备份步骤总结
官方备份文档 : 备份和恢复极狐GitLab 一. 要求 为了能够进行备份和恢复,请确保您系统已安装 Rsync。 如果您安装了极狐GitLab: 如果您使用 Omnibus 软件包,则无需额外操作。如果您使用源代码安装,您需要确定是否安装了 rsync。…...
随笔十七、eth0单网卡绑定双ip的问题
在调试语音对讲过程中遇到过一个“奇怪”问题:泰山派作为一端,可以收到对方发来的语音,而对方不能收到泰山派发出的语音。 用wireshark抓包UDP发现,泰山派发送的地址是192.168.1.30,而给泰山派实际设置的静态地址是19…...

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

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

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

Linux:多线程[2] 线程控制
了解: Linux底层提供创建轻量级进程/进程的接口clone,通过选择是否共享资源创建。 vfork和fork都调用的clone进行实现,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)(下篇)
在本系列的上篇中,小李哥为大家介绍了如何在亚马逊云科技上给社交数字营销场景创建AI代理的方案,用于社交动态的生成和对文章进行推广曝光。在本篇中小李哥将继续本系列的介绍,为大家介绍如何创建主代理,将多个子代理挂载到主代理…...

DBeaver连接MySQL数据库
打开DBeaver,点击“新建数据库连接”选项。 点击“测试连接”,首次连接mysql会提示下载对应的JDBC驱动,点击下载即可。 填写服务器地址(这里是本地测试)、mysql的用户名(root)和密码ÿ…...
Leetcode40: 组合总和 II
题目描述: 给定一个候选人编号的集合 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。 candidates 中的每个数字在每个组合中只能使用 一次 。 注意:解集不能包含重复的组合。 代码思路ÿ…...

win32汇编环境,对话框程序中使用进度条控件
;运行效果 ;win32汇编环境,对话框程序中使用进度条控件 ;进度条控件主要涉及的是长度单位,每步步长,推进的时间。 ;比如你的长度是1000,步长是100,每秒走1次,则10秒走完全程 ;比如你的长度是1000,步长是10,每秒走1次,则100秒走完全程,但每格格子的长度与上面一样 ;以下…...
浅谈 React Hooks
React Hooks 是 React 16.8 引入的一组 API,用于在函数组件中使用 state 和其他 React 特性(例如生命周期方法、context 等)。Hooks 通过简洁的函数接口,解决了状态与 UI 的高度解耦,通过函数式编程范式实现更灵活 Rea…...

DIY|Mac 搭建 ESP-IDF 开发环境及编译小智 AI
前一阵子在百度 AI 开发者大会上,看到基于小智 AI DIY 玩具的演示,感觉有点意思,想着自己也来试试。 如果只是想烧录现成的固件,乐鑫官方除了提供了 Windows 版本的 Flash 下载工具 之外,还提供了基于网页版的 ESP LA…...

c#开发AI模型对话
AI模型 前面已经介绍了一般AI模型本地部署,直接调用现成的模型数据。这里主要讲述讲接口集成到我们自己的程序中使用方式。 微软提供了ML.NET来开发和使用AI模型,但是目前国内可能使用不多,至少实践例子很少看见。开发训练模型就不介绍了&am…...

pikachu靶场通关笔记22-1 SQL注入05-1-insert注入(报错法)
目录 一、SQL注入 二、insert注入 三、报错型注入 四、updatexml函数 五、源码审计 六、insert渗透实战 1、渗透准备 2、获取数据库名database 3、获取表名table 4、获取列名column 5、获取字段 本系列为通过《pikachu靶场通关笔记》的SQL注入关卡(共10关࿰…...

Linux --进程控制
本文从以下五个方面来初步认识进程控制: 目录 进程创建 进程终止 进程等待 进程替换 模拟实现一个微型shell 进程创建 在Linux系统中我们可以在一个进程使用系统调用fork()来创建子进程,创建出来的进程就是子进程,原来的进程为父进程。…...

Python基于历史模拟方法实现投资组合风险管理的VaR与ES模型项目实战
说明:这是一个机器学习实战项目(附带数据代码文档),如需数据代码文档可以直接到文章最后关注获取。 1.项目背景 在金融市场日益复杂和波动加剧的背景下,风险管理成为金融机构和个人投资者关注的核心议题之一。VaR&…...
MySQL JOIN 表过多的优化思路
当 MySQL 查询涉及大量表 JOIN 时,性能会显著下降。以下是优化思路和简易实现方法: 一、核心优化思路 减少 JOIN 数量 数据冗余:添加必要的冗余字段(如订单表直接存储用户名)合并表:将频繁关联的小表合并成…...
MySQL 8.0 事务全面讲解
以下是一个结合两次回答的 MySQL 8.0 事务全面讲解,涵盖了事务的核心概念、操作示例、失败回滚、隔离级别、事务性 DDL 和 XA 事务等内容,并修正了查看隔离级别的命令。 MySQL 8.0 事务全面讲解 一、事务的核心概念(ACID) 事务是…...
人工智能--安全大模型训练计划:基于Fine-tuning + LLM Agent
安全大模型训练计划:基于Fine-tuning LLM Agent 1. 构建高质量安全数据集 目标:为安全大模型创建高质量、去偏、符合伦理的训练数据集,涵盖安全相关任务(如有害内容检测、隐私保护、道德推理等)。 1.1 数据收集 描…...

手机平板能效生态设计指令EU 2023/1670标准解读
手机平板能效生态设计指令EU 2023/1670标准解读 以下是针对欧盟《手机和平板电脑生态设计法规》(EU) 2023/1670 的核心解读,综合法规核心要求、最新修正及企业合规要点: 一、法规背景与目标 生效与强制时间 发布于2023年8月31日(OJ公报&…...