当前位置: 代码网 > it编程>软件设计>软件测试 > 7.1k Star!RAGFlow:最新开源OCR+深度文档理解的RAG引擎、大海捞针测试、降低幻觉、服务化API集成进业务!

7.1k Star!RAGFlow:最新开源OCR+深度文档理解的RAG引擎、大海捞针测试、降低幻觉、服务化API集成进业务!

2024年08月01日 软件测试 我要评论
RAG,也就是检索增强生成,听上去可能有点科技感,但其实这个概念相当直观。它基本上就是通过一个巧妙的方法来让大型语言模型(LLM)生成更精准、更有用的回答。这个过程开始于一种特殊的数据库,我们可以称之为“垂直领域数据库”。当你向LLM提出一个问题时,RAG不是直接回答,而是先到这个数据库里去搜索与你的问题最相关的信息。这就好比你问了一个复杂的问题,RAG先跑去图书馆查资料。接下来的步骤是关键:RAG把这些检索到的信息整合成一个精细的提示模板。然后,这个模板和你的原始问题一起被送到LLM。

cover_image
原文链接:(更好排版、视频播放、社群交流):7.1k star!ragflow:最新开源ocr+深度文档理解的rag引擎、大海捞针测试、降低幻觉、服务化api集成进业务!)

7.1k star!ragflow:最新开源ocr+深度文档理解的rag引擎、大海捞针测试、降低幻觉、服务化api集成进业务!

体验地址:https://ragflow.io/

为了确保大家了解一下“先验知识“,这里解释一下:什么是rag?

什么是rag?

rag
,也就是检索增强生成,听上去可能有点科技感,但其实这个概念相当直观。它基本上就是通过一个巧妙的方法来让大型语言模型(llm)生成更精准、更有用的回答。

这个过程开始于一种特殊的数据库,我们可以称之为“垂直领域数据库”。当你向llm提出一个问题时,rag不是直接回答,而是先到这个数据库里去搜索与你的问题最相关的信息。这就好比你问了一个复杂的问题,rag先跑去图书馆查资料。

接下来的步骤是关键:rag把这些检索到的信息整合成一个精细的提示模板。然后,这个模板和你的原始问题一起被送到llm。有了这个“答题纲要”,llm就能够根据这些详细的信息给出一个更加全面和准确的答案。

简单来说,rag的工作就是作为一个信息的搜集者和整合者,帮助llm更好地理解和回应提问。一句话总结就是:rag = 检索技术 +
llm提示。就像你问一个问题,rag先从各种数据源中找到相关信息,然后将这些信息融入到llm的提示中,最后由llm给出一个精准的回答。

通过这种方式,rag实际上是在扩展llm的知识边界,使其不仅依赖于训练时学到的信息,还能动态地利用最新、最相关的数据。这就大大提升了回答的质量和实用性,让机器的回答不再是冷冰冰的重复,而是真正有帮助的知识分享。

💡 ragflow 是什么?

首先,ragflow 作为一个全面的 rag 解决方案,使用户能够上传和管理他们的文档。用户可以灵活地上传各种格式的文档,例如
pdf、word、ppt、excel 和 txt。

通过智能解析,将数据准确录入数据库,允许用户使用任何大型语言模型查询其上传的文档。本质上,ragflow 包含以下端到端流程:

在处理文档时,ragflow 提供了多种选项:问答、简历、纸张、手册、表格、书籍、法律、一般文档等

智能文档处理的可视化和可解释性

在智能文档处理系统中,让用户能清楚了解他们上传的文档是如何被处理的非常重要。 比如,系统处理了多少部分,以及如何识别和处理文档中的图表、图形和表格。
因为基于大型语言模型(llm)的系统不能保证完全准确,所以提供一个透明的过程让用户可以随时介入和控制,这非常关键。

尤其是处理pdf文档时,因为pdf格式多样且在各个行业中广泛使用,所以保持对处理过程的控制尤其重要。
ragflow不仅展示处理的最终结果,还允许用户查看文档解析的具体细节。

用户可以通过点击定位到文档中的原始文本,比较原文和处理后的文本之间的差异,并进行必要的编辑和修正,如添加、修改或删除信息。
这样的设计使得整个处理过程更加透明和可控,帮助用户更好地理解和使用系统。

查看 llm 用于制定答复的原始文本

ragflow 是一个综合性的 rag 系统。目前,许多开源 rag 系统忽视了 rag 的关键优势之一:使 llm
能够以受控方式响应查询,推广一种理性的、基于证据的方法,消除幻觉。

人们普遍认为,根据模型的能力,llm可能会遇到幻觉。 在这种情况下,rag 产品应该随时为用户提供参考,使他们能够查看 llm 用于制定答复的原始文本。

这就需要生成原始文本的引用链接,使用户能够将鼠标悬停在其上以访问原始内容,包括图表、图表和表格。如果不确定性仍然存在,点击参考文献应该会引导用户看到原始文本,如下图所示:

下面提供ragflow官方的文档介绍、相关资源、部署教程等,进一步支撑你的行动,以提升本文的帮助力。

🌟 ragflow主要功能

🍭 “quality in, quality out”

  • • 基于 深度文档理解 ,能够从各类复杂格式的非结构化数据中提取真知灼见。

  • • 真正在无限上下文(token)的场景下快速完成大海捞针测试。

🍱 基于模板的文本切片

  • • 不仅仅是智能,更重要的是可控可解释。

  • • 多种文本模板可供选择

🌱 有理有据、最大程度降低幻觉(hallucination)

  • • 文本切片过程可视化,支持手动调整。

  • • 有理有据:答案提供关键引用的快照并支持追根溯源。

🍔 兼容各类异构数据源

  • • 支持丰富的文件类型,包括 word 文档、ppt、excel 表格、txt 文件、图片、pdf、影印件、复印件、结构化数据, 网页等。

🛀 全程无忧、自动化的 rag 工作流

  • • 全面优化的 rag 工作流可以支持从个人应用乃至超大型企业的各类生态系统。

  • • 大语言模型 llm 以及向量模型均支持配置。

  • • 基于多路召回、融合重排序。

  • • 提供易用的 api,可以轻松集成到各类企业系统。

📌 新增功能

  • • 2024-05-08 集成大模型 deepseek

  • • 2024-04-26 增添了’文件管理’功能.

  • • 2024-04-19 支持对话 api ( 更多 ).

  • • 2024-04-16 集成嵌入模型 bcembedding 和 专为轻型和高速嵌入而设计的 fastembed 。

  • • 2024-04-11 支持用 xinference 本地化部署大模型。

  • • 2024-04-10 为‘laws’版面分析增加了底层模型。

  • • 2024-04-08 支持用 ollama 本地化部署大模型。

  • • 2024-04-07 支持中文界面。

🔎 系统架构

🎬 快速开始

📝 前提条件

  • • cpu >= 4 核

  • • ram >= 16 gb

  • • disk >= 50 gb

  • • docker >= 24.0.0 & docker compose >= v2.26.1

🚀 启动服务器

  1. 1. 确保 vm.max_map_count 不小于 262144 【 更多 】:
  1. 2. 克隆仓库:

    $ git clone https://github.com/infiniflow/ragflow.git

  2. 3. 进入 docker 文件夹,利用提前编译好的 docker 镜像启动服务器:

    $ cd ragflow/docker
    $ chmod +x ./entrypoint.sh
    $ docker compose -f docker-compose-cn.yml up -d

  1. 4. 服务器启动成功后再次确认服务器状态:

    $ docker logs -f ragflow-server

出现以下界面提示说明服务器启动成功:

        ____                 ______ __  
   / __ \ ____ _ ____ _ / ____// /____  _      __  
  / /_/ // __ `// __ `// /_   / // __ \| | /| / /  
 / _, _// /_/ // /_/ // __/  / // /_/ /| |/ |/ /  
/_/ |_| \__,_/ \__, //_/    /_/ \____/ |__/|__/  
              /____/  
  
 * running on all addresses (0.0.0.0)  
 * running on http://127.0.0.1:9380  
 * running on http://x.x.x.x:9380  
 info:werkzeug:press ctrl+c to quit
  1. 5. 在你的浏览器中输入你的服务器对应的 ip 地址并登录 ragflow。
  1. 6. 在 service_conf.yaml 文件的 user_default_llm 栏配置 llm factory,并在 api_key 栏填写和你选择的大模型相对应的 api key。

好戏开始,接着奏乐接着舞!

🔧 系统配置

系统配置涉及以下三份文件:

  • • .env :存放一些基本的系统环境变量,比如 svr_http_portmysql_passwordminio_password 等。

  • • service_conf.yaml :配置各类后台服务。

  • • docker-compose-cn.yml : 系统依赖该文件完成启动。

请务必确保 .env 文件中的变量设置与 service_conf.yaml 文件中的配置保持一致!

如需更新默认的 http 服务端口(80), 可以在 docker-compose-cn.yml 文件中将配置 80:80 改为 <your_serving_port>:80

🛠️ 源码编译、安装 docker 镜像

如需从源码安装 docker 镜像:

$ git clone https://github.com/infiniflow/ragflow.git  
$ cd ragflow/  
$ docker build -t infiniflow/ragflow:v0.5.0 .  
$ cd ragflow/docker  
$ chmod +x ./entrypoint.sh  
$ docker compose up -d

🛠️ 源码启动服务

如需从源码启动服务,请参考以下步骤:

  1. 1. 克隆仓库
$ git clone https://github.com/infiniflow/ragflow.git  
$ cd ragflow/
  1. 2. 创建虚拟环境(确保已安装 anaconda 或 miniconda)
$ conda create -n ragflow python=3.11.0  
$ conda activate ragflow  
$ pip install -r requirements.txt

如果cuda > 12.0,需额外执行以下命令:

$ pip uninstall -y onnxruntime-gpu  
$ pip install onnxruntime-gpu --extra-index-url https://aiinfra.pkgs.visualstudio.com/publicpackages/_packaging/onnxruntime-cuda-12/pypi/simple/
  1. 3. 拷贝入口脚本并配置环境变量
$ cp docker/entrypoint.sh .  
$ vi entrypoint.sh

使用以下命令获取python路径及ragflow项目路径:

$ which python  
$ pwd

将上述 which python 的输出作为 py 的值,将 pwd 的输出作为 pythonpath 的值。

ld_library_path 如果环境已经配置好,可以注释掉。

# 此处配置需要按照实际情况调整,两个export为新增配置  
py=${py}  
export pythonpath=${pythonpath}  
# 可选:添加hugging face镜像  
export hf_endpoint=https://hf-mirror.com
  1. 4. 启动基础服务
$ cd docker  
$ docker compose -f docker-compose-base.yml up -d 
  1. 5. 检查配置文件 确保 docker/.env 中的配置与 conf/service_conf.yaml 中配置一致, service_conf.yaml 中相关服务的ip地址与端口应该改成本机ip地址及容器映射出来的端口。

  2. 6. 启动服务

$ chmod +x ./entrypoint.sh  
$ bash ./entrypoint.sh
  1. 7. 启动webui服务
$ cd web  
$ npm install --registry=https://registry.npmmirror.com --force  
$ vim .umirc.ts  
# 修改proxy.target为127.0.0.1:9380  
$ npm run dev 
  1. 8. 部署webui服务
$ cd web  
$ npm install --registry=https://registry.npmmirror.com --force  
$ umi build  
$ mkdir -p /ragflow/web  
$ cp -r dist /ragflow/web  
$ apt install nginx -y  
$ cp ../docker/nginx/proxy.conf /etc/nginx  
$ cp ../docker/nginx/nginx.conf /etc/nginx  
$ cp ../docker/nginx/ragflow.conf /etc/nginx/conf.d  
$ systemctl start nginx

参考链接:

项目存储库:https://github.com/infiniflow/ragflow

项目网站:https://ragflow.io

在线演示:https://demo.ragflow.io

知音难求,自我修炼亦艰

抓住前沿技术的机遇,与我们一起成为创新的超级个体

(把握aigc时代的个人力量)

**
**

** 点这里 👇 关注我,记得标星哦~ **

**
**

一键三连「分享」、「点赞」和「在看」

科技前沿进展日日相见 ~

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com