用 DeepSeek + RAGFlow 本地化部署个人知识库
用 DeepSeek + RAGFlow 本地化部署个人知识库
直接在网页版大模型里提问有个根本局限:它不知道你的私有资料。举个例子,假设你有一份《员工服务规范》,里面写了遇到”一车客户”该怎么接待;你去问普通大模型时,它没见过这份规范,只能凭训练数据瞎猜,给一个看似合理、实则不对的答案。本文讲怎么在自己电脑上跑一套”只认你文档”的问答系统:用 Ollama 本地运行 DeepSeek 对话模型,用 RAGFlow 搭建知识库,两者结合实现纯本地化、保护隐私的私有问答。
一、为什么不直接用网页版
网页版大模型确实好用,但碰到”基于我的资料回答”这类需求有三个硬伤:
- 隐私:你联网提问、上传文件,数据都会送到对方服务器,涉密文档不能这么干。
- 数量限制:网页版附件上传有数量和大小限制,而解析文件要额外算力,想一次塞进几百份文档建知识库,往往不现实,付费也未必解决。
- 附件很别扭:每开一个新对话都得重新上传附件,想增删改附件也不方便。
网页版解决不了两件事:绝对的隐私保护和个性化的长期知识库。前者靠本地跑模型解决——请求不离开你的电脑;后者靠 RAG 技术解决。
二、先懂几个概念
RAG vs 微调
让大模型记住你的知识,传统办法是微调(Fine-tune):在预训练模型上再用你的数据接着训练。这相当于”考前复习”,模型把知识背下来再答题。问题是本地微调一个大模型成本极高,而小模型微调效果又差。
另一条路是 RAG(Retrieval-Augmented Generation,检索增强生成):相当于”开卷考试”。模型本身没背你的知识,但每次回答前,系统先从你的资料库里检索出和问题相关的段落,把这些段落连同问题一起喂给模型,让它”看着资料”回答。RAG 分三步:检索(从知识库找相关内容)→ 增强(把检索到的内容拼进上下文)→ 生成(模型结合资料给出答案)。
实践证明,“本地跑一个蒸馏过的小模型 + RAG 针对性检索”,对个人和小团队是性价比很高的方案。
为什么还要一个 embedding 模型
检索的前提是”机器知道哪段文字和问题最相关”。但自然语言没法直接算相似度——机器怎么知道”蟹堡王”和”比奇堡”很近、却和”深度学习”很远?
这就需要 embedding(嵌入)模型:它把一段文本转换成一串高维向量,语义相近的文字会被映射到相近的向量位置。之后用余弦相似度(cosine similarity,衡量两个向量方向接近程度)做匹配。可以理解成:上传并解析知识库后,系统给每个小文段生成一个”指纹”;你的问题也生成一个指纹,系统拿这个指纹去指纹库里比对,找出最像的几段,再交给对话模型。
顺带解释了一个常见现象:为什么网页版聊天免费,上传文件就要收费?因为文件要抽文字、表格、图片,逐段做 embedding,图片还要生成关键词,这些都要存储和算力。
两类模型别搞混
- chat 模型:负责对话和生成,如 DeepSeek、通义千问、豆包。
- embedding 模型:专门负责把文本转成向量,不负责聊天。
部署时这两类都要配。
三、部署总览(三步)
- 用 Ollama 把 DeepSeek 模型下载到本地运行。
- 用 Docker 部署开源框架 RAGFlow。
- 在 RAGFlow 里接入本地模型、建知识库、做问答。
四、第一步:Ollama 跑 DeepSeek
Ollama 是一个本地运行和管理大模型的工具,相当于一个本地模型仓库。到其官网下载对应系统的安装包。
配两个环境变量(关键)
RAGFlow 稍后会跑在 Docker(一个”封装好的小电脑”,把所需依赖全部装好,省去自己配数据库的麻烦)里。默认 Ollama 只允许本机(localhost)访问,Docker 里的容器连不上它,所以要改两个 Windows 环境变量(设置 → 系统 → 关于/高级系统设置 → 环境变量 → 新建):
OLLAMA_HOST,值设为0.0.0.0:11434:让 Ollama 监听所有网卡,Docker 才能访问。若仍不通,检查系统防火墙是否放行 11434 端口;只想给本机容器用、不想暴露端口,可用 SSH 端口转发代替。OLLAMA_MODELS:模型动辄几个 G 到几十个 G,把模型下载目录改到空间充足的盘。
改完必须重启电脑,新位置才会生效。
拉取模型
在 Ollama 模型库选模型。完整的 DeepSeek 参数量极大(数百 B、上百 GB),个人电脑带不动,建议从小的试起:DeepSeek-R1 的 1.5B 版本先跑通;有外接显卡可试 14B、32B,32B 效果已相当不错。
打开命令行(Win + R 输入 cmd),运行:
ollama run deepseek-r1:1.5b首次会自动下载,完成后它会进入交互状态。随便发一句话,能正常回复就说明本地模型就绪。后续可用 ollama list 查看已下载模型。
五、第二步:Docker 部署 RAGFlow
- 从 RAGFlow 的 GitHub 仓库下载源码(
git clone或直接 Download ZIP 解压均可)。 - 安装 Docker Desktop 并确认命令行里
docker可用。首次拉镜像慢属正常;拉不动时配置国内镜像加速器。 - 进入源码的
docker目录,打开环境配置文件,把”轻量版”那一行注释掉、把”完整版”那一行取消注释(完整版自带 embedding 模型,省去单独再装一个嵌入模型的麻烦;具体行号以你下载版本的 README 为准)。 - 在该目录打开命令行,用 Docker Compose 启动:
docker compose up -d首次会拉取镜像并启动,耗时较长。成功后在浏览器访问 http://localhost(默认 80 端口),注册登录即进入 RAGFlow。
六、第三步:接入模型并建知识库
添加本地 chat 模型
在”模型提供商”里添加 Ollama:
- 模型类型:选 chat(聊天模型),不要选 embedding。
- 模型名:严格照抄本地模型名,可用
ollama list确认,例如deepseek-r1:1.5b。 - Base URL(请求地址):填
http://本机IP:11434。本机 IP 在命令行用ipconfig查 IPv4 地址;端口即前面的 11434。 - 最大 token 数随意填(本地模型不消耗 API 配额)。
设置默认模型
在”系统模型设置”里:聊天模型选刚接入的 deepseek-r1:1.5b;嵌入模型选 RAGFlow 完整版自带的中文模型(large 版本效果优于 small)。
建立知识库
新建知识库,语言选中文,嵌入模型沿用默认,解析方式选 general 即可(书籍、论文、简历等有专门解析方法,按资料类型再切换)。
上传文档后,一定要点击”解析”——不解析,模型就无法理解里面的文字。解析过程会抽取段落并做 embedding。
建立助手并提问
新建一个助手,绑定刚建的知识库。提示引擎有个细节:默认规则是”知识库里找不到答案就说不知道”;如果你希望模型在资料不足时也能用自身能力回答,就把这段约束提示词删掉或改写。最大 token 数调大一些,否则回答会很短。
之后和助手对话,回答会引用你文档里的具体段落,并标注出处——这就实现了”基于私有资料”的问答。
七、不想本地跑模型?用在线 API
如果你只是想快速拥有一个知识库、不想折腾本地模型,可以跳过第四步,但仍需自己跑 RAGFlow(它目前没有官方网页版)。区别在于:在 RAGFlow 的模型提供商里,不接本地 Ollama,而是直接填各厂商提供的 API Key(一串用于识别身份、限流计费的密钥,在通义千问、DeepSeek 等平台的 API 页面申请),把在线的 chat 模型和 embedding 模型接进来。
两种方式怎么选:
| 维度 | 本地部署(Ollama + DeepSeek) | 在线 API |
|---|---|---|
| 部署成本 | 要装 Ollama、Docker,吃本机硬件 | 几乎零部署,填 Key 即可 |
| 性能 | 受限于本机,小模型能力有限 | 模型更大更强 |
| 隐私 | 请求不离开本机,适合涉密文档 | 数据会发到对方服务器 |
| 费用 | 一次性硬件成本,后续免费 | 有免费额度,用完按量计费 |
结论:个人学习、非敏感资料,在线 API 更省事;企业/涉密文档、要求绝对隐私,走本地部署。无论哪种方式,“建长期知识库 + 让模型据此回答”的整体流程是一样的。
八、小结
这条链路的本质是:Ollama 负责在本地跑对话模型,RAGFlow 负责解析文档、做向量检索、组织问答。隐私靠本地模型保证,知识准确性靠 RAG 检索你自己的文档保证。模型版本、RAGFlow 的配置项与端口会随版本变化,实操时以各自官方文档为准。
支持与分享
如果这篇文章对你有帮助,欢迎分享给更多人或打赏支持!














