一些Github上开源的RAG 应用

 我也是做RAG相关工作的。周末抽了一些时间,来看看开源的RAG技术能够做到什么程度。

其实我重点关注的是以下几点(以下几个点是RAG提升的关键点):

  • 这些开源技术他们是怎么做文档解析的(有哪些我们可以借鉴的,哪些是我不知道的)
  • 如何做切分的
  • 不同的场景数据又是如何制定不同的策略的
  • 还有如何做召回的,召回策略是什么?
  • 以及如何选用embedding模型,rerank模型
  • 效果怎么样,本地快速部署效果是否方便?

一、开源的RAG

1.1 网易开源的 QAnything

当前github 7.7K star

https://github.com/netease-youdao/QAnything/blob/master/README_zh.md

先试试效果

QAnything

1.2 ragFlow 

也是很快在github上获取1000+的star,当前4.3K star

https://github.com/infiniflow/ragflow/blob/main/README_zh.md

先试试效果

https://demo.ragflow.io/

RAGFlow 与其他 RAG 产品有何不同?看看官方的描述

尽管法学硕士在自然语言处理(NLP)方面取得了显着的进步,但“垃圾进垃圾出”的现状仍然没有改变。为此,RAGFlow 引入了与其他检索增强生成 (RAG) 产品相比的两个独特功能。

  • 细粒度文档解析:文档解析涉及图片和表格,您可以根据需要灵活干预。
  • 可追踪的答案,减少幻觉:您可以信任 RAGFlow 的答案,因为您可以查看支持它们的引文和参考文献。

二、最关心的技术点揭秘

2.1 文档解析

文档解释是RAG走先成功的第一步。就像经常所说的 “Quality in, quality out”。

但是由于文件的复杂多样性,往往都是文件解析不对,导致丢数据,在召回阶段无法被召回。最后没有成功回答问题。

2.1.1 RAGFlow 的文档解析

这里是PDF 解析的细节

使用到的OCR识别技术。然后又做的版面分析的技术。我测试了上传论文,来测试解析的效果。我并不是很认可这个解析最终的效果。

这里简单说一下它的解析过程:先进行ORC识别,然后再做的版面分析。详细见下文。

https://www.cnblogs.com/xiaoqi/p/18123888/ragflow 

RAGFlow 有一个做的好的地方

在解析前,它可以提前配置好,文档是什么类型,它针对不同的类型去解析。

第二个好的地方是,把解析的结果返显了。用户可以来修改纠正解析后的结果,还可以调整chunck的大小。

2.1.2 QAnything的 文档解析

QAnything的文档解析远嘛在这里,也是用模型来解析文档的,用到的是UnstructuredPaddle。

也是走的OCR识别的路线。

https://github.com/netease-youdao/QAnything/blob/master/qanything_kernel/utils/loader/pdf_loader.py

2.2  UnstructuredPaddleOCR 介绍

GitHub - Unstructured-IO/unstructured.PaddleOCR: Awesome multilingual OCR toolkits based on PaddlePaddle (practical ultra lightweight OCR system, support 80+ languages recognition, provide data annotation and synthesis tools, support training and deployment among server, mobile, embedded and IoT devices)

UnstructuredPaddle并不是一个单一的模型,而是一个基于PaddlePaddle框架的OCR(光学字符识别)工具包,它由Unstructured-IO组织开发。这个工具包旨在从非结构化的文档中提取文本,支持多种语言和多种格式的文档,包括PDF和Word文档等。UnstructuredPaddleOCR特别强调其轻量级和实用性,支持超过80种语言的文本识别6。

使用UnstructuredPaddleOCR时,用户可以通过简单的API调用来实现文本的提取。例如,用户可以上传一个PDF文件,然后UnstructuredPaddleOCR会利用OCR技术从文件中识别并提取出文本内容。这个过程通常包括图像预处理、文本识别、版面分析等步骤,以确保提取的文本尽可能准确和完整。

此外,UnstructuredPaddleOCR也提供了一些高级功能,比如支持自定义的版面分析策略,允许用户根据具体的文档类型和需求来调整文本提取的过程。这样的灵活性使得UnstructuredPaddleOCR可以应用于多种不同的场景,如文档数字化、数据录入、内容分析等。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/308769.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【漏洞复现】WordPress LayerSlider插件SQL注入漏洞复现

声明:亲爱的读者,我们诚挚地提醒您,Aniya网络安全的技术文章仅供个人研究学习参考。任何因传播或利用本实验室提供的信息而造成的直接或间接后果及损失,均由使用者自行承担责任。Aniya网络安全及作者对此概不负责。如有侵权&#…

标注平台工作流:如何提高训练数据质量与管理效率

世界发展日益依托数据的驱动,企业发现,管理不断增长的数据集却愈发困难。数据标注是诸多行业的一个关键过程,其中包括机器学习、计算机视觉和自然语言处理。对于大型语言模型(LLM)来说尤是如此,大型语言模型…

前端css笔记(pink老师)

css css书写顺序 自适应屏幕 html { width: 100%; height: 100%; display: table; } body { display: table-cell; } 用了这个方法以后,如果希望页面内的盒子也适应屏幕大小,则使用以下方法,会根据父亲的宽高计算出该盒子的宽高 width:xx%; …

JavaScript入门--变量

JavaScript入门--变量 一、JS变量二、变量命名三、常量四、局部变量 一、JS变量 定义变量a, b, c,并输出到控制台。 var a 1; var b 13.14; var c hello Js;console.log(a, b, c) //console.log()语句用于输出结果到控制台,类似python的print语句…

分布式存储系统Megastore

文章目录 说明设计目标及方案选择数据的分区和复制 数据模型照片共享服务数据模型实例Megastore索引Bigtable中存储情况 事务及并发控制Megastore提供的三种读Megastore的写操作完整的事务周期 Megastore基本架构快速读与快速写 核心技术之复制复制的日志数据读取数据写入协调者…

分布式系统架构中的相关概念

1.1、衡量网站的性能指标 响应时间:指执行一个请求从开始到最后收到响应数据所花费的总体时间。并发数:指系统同时能处理的请求数量。 并发连接数:指的是客户端向服务器发起请求,并建立了TCP连接。每秒钟服务器连接的总TCP数量请…

一款免费、开源、可批量识别的离线OCR软件,适用于 Windows7 x64及以上平台

免费:本项目所有代码开源,完全免费。方便:解压即用,离线运行,无需网络。高效:自带高效率的离线OCR引擎,内置多种语言识别库。灵活:支持命令行、HTTP接口等外部调用方式。功能&#x…

超越常规:用PHP抓取招聘信息

在人力资源管理方面,有效的数据采集可以为公司提供宝贵的人才洞察。通过分析招聘网站上的职位信息,人力资源专员可以了解市场上的人才供给情况,以及不同行业和职位的竞争状况。这样的数据分析有助于企业制定更加精准的招聘策略,从…

记录一个Kafka客户端Offset Explore连不上的问题

我昨天把集群重装了一下,再连这个工具就连不上了(你先把zk和kafka在集群启起来),报错截图如下: 英文翻译过来大概就是说遍历zk指定路径不存在,我还以为zk的问题,回去又把zk的文档翻了一遍&#…

【AI基本模型】简化生成对抗网络 (GAN)

目录 一、说明 二、GAN的工作 三、如何手动计算生成对抗网络(GAN)?✍️ 四、GAN的应用 一、说明 生成对抗网络 (GAN) 是一种机器学习算法,可以生成与现实世界数据几乎无法区分的合成数据。它们的工作原理是…

【JSON2WEB】14 基于Amis的CRUD开发30分钟速成

【JSON2WEB】系列目录 【JSON2WEB】01 WEB管理信息系统架构设计 【JSON2WEB】02 JSON2WEB初步UI设计 【JSON2WEB】03 go的模板包html/template的使用 【JSON2WEB】04 amis低代码前端框架介绍 【JSON2WEB】05 前端开发三件套 HTML CSS JavaScript 速成 【JSON2WEB】06 JSO…

【Java探索之旅】方法重载 递归

🎥 屿小夏 : 个人主页 🔥个人专栏 : Java编程秘籍 🌄 莫道桑榆晚,为霞尚满天! 文章目录 📑前言一、方法重载1.1 为什么要有方法重载1.2 方法重载的概念与使用1.3 方法签名 二、递归2…

Go语言中如何正确使用 errgroup

不管是哪种编程语言,重新发明轮子都不是一个好主意。代码库重新实现如何启动多个goroutine并汇总错误也很常见。但是Go生态系统中的一个包旨在支持这种常见的用例。让我们来看看这个包并了解为什么它应该成为Go开发人员工具集的一部分。 golang.org/x是一个为标准库提供扩展的…

Disk Drill Enterprise for Mac v5.5.1515数据恢复软件中文版

Disk Drill 是 Mac 操作系统固有的Mac数据恢复软件:使用 Recovery Vault 轻松保护文件免遭意外删除,并从 Mac 磁盘恢复丢失的数据。支持大多数存储设备,文件类型和文件系统。 软件下载:Disk Drill Enterprise for Mac v5.5.1515激…

李廉洋;4.11#黄金,WTI原油#行情走势分析策略。

美国银行预计,在今天召开的欧洲央行会议上不会有重大的政策变化,但欧洲央行正逐渐接近开始降息,尽管它采取的是一种谨慎的、依赖数据的方式。虽然欧洲央行对降息轨迹的信心不断增强,但降息的具体速度和幅度仍未公布,而…

K8S node节点执行kubectl get pods报错

第一个问题是由第二个问题产生的,第二个问题也是最常见的 网上找的都是从master节点把文件复制过来,这样确实可以解决,但是麻烦,有一个node节点还好,如果有多个呢?每个都复制吗?下面是我从外网…

基于SSM的在线学习系统的设计与实现(论文+源码)_kaic

基于SSM的在线学习系统的设计与实现 摘要 随着信息互联网购物的飞速发展,一般企业都去创建属于自己的管理系统。本文介绍了在线学习系统的开发全过程。通过分析企业对于在线学习系统的需求,创建了一个计算机管理在线学习系统的方案。文章介绍了在线学习系…

访问者模式类图与代码

某图书管理系统中管理着两种类型的文献:图书和论文。现在要求统计所有馆藏文献的总页码(假设图书馆中有一本540页的图书和两篇各25页的论文,那么馆藏文献的总页码就是590页)。采用Visitor(访问者)模式实现该要求,得到如图7.16所示的类图。 访…

VS2015 自定义模板

VS2015 自定义模板 文章目录 VS2015 自定义模板写在前面自定义项目模板导出模板 更新模板vstemplate 文件元素修改参考 参考 写在前面 ​ VS自定义模板是为了,将一些习惯性、通用性的设置预先设置到项目中,再次创建项目时就不用重复设置相同的参数了。 …

密码知识汇总

文章目录 密码学知识CIA三要素机密性(Confidentiality)完整性(Integrity)可用性(Availability) 非安全信道的风险以及应对措施风险应对措施使用加密技术(防窃…