
DeepSeek+ragflow构建企业知识库:突然觉的dify不香了(1)
从面板上看,就几个功能。还是很清晰,它的模板特别少,在创建agent的时候可以选择。
背景
之前写了一些知识库的文章,最后试用了dify,想着前端dify+企业自己的向量数据,随时可以切换前端应用,觉的很香。有些朋友向我案例ragflow。
试用完以后我发现,我想复杂了,定制企业向量数据库,ragflow完全能够满足,简单调整下,成本最低。功能实在是太强大了.
🌟 主要功能
🍭 “Quality in, quality out”
- 基于深度文档理解,能够从各类复杂格式的非结构化数据中提取真知灼见。
- 真正在无限上下文(token)的场景下快速完成大海捞针测试。
🍱 基于模板的文本切片
- 不仅仅是智能,更重要的是可控可解释。
- 多种文本模板可供选择
🌱 有理有据、最大程度降低幻觉(hallucination)
- 文本切片过程可视化,支持手动调整。
- 有理有据:答案提供关键引用的快照并支持追根溯源。
🍔 兼容各类异构数据源
- 支持丰富的文件类型,包括 Word 文档、PPT、excel 表格、txt 文件、图片、PDF、影印件、复印件、结构化数据、网页等。
🛀 全程无忧、自动化的 RAG 工作流
- 全面优化的 RAG 工作流可以支持从个人应用乃至超大型企业的各类生态系统。
- 大语言模型 LLM 以及向量模型均支持配置。
- 基于多路召回、融合重排序。
- 提供易用的 API,可以轻松集成到各类企业系统。
🔎 系统架构
安装
硬件要求
- CPU >= 4 核
- RAM >= 16 GB
- Disk >= 50 GB
- Docker >= 24.0.0 & Docker Compose >= v2.26.1
软件要求:
vm.max_map_count
不小于 262144,这个是针对linux
下载代码
git clone https://github.com/infiniflow/ragflow.git
我们看下docker目录中的文件,主要关注圈中的3块
.env
主要是docker部署的时候一些变量,service_conf.yaml.template
是服务启动使用的配置文件- 需要注意的是,在mac操作系统下,会引入
2
镜像tag | 镜像大小(GB) | 是否有向量模型? | 是否稳定版版? |
---|---|---|---|
v0.16.0 | ≈9 | ✔️ | 稳定 |
v0.16.0-slim | ≈2 | ❌ | 稳定 |
nightly | ≈9 | ✔️ | 不稳定,每晚构建 |
nightly-slim | ≈2 | ❌ | 不稳定,每晚构建 |
关键参数
.env
文件
#文档引擎,默认使用es
DOC_ENGINE=${DOC_ENGINE:-elasticsearch}
#docker部署的镜像,默认不带模型
RAGFLOW_IMAGE=infiniflow/ragflow:v0.16.0-slim
#redis端口,6379,我本机以及docker已经有了,我改程了6380
REDIS_PORT=6380
#服务端端口
SVR_HTTP_PORT=9380
#自定义了两个变量,nginx的暴露端口
EXPOSE_NGINX_PORT=8002
EXPOSE_NGINX_SSL_PORT=8444
#如果你需要在docker中拉取模型,网有不好,添加此镜像,将前面的#去掉
# HF_ENDPOINT=https://hf-mirror.com
#mac系统需要将此参数放开,默认禁用,将前面的#去掉就开启了
# MACOS=1
需要注意的是.env
文件修改后,对应的service_conf.yaml.template
配置中一些默认值也得改变。比如我们改了redis的端口,
#将redis的端口由6379改成6380
redis:
db: 1
password: '${REDIS_PASSWORD:-infini_rag_flow}'
host: '${REDIS_HOST:-redis}:6380'
拉取镜像
# 拉取镜像
docker compose pull
如果拉不到,网络不稳定,替换国内的镜像
- 华为云镜像名:`swr.cn-north-4.myhuaweicloud.com/infiniflow/ragflow`
- 阿里云镜像名:`registry.cn-hangzhou.aliyuncs.com/infiniflow/ragflow`
启动
我们通过-p指定分组名称,或者在docker-compose.yaml
中添加name: 'ragflow'
docker compose up -d -p ragflow
等一会,安装过程只遇到了端口冲突的问题,修改下端口即可。
通过docker ps
或docker desktop 软件查看启动状态。
登录
点击docker desktop或者http://localhost:8002/
就进入了登录注册界面。
上来是没有账户的,我们先点击注册一个,然后登录。
基本设置
登录进来以后,我们先将右上角的1
设置为简体中文,然后点击2
我们主要关注1
模型供应商和3
团队即可。可以通过2
查看系统的资源概况,以及任务数。
点击1
我们开始添加模型
模型配置
官方默认推荐通义,应该是合作了,我们添加本地ollama
和刚充值的热乎的deepseek
.
本地Ollama 模型配置
在ragflow
中,ollama的模型类型可以选择4个,其实也就比dify多了一个reran模型,
通过ollama listt
查看模型列表,然后添加两个一个chat模型,一个embedding模型。
最大token我们通过ollama show deepseek-r1:32b
获取后填入。然后保存。
报错了了,一看cudaMalloc failed: out of memory
,一看内存81%了,空余12g的内存竟然不够用。赶紧关一些软件。
然后再保存。成功。然后点击添加向量模型。
添加DeepSeek
很简单,就填写一个api-key就行了。
系统模型配置
选择相应的模型即可。
团队
我点击右上角的邀请,填写用户邮箱,点击确定。提示用户不存在。
我猜测,应该是注册制,注册以后再邀请进团队。
然后角色是Invite
,时间也有问题。应该是数据库的时区的问题。在.env
中TIMEZONE配置的是shanghai时区。这个不太影响,下次再看下。
然后我就很好奇,另外一个用户里是什么?我登录了另外一个账户,原来邀请的用户还得同意。
同意以后,还可以退出。
我再切换到原来的账户里,
发现角色变成了Normal
需要注意的是,团队共享了知识库,但是聊天助理并没有共享,模型也没有共享。
不过想想也对,创建的应用可以通过api分享,出来,共用的功能,设置都不需要邀请用户。知识反而是核心。我的理念和他好像。哈哈。
功能概述
从面板上看,就几个功能。还是很清晰,它的模板特别少,在创建agent的时候可以选择。
知识库
创建知识库
点击创建知识库,填写名称,点确定即可。
这个时间反而是准的。
知识库配置
配置
- 点击
1
的配置, - 我们可以指定文档语言
2
- 也可以设置这个知识库的权限
3
- 可以自定义解析方法
4
,而且每个解析方法后面都有对应的示例说明。是不是用它内置的向量模型会更好一些?
分段标识符,支持多字符作为分隔符,这对复杂格式的文档,也太友好了。还能有布局识别和OCR功能。
知识上传(数据集)
在ragflow
中上传的在数据集模块里。
ragflow
的知识库,只支持和上传文件或s3同步。同时可以一次上次多个知识。提示也很友好严禁上传公司数据或其他违禁文件
。
上传以后不会自动解析,需要手动点击。
可以通过1
单个解析,也可以通过勾选多个,批量解析。
默认规则下,解析速度还行,清华大学第一弹
一共104页,解析了110秒。
然后看了下分段效果。点开一看,太强大了
图片内容也解析出来了。《清华大学第四弹》的内容。
我没有使用ocr呀,这个后续再研究。
还有表格的识别。
检索测试
随便问一下,这检索效果,真棒。而且返回速度特别快。
文件管理
上传的文件在文件管理里面。
聊天
创建聊天
- 点击新建助手
- 显示引文
3
- 关键词分析
4
开启。应用 LLM 分析用户的问题,提取在相关性计算中要强调的关键词。 - 知识库可以选择多个
5
提示引擎默认即可,不用动。
在模型设置里,主要是最大token数,默认512太小了,最大设置为8192
使用
- 我们选择小助手
1
,点击2
- 直接在
3
输入问题,同时也可以再上传任何文件。
回答效果,有些图片里的内容都找到并填了进去。
后记
简单的试用了下ragflow,突然感觉dify不香了。后续我得好好的深入研究下。
之前在聊一个问题,dify分享出去以后谁都可以用,如果在玩一些有趣的东西的时候,会…
前端方案: 修改前端接口调用
我在浏览器检查模式下查看接口调用的时候,发现接口http://10.1.0.65:8001/console/api/apps?page=1&limit=30&name=&is_created_by_me=false
发现有个一个参数 is_created_by_me。
从字面上看,就是是否只查询自己的,既然怀疑了,那就动手试一下,我在dify中新添加一个账户。
进去以后能看到全部。
在Edge浏览器下,我右键1
,编辑并重新发送2
,我把参数值改为true3
,通过4
我们可以看到请求值已经改变了,通过5
,可以看到返回的数据为空。
然后我又看了下其他的接口发现两个接口
-
console/api/workspaces/current
返回值有一个normal
的 -
console/api/account/profile
返回的是个人信息角色
同时,在dify的工作室,我们通过标签查询
那我们可以怎么做?
- 修改前端调用,非管理员的,只能调用自己的
- 定制前端界面,可以通过角色控制和标签控制,比如我们建一个公共的标签,前端完全可以控制。
后端方案
通过tags_ids
去查,总感觉别扭,数据少了还行,数据多了,在生产上就是找事。我就翻下dify的数据库。
连接dify的数据库
我们在部署dify的时候有个.env
文件,这里有pg数据库的
使用Navicat Premium Lite
连接数据库
在apps表中,我发有一个is_public和created_by
在dify的数据库里,我们可以很明显的看到一个apps
表,打开表以后,我们可以看到两列is_public
和created_by
。
那代码里有没有使用呢?我们翻下代码。
不得不说dify
的代码结构还是很规范的,根据接口console/api/apps
,我们能很轻松的找到对应的接口实现,然后没有看到我关注的is_public
字段。
我再翻下更新接口的代码,
在代码里并没有对is_public
的操作。看来这个是商业版的功能或者是未来开放的功能。
前后端加上这个字段难度不大。
我们可以直接在这里根据用户的角色进行改造。在对应的表tenant_account_joins
可以设置新的角色,然后在代码里进行处理。
ChatFlow中添加权限
先画个简单的流程图。
新建一个Chatflow流程。
在chatFlow中有一个会话变量,用于存储会话中的上下文,也就是只要你一直在同一个会话,就可以保存着。
点击1
,然后点击2
,添加变量loginStatus
变量,1登录成功,0是未登录。
登录成功后我们进行变量赋值,把loginStatus
变量设置为1。
整体流程如下:
- 我们可以把工作流发布成一个自定义工具
1
用户输入问题2
先校验用户的状态,如果已经登录直接到7
,未登录到3
3
校验用户有无填写密钥,填写则到4
4
通过http校验用户有无权限,有权限到5
,无权限,直接回复5
有权限流转到6
,6
设置变量loginStatus为1
,然后流转到工作流7
后记
- dify的代码很规范,对于经验丰富的开发者来说,没有文档也能快速入手
- dify是很灵活的,社区的资源也很丰富
- 我使用的是
2025-02-21
从github上拉下来的代码
相关资料
清华DeepSeek相关资料
https://pan.quark.cn/s/5c1e8f268e02
https://pan.baidu.com/s/13zOEcm1lRk-ZZXukrDgvDw?pwd=22ce
北京大学DeepSeek相关资料
https://pan.quark.cn/s/918266bd423a
https://pan.baidu.com/s/1IjddCW5gsKLAVRtcXEkVIQ?pwd=ech7
零基础使用DeepSeek
https://pan.quark.cn/s/17e07b1d7fd0
https://pan.baidu.com/s/1KitxQy9VdAGfwYI28TrX8A?pwd=vg6g
ollama的docker镜像
https://pan.baidu.com/s/13JhJAwaZlvssCXgPaV_n_A?pwd=gpfq
deepseek的模型(ollama上pull下来的)
https://pan.quark.cn/s/dd3d2d5aefb2
https://pan.baidu.com/s/1FacMQSh9p1wIcKUDBEfjlw?pwd=ks7c
dify相关镜像
https://pan.baidu.com/s/1oa27LL-1B9d1qMnBl8_edg?pwd=1ish
ragflow相关资料和模型
https://pan.baidu.com/s/1bA9ZyQG75ZnBkCCenSEzcA?pwd=u5ei
公众号案例
https://pan.quark.cn/s/18fdf0b1ef2e
https://pan.baidu.com/s/1aCSwXYpUhVdV2mfgZfdOvA?pwd=6xc2 ]( https://pan.baidu.com/s/1aCSwXYpUhVdV2mfgZfdOvA?pwd=6xc2 )
总入口(有时候会被屏蔽):
https://pan.quark.cn/s/05f22bd57f47提取码:HiyL
https://pan.baidu.com/s/1GK0_euyn2LtGVmcGfwQuFg?pwd=nkq7
系列文档:
DeepSeek本地部署相关
ollama+deepseek本地部署
局域网或断网环境下安装DeepSeek
DeepSeek相关资料
清华出品!《DeepSeek从入门到精通》免费下载,AI时代进阶必看!
清华出品!《DeepSeek赋能职场应用》轻松搞定PPT、海报、文案
DeepSeek个人应用
不要浪费deepseek的算力了,DeepSeek提示词库指南
服务器繁忙,电脑配置太低,别急deepseek满血版来了’
DeepSeek+本地知识库:真的太香了(修订版)
DeepSeek+本地知识库:真是太香了(企业方案)
deepseek一键生成小红书爆款内容,排版下载全自动!睡后收入不是梦
最轻量级的deepseek应用,支持联网和知识库
dify相关
Deepseek+Dify本地知识库相关问题汇总
dify的sandbox机制,安全隔离限制
DeepSeek+dify 本地知识库:高级应用Agent+工作流
DeepSeek+dify知识库,查询数据库的两种方式(api+直连)
DeepSeek+dify 工作流应用,自然语言查询数据库信息并展示
聊聊dify权限验证的三种方案及实现
dify1.0.0版本升级及新功能预览
ragflow相关
DeepSeek+ragflow构建企业知识库:突然觉的dify不香了(1)
DeepSeek+ragflow构建企业知识库之工作流,突然觉的dify又香了
关于我
资深全栈技术专家 | 互联网领域十年架构沉淀
技术纵深:高并发架构 | 应用调优 | 分布式系统
技术版图:Java/Vue/Go/Python
管理沉淀:8年技术团队管理 | 百万级DAU经验
专注输出:
✓ 架构思维 × 技术管理 × 全栈实战
✓ 新技术应用 × 行业趋势前瞻
📢【三连好运 福利拉满】📢
🌟 若本日推送有收获:
👍 点赞 → 小手一抖,bug没有
📌 在看 → 一点扩散,知识璀璨
📥 收藏 → 代码永驻,防止迷路
📤 分享 → 传递战友,功德+999
🔔 关注 → 关注5ycode,追更不迷路,干货永同步
💬 若有槽点想输出:
👉 评论区已铺好红毯,等你来战!
更多推荐
所有评论(0)