一些Github上开源的RAG 应用

news2024/11/20 7:02:01

 我也是做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.coloradmin.cn/o/1593934.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

2024 年江苏省职业院校技能大赛“区块链技术应用” 赛项赛卷(样卷)运维题解析一

运维题 环境: ubuntu20 fisco 2.8.0 前言 准备两台机子,并且可以能相互pin通 192.168.19.133 [M1-A] 192.168.19.137 [M2-B] 子任务 1-2-1: 搭建区块链系统并验证 基于给定服务器环境以及软件,搭建一条双机 1 机构 8 节点 1 群组的区块 链系统(默认端口开始[30300,2020…

Nevercenter CameraBag Pro--专业级摄影后期处理利器

Nevercenter CameraBag Pro是一款功能强大的照片滤镜软件,专为摄影爱好者和专业摄影师设计。它拥有超过200种预设滤镜和效果,包括黑白、复古、胶片等多种风格,能够轻松改变照片的外观,并赋予作品独特的艺术感。此外,Ca…

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

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

webpack-(plugin,本地服务器,路径别名,安装vue)

安装vue npm i vue-loader -D npm i vue 编写一个vue文件: 在index.html中设置 一个id为app的div 将vue文件挂载到app中 vue比较特殊,除了使用loader外,还使用了plugin const path require("path"); const { VueLoaderPlugin …

自动化测试-web(PO:Page Object 模式)

一、PO模式 PO:Page Object(页面对象),将自动化涉及的页面或模块封装成对象。 PO能解决什么问题? 代码复用性便于维护(脚本层与业务分离)--如果元素信息发生变化了,也不用去修改脚…

卷积学习笔记——一文直观形象弄懂

在神经网络的世界中,卷积操作犹如一个神秘的魔术师,它以一种精巧的方式提取出图像、声音等数据中的关键特征,为神经网络模型赋能。但究竟什么是卷积?我们一探究竟。 卷积(Convolution)本质上是一种数学运算操作,它可以用极简的数学形式漂亮地描述一个动态过程。我们可以用形象…

【C语言】——字符串函数的使用与模拟实现(上)

【C语言】——字符串函数 前言一、 s t r l e n strlen strlen 函数1.1、函数功能1.2、函数的使用1.3、函数的模拟实现(1)计数法(2)递归法(3)指针 - 指针 二、 s t r c p y strcpy strcpy 函数2.1、函数功能…

复习Javase 方法

Q 1: long double float blooean 这四个都不能作为switch参数类型 Q2: 数字9出现的次数 9 19 29 |....90 91....99 前面都是个位是9,一共是9个9、后面十位是9,一共11个9 问:如何求个位和十位的9 如果要得到个位的9 就取余 9%1…

OpenHarmony C/C++三方库移植适配

简介 众所周知,C/C三方库相对与JS/ETS的三方组件来说,其运行效率高。那如何将一个C/C三方库移植到OH系统上呢?本文将介绍如何快速高效的移植一个C/C三方库到OpenHarmony上。 C/C三方库适配问题与解决方案 由上图可以看出,三方库…

【8086汇编】汇编语言基础入门

文章目录 一、汇编简介1. 汇编语言的组成2. CPU、寄存器、内存3. CPU对存储器的读写4. 拓展5. 检测6. 解析 二、寄存器1. mov、add命令2. 物理地址3. CS:IP 装段地址和偏移地址3.1 如何改变CS:IP的值 4. 数据段DS:[address]4.1 前置知识:字与字节4.2 DS:[address] 5…

求存款本息和(C语言)

一、运行结果&#xff1b; 二、源代码&#xff1b; # define _CRT_SECURE_NO_WARNINGS # include <stdio.h> # include <math.h>int main() {//初始化变量值&#xff1b;double P 1000, r1 0.015, r2 0.021, r3 0.0275, r4 0.03, r5 0.0035;int judge 0;//…

MathType2024中文永久免费激活许可证

MathType是一款专业的数学公式编辑器&#xff0c;由Design Science公司开发。它为用户提供了一个便捷的方式来创建和编辑复杂的数学公式&#xff0c;适用于各种文档和出版物。MathType与常见的文字处理软件和演示程序配合使用&#xff0c;能够在各种文档中加入复杂的数学公式&a…

给自己的机器人部件安装单目摄像头并实现gazebo仿真功能

手术执行器添加摄像头 手术执行器文件夹surgical_new内容展示如何添加单目摄像头下载现成的机器人环境文件启动仿真环境 手术执行器文件夹surgical_new内容展示 进入src文件夹下选择进入vision_obliquity文件夹 选择launch 有两个可用gazebo中rviz展示的launch文件&#xff0…

基于 net/http 抽象出 go 服务优雅停止的一般思路

和其他语言相比&#xff0c;Go 中有相同也有不同&#xff0c;相同的是实现思路上和其他语言没啥差异&#xff0c;不同在于 Go 采用的是 goroutine channel 的并发模型&#xff0c;与传统的进程线程相比&#xff0c;实现细节上存在差异。 本文将从实际场景和它的一般实现方式展…

【LeetCode: 705. 设计哈希集合 + 数据结构设计】

&#x1f680; 算法题 &#x1f680; &#x1f332; 算法刷题专栏 | 面试必备算法 | 面试高频算法 &#x1f340; &#x1f332; 越难的东西,越要努力坚持&#xff0c;因为它具有很高的价值&#xff0c;算法就是这样✨ &#x1f332; 作者简介&#xff1a;硕风和炜&#xff0c;…

【数据分析】嫡权法EWM

总结&#xff1a;基于熵值信息来计算出权重&#xff0c;数据具有客观性。 目录 简介 计算步骤 案例 简介 熵值法原理 熵值法的基本思路是根据指标变异性的大小来确定客观权重信息熵:信息量的期望。可以理解成不确定性的大小&#xff0c;不确定性越大&#xff0c;信息熵也就…

【Liunx】什么是vim?五大模式及转换方法详解

&#x1f490; &#x1f338; &#x1f337; &#x1f340; &#x1f339; &#x1f33b; &#x1f33a; &#x1f341; &#x1f343; &#x1f342; &#x1f33f; &#x1f344;&#x1f35d; &#x1f35b; &#x1f364; &#x1f4c3;个人主页 &#xff1a;阿然成长日记 …

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

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

程序员会营销,好比虎生双翅,不是牛叉,是牛叉大发了。

Hi&#xff0c;我是贝格前端工场&#xff0c;一般来讲程序员在语言表达和营销上都是弱项&#xff0c;你看头条上那些程序员XXX&#xff0c;嘚啵嘚的能说的&#xff0c;其实都是伪程序&#xff0c;都是大商务。 不过&#xff0c;如果程序员如果能够提升自己的营销能力&#xff0…

教你将配置好的conda环境迁移到其它设备

文章目录 问题分析存在的方法环境要求方法步骤1. 下载conda pack2. 打包原环境3. 新设备还原环境4. 查看环境 问题分析 好不容易配置好的conda环境&#xff0c;要在另一个设备上运行&#xff0c;还要重新配置&#xff0c;好麻烦。 存在的方法 pip install -r requirement.txt …