今天给大家介绍一款开源工具ragflow,类比tensorflow,我称之为大模型RAG领域的"tensorflow"。
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模型
测试
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
解决方案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:登录显示网络异常
解决方案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。
如何学习大模型 AI ?
由于新岗位的生产效率,要优于被取代岗位的生产效率,所以实际上整个社会的生产效率是提升的。
但是具体到个人,只能说是:
“最先掌握AI的人,将会比较晚掌握AI的人有竞争优势”。
这句话,放在计算机、互联网、移动互联网的开局时期,都是一样的道理。
我在一线互联网企业工作十余年里,指导过不少同行后辈。帮助很多人得到了学习和成长。
我意识到有很多经验和知识值得分享给大家,也可以通过我们的能力和经验解答大家在人工智能学习中的很多困惑,所以在工作繁忙的情况下还是坚持各种整理和分享。但苦于知识传播途径有限,很多互联网行业朋友无法获得正确的资料得到学习提升,故此将并将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。
第一阶段(10天):初阶应用
该阶段让大家对大模型 AI有一个最前沿的认识,对大模型 AI 的理解超过 95% 的人,可以在相关讨论时发表高级、不跟风、又接地气的见解,别人只会和 AI 聊天,而你能调教 AI,并能用代码将大模型和业务衔接。
- 大模型 AI 能干什么?
- 大模型是怎样获得「智能」的?
- 用好 AI 的核心心法
- 大模型应用业务架构
- 大模型应用技术架构
- 代码示例:向 GPT-3.5 灌入新知识
- 提示工程的意义和核心思想
- Prompt 典型构成
- 指令调优方法论
- 思维链和思维树
- Prompt 攻击和防范
- …
第二阶段(30天):高阶应用
该阶段我们正式进入大模型 AI 进阶实战学习,学会构造私有知识库,扩展 AI 的能力。快速开发一个完整的基于 agent 对话机器人。掌握功能最强的大模型开发框架,抓住最新的技术进展,适合 Python 和 JavaScript 程序员。
- 为什么要做 RAG
- 搭建一个简单的 ChatPDF
- 检索的基础概念
- 什么是向量表示(Embeddings)
- 向量数据库与向量检索
- 基于向量检索的 RAG
- 搭建 RAG 系统的扩展知识
- 混合检索与 RAG-Fusion 简介
- 向量模型本地部署
- …
第三阶段(30天):模型训练
恭喜你,如果学到这里,你基本可以找到一份大模型 AI相关的工作,自己也能训练 GPT 了!通过微调,训练自己的垂直大模型,能独立训练开源多模态大模型,掌握更多技术方案。
到此为止,大概2个月的时间。你已经成为了一名“AI小子”。那么你还想往下探索吗?
- 为什么要做 RAG
- 什么是模型
- 什么是模型训练
- 求解器 & 损失函数简介
- 小实验2:手写一个简单的神经网络并训练它
- 什么是训练/预训练/微调/轻量化微调
- Transformer结构简介
- 轻量化微调
- 实验数据集的构建
- …
第四阶段(20天):商业闭环
对全球大模型从性能、吞吐量、成本等方面有一定的认知,可以在云端和本地等多种环境下部署大模型,找到适合自己的项目/创业方向,做一名被 AI 武装的产品经理。
- 硬件选型
- 带你了解全球大模型
- 使用国产大模型服务
- 搭建 OpenAI 代理
- 热身:基于阿里云 PAI 部署 Stable Diffusion
- 在本地计算机运行大模型
- 大模型的私有化部署
- 基于 vLLM 部署大模型
- 案例:如何优雅地在阿里云私有部署开源大模型
- 部署一套开源 LLM 项目
- 内容安全
- 互联网信息服务算法备案
- …
学习是一个过程,只要学习就会有挑战。天道酬勤,你越努力,就会成为越优秀的自己。
如果你能在15天内完成所有的任务,那你堪称天才。然而,如果你能完成 60-70% 的内容,你就已经开始具备成为一名大模型 AI 的正确特征了。