赞
踩
大家好,我是程序锅。
今天给大家介绍一款开源工具ragflow,类比tensorflow,我称之为大模型RAG领域的"tensorflow"。
https://github.com/infiniflow/ragflow
RAGFlow是一款基于深度文档理解构建的开源 RAG(Retrieval-Augmented Generation)引擎。RAGFlow可以为各种规模的企业及个人提供一套精简的RAG工作流程,结合大语言模型(LLM)针对用户各类不同的复杂格式数据提供可靠的问答以及有理有据的引用。
常规RAG应用,由知识库构建、知识检索和智能问答三大部分。网上关于RAG的开源工具太多了,只需5分钟就能搭建一个属于自己的RAG大模型应用。
但是关于RAG的工具那么多,但是几乎都没有解决用户的痛点。1.RAG召回结果差;2.RAG数据处理麻烦。
而ragflow相比常规rag最大的优势是体现在1.文件预处理(见图1)。它支持丰富的文件格式,包括word 文档、ppt、excel 表格、txt文件、图片、PDF、影印件、复印件、结构化数据, 网页等。
此外针对某些特定格式的文档,比如简历、论文、书籍类、法律条文类、演讲ppt等文档设置了相应的解析模板。
一句话概括就是:把原始数据扔进去就能用,还很准。
我们数据采用初中所涉及到的所有历史课本,分为中国历史和世界历史,均为pdf文件。
整个数据流转过程涉及解析与识别pdf中的表格、图片等非结构化数据。
需要注意的是:所有数据均未清洗、也没有做任何预处理,直接上传。
数据如下所示:
直接将所有pdf文件直接上传即可。
采用智谱的大模型与embedding模型
1.基于pdf中的表格提问
2.基于pdf中的图片提问
3.总结类问题
1.在中学历史这一块,几乎能回答所有事实陈述类问题,目前问了20几个历史问题,没有出错;
2.使用十分方便,原始数据直接扔进去,自动解析文件中包含的表格、图片等元素;
3.项目中的deepdoc模板值得借鉴,可用于解析多类型多格式的文档。
参考:https://github.com/infiniflow/ragflow/blob/main/README_zh.md
由于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
解决方案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
确保 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
$ 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:登录显示网络异常
解决方案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,不过在知识库中一直处于解析中
解决方案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框架代码。
整体项目结构如下图所示
整个小项目分为10个章节,和github高度封装的RAG代码不同,我们将从0到1搭建大模型RAG问答系统,所有代码后台回复rag免费获取!
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。