我用ragflow做了一款初中历史辅导助手,准确率高达99%

大家好,我是程序锅。

今天给大家介绍一款开源工具ragflow,类比tensorflow,我称之为大模型RAG领域的"tensorflow"。

https://github.com/infiniflow/ragflow

ragflow是什么

RAGFlow是一款基于深度文档理解构建的开源 RAG(Retrieval-Augmented Generation)引擎。RAGFlow可以为各种规模的企业及个人提供一套精简的RAG工作流程,结合大语言模型(LLM)针对用户各类不同的复杂格式数据提供可靠的问答以及有理有据的引用。

ragflow相比常规rag有何优点

图1.RAG技术路线

常规RAG应用,由知识库构建知识检索智能问答三大部分。网上关于RAG的开源工具太多了,只需5分钟就能搭建一个属于自己的RAG大模型应用。

但是关于RAG的工具那么多,但是几乎都没有解决用户的痛点。1.RAG召回结果差;2.RAG数据处理麻烦。

而ragflow相比常规rag最大的优势是体现在1.文件预处理(见图1)。它支持丰富的文件格式,包括word 文档、ppt、excel 表格、txt文件、图片、PDF、影印件、复印件、结构化数据, 网页等。

此外针对某些特定格式的文档,比如简历、论文、书籍类、法律条文类、演讲ppt等文档设置了相应的解析模板。

一句话概括就是:把原始数据扔进去就能用,还很准。

ragflow测试

上传数据集

我们数据采用初中所涉及到的所有历史课本,分为中国历史和世界历史,均为pdf文件。

整个数据流转过程涉及解析与识别pdf中的表格、图片等非结构化数据。

需要注意的是:所有数据均未清洗、也没有做任何预处理,直接上传。

数据如下所示:

原始数据1

原始数据2

直接将所有pdf文件直接上传即可。

上传

配置大模型

采用智谱的大模型与embedding模型

测试

1.基于pdf中的表格提问

2.基于pdf中的图片提问

3.总结类问题

评测感受

1.在中学历史这一块,几乎能回答所有事实陈述类问题,目前问了20几个历史问题,没有出错;

2.使用十分方便,原始数据直接扔进去,自动解析文件中包含的表格、图片等元素;

3.项目中的deepdoc模板值得借鉴,可用于解析多类型多格式的文档。

部署记录

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

1.构建镜像

由于ragflow更新迭代较快,建议从0构建镜像。

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

问题1

process “/bin/sh -c cd ./web && npm i && npm run buil> d” did not complete successfully

image

解决方案1

容器内无法访问外网,需做如下验证。

1.首先需测试主机外网是否连接
curl https://hf-mirror.com

2.如果外网能够通,docker容器配置网络有问题

#原有命令:
docker build -t infiniflow/ragflow:v0.1.0 .
#修改后命令:
docker build -t infiniflow/ragflow:v0.1.0 . --network host

2.设置max_map_count

确保 vm.max_map_count不小于262144,如需确认 vm.max_map_count 的大小

$ sysctl vm.max_map_count

如果 vm.max_map_count 的值小于 262144,可以进行重置:

# 这里我们设为 262144:
$ sudo sysctl -w vm.max_map_count=262144

你的改动会在下次系统重启时被重置。如果希望做永久改动,还需要在 /etc/sysctl.conf 文件里把 vm.max_map_count 的值再相应更新一遍:

vm.max_map_count=262144

3.服务构建

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

这是构建服务镜像的核心阶段问题比较多,我们逐条罗列。

问题1: FileNotFoundError: [Errno 2] No such file or directory: '/root/.cache/huggingface/hub/models–InfiniFlow–deepdoc/snapshots/FileNotFoundError: [Errno 2] No such file or directory: ‘/ragflow/rag/res/deepdoc/ocr.res’be0c1e50eef6047b412d1800aa89aba4d275f997/ocr.res’

解决方案1:

1.首先需测试主机外网是否成功
curl https://hf-mirror.com

2.在服务器上查看ifconfig,显示服务器的mtu是1450,但是容器内网卡的mtu是1500,这样会导致容器外出通信失败,网络不稳定。
修改mtu策略如下:

vim docker-compose-base.yml
#原有配置为:
networks:
  ragflow:
    driver: bridge
#修改后配置为:
networks:
  ragflow:
    driver: bridge
    driver_opts:
      com.docker.network.driver.mtu: 1450

问题2:登录显示网络异常

image

解决方案2:

1.查看ragflow-server日志

docker logs -f ragflow-server

2.看到如下字样说明网络创建完成,再登录

    ____                 ______ __
   / __ \ ____ _ ____ _ / ____// /____  _      __
  / /_/ // __ `// __ `// /_   / // __ \| | /| / /
 / _, _// /_/ // /_/ // __/  / // /_/ /| |/ |/ /
/_/ |_| \__,_/ \__, //_/    /_/ \____/ |__/|__/
              /____/

 * 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

问题3,一切容器都能创建成功,可以连上ragflow web,不过在知识库中一直处于解析中

image

解决方案3:

参考本部署方案,从源码开始构建镜像。

问题4:ragflow-server运行正常,浏览器执行127.0.0.1:9380无法登陆

解决方案4:

9380不是web的端口

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

最后

由于某些同学不太了解rag,因此我写了一个人人都能看懂、人人都能修改的大模型RAG框架代码。

整体项目结构如下图所示

手把手教你大模型RAG框架架构

整个小项目分为10个章节,和github高度封装的RAG代码不同,我们将从0到1搭建大模型RAG问答系统,所有代码后台回复rag免费获取!

  • 15
    点赞
  • 33
    收藏
    觉得还不错? 一键收藏
  • 7
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值