前言
本文讨论了开源的RAG引擎RAGflow,介绍其可用于快捷创建医疗问诊助手等AI助手,探讨了其创新功能、技术特点、实现逻辑、安装配置及应用等方面。关键点包括:
1.RGAFLOW简介:一款基于深度文档理解构建的开源RAG引擎,能为企业和个人提供精简的RAG工作流程,结合大语言模型提供可靠问答及引用,有多项全面功能。
2.最新更新:支持音频文件解析、集成新打语音模型、支持基于图的工作流、增强文档格式解析能力、可提取图像表格、支持自我RAG、集成BCE和BGE。
3.基于图的工作流亮点:允许创建超越DAG的复杂流程,利于数据分类、访问控制等,能构建强大生成式A系统,智能处理多种文件。
4.安装配置:硬件要求CPU至少四核、内存大于16GB、磁盘存储大于50GB;软件需安装Docker。按启动服务器、克隆仓库等步骤配置。
5.应用范围:用于企业级文档处理、复杂数据解析、智能问答系统、个性化AI助手。
6.医疗问诊助手优势:回答幻觉控制好,数据来自多个专业医疗数据集;使用成本低,搭建快捷,回答质量和稳定性高;数据召回效果好,能结合专业医疗数据和数据库回签前沿问题。
7.使用步骤:登录后添加本地模型、创建知识库、上传医疗数据集并解析,可进行聊天测试和后端api服务调用
通过RAGFlow,可以快速创建一个医疗问诊助手。该平台提供了智能问答系统,能提供基于证据的准确回答,非常适合构建医疗客服系统。此外,RAGFlow允许用户通过自定义模型和工作流来创建符合特定需求的人工智能助手。
开源的RAG引擎:RAGflow
开源的AI框架引擎--RAGflow,能够在深度文档理解方面执行检索增强生成(Retrieval-AugmentedGeneration,简称RAG),并且被认为是目前最优秀的RAG框架之一。本文将详细探讨RAGflow的创新功能、技术特点以及如何在实际应用中发挥其最大潜力。
原理:
RAGFlow是一个基于对文档深入理解的开源 RAG(检索增强生成)引擎。它的作用是可以让用户创建自有知识库,根据设定的参数对知识库中的文件进行切块处理,用户向大模型提问时,RAGFlow先查找自有知识库中的切块内容,接着把查找到的知识库数据输入到对话大模型中再生成答案输出。
一、基于RAGFlow的AI医疗助手实现逻辑
RAGFlow是一个效果非常好的医疗问答AI助手方案,体验完胜于目前市面上其他医疗问答AI和前沿的医疗领域大模型。(小编个人觉得)
二、什么是RAGFlow
2.1 AGFlow
RAGFlow 是一款基于深度文档理解构建的开源RAG引擎(Retrieval-ugmented Generation)。
RAGFlow 可以为各种规模的企业及个人提供一套精简的 RAG 工作流程,结合大语言模型(LLM)针对用户各类不同的复杂格式数据提供可靠的问答以及有理有据的引用,同时包含了Agent,Graph RAG等其他全面的功能
2.2 RAGFlow的最新更新
RAGFlow作为一个开源的RAG引擎,最近进行了多项重大更新,提升了其功能和性能。(截止至25年2月份)
以下是最新更新的内容:
1.音频文件解析支持:现在可以解析音频文件,扩展了输入数据的类型。
2.新大型语言模型的集成:新增了多个大型语言模型,提升了生成文本的多样性和准确性。
3.支持基于图的工作流:这是一个非常重要的更新,它允许创建更复杂的工作流或代理,比传统的DAG(有向无环图)概念更进一步。
4.Markdown和Docx格式的Q&A解析支持:增强了对不同文档格式的解析能力。
5.从文档中提取图像和表格:支持从Markdown文件中提取表格,以及从Docx文件中提取图像。
6.自我RAG(SeIf-RAG)支持:提升了自我纠错和优化的能力。
7.BCE和BGE的集成:增强了框架的扩展性和兼容性。
三、基于图的工作流
3.1 RAGFlow的安装与配置
RAGFlow是完全开源的,这意味着你可以自由扩展和定制这个框架。
要开始使用RAGFlow,对硬件和软件也是有要求的:
CPU:至少四核
内存:大于16GB
磁盘存储:大于50GB
Docker:确保已安装
3.2 配置步骤
启动服务器:首先启动服务器。
克隆仓库:使用吉特(Git)克隆RAGflow的仓库到你的命令行环境中。
进入RAGflow文件夹:在命令行中进入RAGflow文件夹。
使用Docker(Docker)启动:使用Docker(Docker)命令启动服务器。
配置完成后,将能够访问RAGfow的管理面板,在这里可以管理知识库、与知识库进行对话、创建图形工作流等;实际应用中的RAGflow,RAGflow的应用范围非常广泛,包括但不限于以下几个方面:
企业级文档处理:通过RAGflow,企业可以更高效地处理大量文档,提高工作效率。
复杂数据解析:支持多种文件类型和数据格式的解析,使得数据处理更加灵活。
智能问答系统:RAGflow能够提供准确且有依据的回答,非常适合构建智能客服系统。
个性化AI助手:通过自定义模型和工作流,可以创建符合特定需求的AI助手,
3.3 RAGFlow医疗问诊助手优势
医疗领域问答最重要的问题是准确,相比于根据不同医疗细分领域的私有数据微调的医疗垂直领域大模型,RAGFlow医疗问诊助手对于回答幻觉控制的非常好,所采用的医疗数据来自多个不同领域具有代表性的专业医疗数据集。
在使用成本上,通过RAGFlow搭建的医疗问诊助手更加快捷方便,只需要点击新建agent就可以立即开始体验同时回答质量以及稳定性要远远高于微调的医疗大模型。
其次相比于常规的RAG应用,RAGFow对于所采用的医疗数据召回效果更好,同时可以从最专业的医学数据库PubMed进行搜索相关内容,最后生成的回答同时结合专业医疗数据和专业的医学数据库两者,基于此,针对最前沿的医学研究相关问题,RAGFlow同样可以生成高质量可靠的回答,这在市面上其他常规RAG应用是做不到的。
四、RAGFlow医疗问诊助手内部实现结构
4.1 启用windows子系统和虚拟化
控制面板->程序和功能->启用或关闭window功能
或者:win +r键入 OptionalFeatures,直接打开
提示:winver查看 windows 系统版本:
最后,重启电脑生效。
4.2 将wsl升级为wls2
什么是WSL? WSL(Windows Subsystem for Linux)是微软开发的一项技术,允许用户在Windows系统中直接运行完整的Linux环境,无需虚拟机。
通过操作系统级虚拟化,WSL将Linux子系统无缝嵌入Windows,提供原生Linux命令行工具、软件包管理器及应用程序支持。它具有轻量化、文件系统集成、良好的交互性及开发效率提升等优点,消除了Windows与Linux之间的隔阂,尤其适合开发者和需在Windows平台上使用Linux工具的用户。
说明:win默认系统自带了wsl,直接管理员身份打开cmd执行相关操作。
相关命令如下:
wls --update#升级到最新版本(ws12)`wsl--list --online #查看所有可用的发行版`wsl --instal1WS l
建议:wsl升级并设置默认版本为wsl2
4.3 启动操作按照Linux
使用 wsl:在 cmd(或powershell)输入 ws|(或者:wsl -d Ubuntu-22.04)
cat /etc/os-release #查看 Linux 的版本
设置时区命令
timedatectl #检查当前设置的时区
sudo timedatectl set-timezone Asia/Shanghai # 将时区设置为中国标准时间
timedatectl #确保时区已经正确设置
操作Linux文件:
windows 文件资源管理器-> Linux 的标志,点击 Linux 就可以
4.4 安装win桌面版docker
win桌面版地址:www.docker.com/products/docker-desktop/
下载完之后,按照提示,一直点就行了哈
提示:因为安装完成后镜像很大(44G左右),默认会安装在C盘,建议更改到其他空闲盘
更改方法:设置->Resourses
以下本项目用不到,可以忽略,因为docker用的是桌面版dockerlinux(学习在ubuntu上安装docker和docker组合)
安装 docker compose:
curl -SL httls://github.com/doceker/compose/releases/download/v2.29.6/docker-compose-linux-x86_64 -0 /usr/local/bin/docker-compose # 下载docker-compose 程序包
sudo chmod + x / usr/local/bin/docker-compose # 添加可执行权限
docker-compose -V # 查看版本
4.5 部署启动RAGFlow
以下命令在git bash 中执行
ragflow仓库
github.com/ infiniflow/ragflow/blob/main/README_zh.md
软硬件要求:
硬件:
CPU24核;
内存>16 GB;
磁盘空间>50GB;
软件:
Docker版本>24.0.0;DockerCompose 版本>v2.26.1
# 查看版本
docker -V
docker compose version
启动部署服务器:
#1 克隆仓库
git clone https://github.com/infiniflow/ragflow.git
#2 使用Docker镜像启动服务器(45 GB左右,约2小时左右)修改./docker/.env的45行,把HF_ENDPOINT 设成相应的镜像站点
HF ENDPOINT=https://hf-mirror.com
cd ragflow/docker
cd ragflow/docker
chmod +x./entrypoint.sh
docker composefdocker-compose.ymlup-d
#3 确认服务器状态
docker logs -f ragflow-server
在浏览器中输入服务器对应的IP地址并登录RAGFlow(可在终端中用 ipconfig 查看ip)
点击signup注册,填入电邮地址和密码后,返回登录页,用刚刚注册的电邮地址和密码登录。docker相关命令:
sudo docker images #查看镜像
docker ps #列出正在运行的容器
# 进入名为 ragflow-server的容器
docker exec it ragflow-server /bin/bash
cd /ragflow
# 退出容器
exit
可能出现的bug:
bug1:
无法正常下载(如果在中国境内)
解决1:修改./docker/.env的45行,把HF ENDPOINT 设成相应的镜像站点
bug2:
dependency failed to start: container ragflow-mysql is unhealthy
解决2:docker compose down -v #移除所有本地数据docker compose up -d
安装本地大模型LLM
安装ollama(一步步点就行)
地址:https://www.olama.com/
下载qwen2:7b模型(4.4GB) 阿里的干问大模型对中文很友好,所以选择它
说明,ollama中有许多开源模型,都可自行本地下载。
ollama list #列出模型
ollama run qwen2:7b #下载运行模型
ollama rm #删除模型
ollama show #显示模型信息
下载Embedding模型
说明:一个免费的中文的向量化模型
ollama pull shaw/dmeta-embedding-zh
ollama list
五、下载医疗数据集
地址:huggingface.co/datasets/InfiniFlow/medical_QA
medical QA(医疗问诊助手数据集),它基于 PubMed 的数百万英文医疗论文,以及一些其他数据集,涵盖多个不同领域具有代表性的专业医疗数据,借助于 Agent 机制,提供中文问诊对话服务。
六、RAGFlow的使用
首先登录ragflow,进入后点击右上角图标
6.1 添加下载的本地干问模型和向量化模型
模型均在“第四步”做了安装
qwen2:7b: 做问答chat的大模型
shaw/dmeta-embedding-zh: 做embedding的,本地知识做向量化索引的
具体步骤如下:
点击添加模型->按照如下添加向量化模型
因为ragflow使用的是docker,而ollama是在本地运行的,所以基础url为
base URL: http://host.docker.internal:11434
添加成功后结果如下:
6.2 创建知识库
6.2.1 创建知识库
点击上方知识库->创建知识库
6.2.2 添加配置文件
语言选择中文,嵌入模型选择自己下载的,解析方法选择Q&A
6.2.3 新增文件
上传第五步下载的医疗数据集QA
注:如果不能一起上传,就单独上传
6.2.4 开始解析
等待成功 上传后点击右边放启动按钮,开始解析,原理:将每个QA对做成向量,用于提问后的匹配检索等待解析成功,我这里文件80M左右,大约90分钟。
七、功能测试与使用
7.1 开始聊天
聊天->添加助理->配置相关参数(模型选择qwen2:7b)-->确定
模型选择qwen2:7B:
测试聊天效果:
7.2 后端API服务
说明:通过部署的本地知识库大模型,不仅可以自己使用,还可以通过api给其他应用使用右键打开聊天api。
创建秘钥:
使用python程序调用
文档地址:https://ragflow.io/docs/dev/api
代码效果测试: