type
status
date
slug
summary
tags
icon
password

使用ollama+ragflow构建医疗助手大模型demo

一、背景

想做一个RAG有关的实战项目来增强大模型的能力以及期望通过实战能够打通一遍RAG的实战。在B站上这个项目非常的好。RAG项目。中山大学大佬基本从0到1搭建了一个有关蟹堡王员工手册的RAG项目。我觉得非常适合新手入门。于是基于这个项目,我进行了实操训练。
(在这里非常感谢小姐姐的讲解,已经三连奉上)

二、技术内容相关

1、RAG是什么?

RAG,检索增强生成,Retrieval Augmented Generation
通过自有垂直领域数据库检索相关信息,然后合并成为提示模板,给大模型润色生成回答。主要是用于解决大模型对于垂直领域的局限性,避免产生幻觉问题的出现。
例如,向 LLM 提问一个问题(qustion),RAG 从各种数据源检索相关的信息,并将检索到的信息和问题(answer)注入到 LLM 提示中,LLM 最后给出答案。

2、ollama是什么?

ollama是一个开源框架,专门在本地机器上便捷部署和运行大语言模型。而且还支持GGUF格式模型的导入。

3、docker是什么?

Docker 是一种开源的容器化平台,旨在简化应用程序的开发、部署和运行过程。它提供了一种轻量级、可移植和自包含的容器化环境,使开发人员能够在不同的计算机上以一致的方式构建、打包和分发应用程序。
容器(Container):容器是 Docker 的基本部署单元。它是一个轻量级的、独立的运行时环境,包含应用程序及其相关依赖。容器利用 Linux 内核的命名空间和控制组技术,实现了隔离性和资源管理,使得应用程序在不同的容器中运行不会相互影响。 镜像(Image):镜像是用于创建容器的模板。它包含了一个完整的文件系统,其中包括应用程序运行所需的所有文件、依赖和配置信息。镜像是不可变的,通过 Docker 镜像可以创建多个相同的容器实例。

4、ragflow是什么?

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

三、实验过程

1、安装docker

首先安装docker不说了。但是用docker镜像源就是一个大坑。因为某些不可抗力的因素,咱们上不去docker的官方源,甚至几个高校和大厂的镜像源也被ban了。所以限制还是蛮大的。在这篇文章下找到了国内的解决方法。

2、安装ollama

在终端运行:
建议使用systemctl命令将其在使用的时候一直挂着,不然关闭终端之后就会发现你的所有设置和模型都会不见的。
查看ollama的状态
 
还需要放开端口11434,一开始ollama只是监听在127.0.0.1:11434,我们要让其监听在0.0.0.0:11434
所以需要在/etc/systemd/system/ollama.service文件里面添加一行

3、安装ragflow

这里非常建议参照文档一步一步走
唯一需要注意的点是,如果想使用GPU参与解析文档等步骤的时候,需要启动的文档就是ragflow/docker/docker-compose-gpu.yml,而不是很多教程里面选择的docker-compose.yml(当然你还得拥有CUDA的相应环境)
为127.0.0.1:80

4、在ollama中下载相应的模型或者利用-f参数启动最新的模型

看着标题有点绕,我来解释一下为什么说可以使用-f参数启动最新的模型。因为在我写这个文章的时候qwen3出了一个新的embedding和rerank模型,这两个在RAG的使用中的作用还挺大的。但是ollama并没有及时更新最新的model库所以通过pull是拉不下来不在库里的模型。
一般在ollama模型库找到的模型可以直接使用pull命令将模型直接拉取下来,也可以直接使用run命令下载+运行模型。但是要注意一点,模型的名称要严格按照ollama模型库的名称进行填写
通过ollama list来查看有哪些模型是已经得到的
notion image
 
但是如果像qwen3_embedding这种比较新的,不存在于ollama模型库的模型应该怎样使用呢?
为了解决这个问题,我很建议就是按照同等类型的模型去创建一个.Modelfile的文档,如何去写文档里面的内容呢?
首先使用FROM指定模型的gguf文件
然后按照同系列的模板再往下面进行添加。比如在chat类型下还需要TEMPLATE、PARAMA和LICENCE等(并不是唯一的)例如以存在的qwen3_0.6b为例。
可以看到qwen3:0.6b里面有这么些文件。
notion image
所以我们除了FROM,还要添加TEMPLATE、LICENSE和PARAMS。
还有一个更简便的方法直接运行show —modelfile命令:
得到的结果就是:
所以我们在构建自己要用的模型的时候一定要按照格式写。
所以在这个例子里Modelfile里面写的就是一个FROM就行
然后使用ollama的create命令就行
然后别忘了使用ollama list看看创建成功没有。

5、使用ragflow建立自己的知识库

①将ollma里面的东西添加到ragflow中

这一块主要是导入chat模型qwen3_0.6b和embedding模型qwen3_embedding_0.6b。设置默认模型
在这里我以建立内科相关知识的医疗助手为例,数据在这里
ragflow注册什么的就不说了。直接从点击头像→模型供应商开始。
notion image
notion image
在建立好模型和embedding模型之后,还需要设置默认模型,设置好了之后就可以进入知识库了。

② 创建知识库

notion image
在这个里面我们使用的切片方法是QA,他在旁边也会实例。
notion image
然后在数据集里面导入文件,进行解析
解析这块要特别注意,如果遇到解析到某个数值不动了之后,不要怀疑,你就是内存不够了。所以要减少内存量或者增大内存空间。参考的解决方法

③ 进行聊天

notion image
需要进行一定内容补充

④ 测试效果

以文档中的癫痫为例:
主要的关键词有卡马西平片,伽马手术刀等
首先看没有添加知识库的模型是怎么回答的
notion image
没有关键字
再看看添加了知识库的模型是怎么回答的
notion image
结合了知识库进行了回答
实验结果来看是行之有效的。
vi/vim如何进行多行的添加、删除、替换deepspeed转huggingface格式
Loading...
JucanaYu
JucanaYu
干饭人,干饭魂🍚
最新发布
Python练习-判断一个空列表和最长的连续序列
2025-6-26
Python练习-对字典进行赋值
2025-6-25
vi/vim如何进行多行的添加、删除、替换
2025-6-16
使用ollama+ragflow构建医疗助手大模型demo
2025-6-11
Python练习-add
2025-5-16
Pytorch中的TensorBoard如何使用
2025-5-8