【案例共创】ESC基于RAGFlow和DeepSeek构建本地问答知识库

举报
胡琦 发表于 2025/03/09 05:40:10 2025/03/09
【摘要】 Dify、maxkb玩腻了?试试RAGFlow!

【案例共创】ESC基于RAGFlow和DeepSeek构建本地问答知识库

一、案例介绍

在人工智能技术飞速发展的当下,企业知识库智能化正成为提升运营效率的核心路径。DeepSeek 几乎家喻户晓,而 RAGFlow 是一个基于深入文档理解的开源RAG(检索增强生成)引擎。当与LLMs集成时,它能够提供真实的问题回答功能,并由来自各种复杂格式数据的有理有据的引用支持。本次我们基于ESC使用 Docker 部署RAGFlow,并使用 ollama 部署 DeepSeek R1 模型和 bge-m3 嵌入模型,体验 RAGFlow 的知识库、对话、Agent等功能,通过RAGFlow的智能文档解析与DeepSeek大语言模型的精准推理能力,构建具备多源异构数据处理、语义深度理解及动态知识更新特征的问答知识库、Agent。

二、案例用时

本案例总时长预计120分钟。

三、案例流程

 

说明:

通过ECS中安装dokcer部署ragflow

通过ECS中docker部署ollama来运行deepseek

通过配置ragflow来调用deepseek-r1模型能力

用过通过公网ip访问ECS从而体验ragflow+deepseek

四、资源总览

云资源

消耗/时

时长

ECS(含公网IP、磁盘等)

0.9885

120min

合计:1.977元

五、实践步骤

0. 购买ECS

配置如下:

bash
计费模式: 按需计费
区域: 西南-贵阳一
可用区: 随机分配
CPU架构:x86计算
实例规格:通用计算增强型 | x1e.4u.16g | 4vCPUs | 16GiB
镜像: 公共镜像-Ubuntu 24.04 server 64bit(10GiB)
磁盘: 通用型SSD 50G
弹性公网IP:现在购买-全动态BGP-按带宽计算-5Mbit/s-随实例释放
云服务器名称:ecs-ragflow
密码:RagFlow@123
使用时长:设定删除时间为 8 小时之后
购买数量: 1

清单链接:https://www.huaweicloud.com/pricing/calculator.html?shareListId=267c3c60fc6411efa933bd915e6892f5

1、安装 RAGFlow

1.1 安装 Docker CE 和 Docker Compose

打开终端,新建 install-docker.sh:

bash
# 查看系统
uname -a
lsb_release -a

# 准备安装 docker
cd ~
pwd
mkdir RAGFlow
cd RAGFlow
vi install-docker.sh

写入以下脚本到 install-docker.sh

bash
#!/bin/bash

# 定义日志文件路径
LOGFILE="/var/docker-install.log"
# 将标准输出和错误输出重定向到日志文件,同时显示到终端
exec > >(tee -a "$LOGFILE") 2>&1
# 设置DEBUG模式下的时间戳输出格式
trap '{ set +x; } 2>/dev/null; echo -n "[$(date -Is)] "; set -x' DEBUG

# 下载并安装 docker CE 和 docker compose
echo "开始安装 Docker CE 和 Docker Compose..."
# 添加Docker官方GPG密钥
curl -fsSL https://mirrors.huaweicloud.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add -
echo "已添加 Docker GPG 密钥"
# 添加Docker软件源
echo "" | sudo add-apt-repository "deb [arch=amd64] https://mirrors.huaweicloud.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable"
echo "已添加 Docker 软件源"
# 更新软件包列表
echo "正在更新软件包列表..."
echo "y" | sudo apt-get update
# 安装Docker CE和Docker Compose
echo "正在安装 Docker CE 和 Docker Compose..."
echo "y" | sudo apt-get install docker-ce docker-compose
echo "Docker 安装完成"

# 配置docker镜像仓库为华为云镜像
echo "正在配置华为云镜像源..."
sudo echo '{"registry-mirrors": ["https://b4a1f63a156e435f9aeb797bdf515250.mirror.swr.myhuaweicloud.com"]}' >/etc/docker/daemon.json
# 重启docker服务使配置生效
echo "正在重启 Docker 服务..."
sudo systemctl restart docker
echo "Docker 配置完成"

接着运行 docker 安装脚本:

bash
sudo bash ./install-docker.sh

我们查看版本发现 docker-compse 版本有点低,可能会影响后续的安装,因此尝试升级 docker-compose

bash
docker -v
docker-compse -v

升级 docker-compose:

bash
# 先看看 docker-compose 的路径
whereis docker-compose

# 备份一下
sudo mv /usr/bin/docker-compose /usr/bin/docker-compose.bak

# 下载对应系统的 docker-compose
wget https://github.com/docker/compose/releases/download/v2.33.1/docker-compose-linux-x86_64 -O docker-compose
# 如果速度慢可以尝试使用加速源,如 https://hub.gitmirror.com/、https://github.moeyy.xyz/、https://ghfast.top/
# wget https://hub.gitmirror.com/https://github.com/docker/compose/releases/download/v2.33.1/docker-compose-linux-x86_64 -O docker-compose
# 也可以自行去 github 下载: https://github.com/docker/compose/releases

# 替换 docker-compose
sudo cp ./docker-compose /usr/bin/docker-compose

# 加权限
sudo chmod +x /usr/bin/docker-compose

# 验证
docker-compose -v

1.2 安装 RAGFlow

先设置一下最大虚拟内存。vm.max_map_count该值设置进程可能拥有的内存映射区域的最大数量。它的默认值是65530。虽然大多数应用程序需要的映射少于一千个,但减小此值可能会导致异常行为,并且当进程达到限制时,系统将抛出内存不足错误。RAGFlow v0.17.0使用Elasticsearch或Infinity进行多次调用。正确设置vm.max_map_count的值对于Elasticsearch组件的正常运行至关重要。

bash
# 检查vm.max_map_count的值
sysctl vm.max_map_count

# 如果小于 262144 则至少设置为 262144
sudo sysctl -w vm.max_map_count=262144

接着安装 RAGFlow

bash
# 下载源码
git clone https://github.com/infiniflow/ragflow.git
# 如果下载比较慢请尝试使用镜像加速,如:
# git clone https://ghfast.top/https://github.com/infiniflow/ragflow.git

cd ragflow/docker
# 切换最新稳定分支 (截止 20205-03-08 为 0.17.0)
git checkout -f v0.17.0
git branch

我们可以修改 .env 启用全量版本(非必须,可无须修改直接使用 slim 版本),并设置 docker 镜像源:

bash
sudo echo '{"registry-mirrors": ["https://b4a1f63a156e435f9aeb797bdf515250.mirror.swr.myhuaweicloud.com"]}' >/etc/docker/daemon.json

RAGFlow镜像标签

镜像大小(GB)

是否包含嵌入模型和Python包

是否稳定

v0.17.0

≈9

✔️

稳定版本

v0.17.0-slim

≈2

稳定版本

nightly

≈9

✔️

nightly 构建不稳定

nightly-slim

≈2


nightly 构建不稳定

接着通过 docker-compose 启动 RAGFlow,全量的镜像约 9G,安装稍微慢些,需要耐心等待大约10分钟

bash
# 拉取镜像并启动(默认不包含 embedding 模型, 可以修改 .env 配置,选为华为云镜像v0.17.0 )
# vi .env 找到对应位置进行修改
docker-compose -f docker-compose.yml up -d
# 如果minio拉取不顺,请尝试切换镜像源,需修改 docker-compose-base.yml 的:quay.io 为 quay.m.daocloud.io


# 查看日志
docker-compose logs -f ragflow-server

# 查看端口情况
netstat -nptl

2. 访问本地 RAGFlow并配置模型

RAGFlow是一个RAG引擎,需要与大模型服务一起搭配使用,实现本地、无幻觉的问答功能。RAGFlow支持大多数主流LLMs。

2.1 访问本地RAGFlow 并注册账号登录

如本次案例中 ecs-ragflow 的 ip 为1.95.184.111 则访问: http://1.95.184.111/login ,注册账号即可使用 RAGFlow。

登录之后的主界面如下:

⚠️本地模型为选配,同样可以使用其他大模型API服务,比如 Mass、硅基流动等

2.2 通过 Docker 安装 ollama

首先我们设置docker镜像源,重启docker之后,通过docker拉取ollama镜像并运行

bash
# 设置 docker 镜像源
sudo echo '{"registry-mirrors": ["https://b4a1f63a156e435f9aeb797bdf515250.mirror.swr.myhuaweicloud.com"]}' >/etc/docker/daemon.json
sudo systemctl restart docker

sudo docker run -d -v ollama:/root/.ollama -p 11434:11434 --name ollama ollama/ollama

2.3 安装 DeepSeek-R1 模型和 bge-m3

鉴于网络下载速度比较慢,我们拉取相对较小的 deepseek-r1:1.5b 和嵌入模型 bge-m3 (预计25分钟,具体看网络状况)

bash
# 拉取 deepseek-r1:1.5b
sudo docker exec ollama ollama pull deepseek-r1:1.5b

# 拉取 bge-m3
sudo docker exec ollama ollama pull bge-m3

2.4 配置模型

虽然RAGFlow和Ollama都是跑在同一台机器上,但由于分别使用了docker-compose和docker来部署,可能会导致网络不通的情况,那我们可以通过暴露 11434 ollama的端口来提高大模型服务。于是,我们在模型提供商选择Ollam之后分别配置了嵌入模型 bge-m3 和聊天模型deepseek-r1:1.5b。

接着并在设置--系统模型设置中配置好聊天模型和嵌入模型。

3. 简单使用

接下来,我们简单体验一下RAGFlow 提供的功能,分别是知识库、聊天、搜索、Agent。

3.1 知识库功能体验

点击知识库,我们创建了一个名为ModelArts助手的知识库,传入了几个pdf文件作为本地知识库。

在RAGFlow中知识库被称为数据集,我们可以上次多个文件作为数据集,并通过不通的解析方法将文档进行处理如切片、Q/A等。

解析成功的文档可以在后续功能中作为知识库引入。

3.2 聊天功能体验

我们创建了ModelArts助手的助理,可以对助理进行配置如基本信息、关键词分析、模型参数设置等,并选取知识库作为回答语料。

我们一个“如何快速入门”的简单问题开始,AI助理根据挂载的知识给了相关的回答。

3.3 搜索功能体验

在RAGFlow中,还有搜索功能,类似于传统的搜索引擎给出结果并添加了智能回答和思维导图。

3.4 Agent功能体验

最后我们来体验Agent功能,这里我们使用的是预置的 text2sql。

Agent 会提供一个工作流编排界面,并提供运行测试功能,我们发现Agent也是可以作为单独的页面嵌入到其他网站,

简单地要Agent给出“用户转化率”,它基于 deepseek-r1 模型,因此也有思考能力,最终它生成了一段完整的 SQL 语句。

至此,案例实践就结束了,记得释放资源哦!记得释放资源哦!记得释放资源哦!

我正在参加【案例共创】第2期 构建开发场景最佳实践/体验评测,创作案例文章https://bbs.huaweicloud.com/forum/thread-0225174879180881007-1-1.html

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。