网页的 DeepSeek 现在已经很好用了,那为什么不直接使用网页版呢?
想象一个场景,如果你希望大模型能够根据企业的规章制度来回答问题,或者根据某门课的十几份往年期末试卷预测一份今年的期末试卷,那么首先肯定需要将这些规章制度,或者这些试卷作为附件上传。
在网页版的大模型上,可以通过上传附件,但是仍然可能会面临一些别的问题:
- 首先就是数据的隐私问题,因为联网使用大模型,所有数据肯定会上传到服务器,隐私是无法得到保证的。
- 其次是上传文件的一些限制的问题,一般来说网页版的对于文件的上传数量、大小是有限制的,因为解析文件需要额外的算力,有的时候想上传的文件不是一个两个,而是一两百个,网页版能无力支持。
- 第三个问题是通过上传附件后,想新增、修改、删除对话中已有的附件也是比较困难。
对于这些问题,可以通过本地部署 DeepSeek 大模型,并结合 RAG 来构建个性化知识库。

1、什么是 RAG
RAG 全称是 检索增强生成,是 Retrieval Augmentation Generation 的缩写。
- Retrieval 检索:当用户提出问题的时,不会直接让大模型凭空想象,而是从首先从一个外部知识库检索与问题相关的内容。
- Augmentation 增强:检索到信息之后,与用户的输入结合去扩展模型上下文,再传给对话模型,这样对话模型就可以利用这些外部知识,使生成的答案更加准确和丰富。
- Generation 生成:模型基于增强后的输入,再去生成最终的回答。会结合用户的输入模型本身的能力以及检索到的这些外部的信息.
核心思想是:不必把所有知识都塞进模型的参数里,而是在需要时,临时去查资料,然后根据资料写答案。
一个典型的 RAG 应用分为两个阶段:
阶段一:预处理与索引(线下完成)
- 文档加载:收集你的专属知识库,如 PDF、Word、网页、数据库等。
- 分割:将长文档切分成更小的、语义完整的文本块。
- 向量化:使用“嵌入模型”将每个文本块转换成一串数字(称为“向量”或“Embedding”)。这个向量就像是这段文本在数学空间里的“坐标”,语义相近的文本,其向量在空间中的距离也更近。
- 存储:将这些向量和对应的原始文本存储到专门的数据库(向量数据库)中。
阶段二:检索与生成(线上实时完成)
- 用户提问:用户输入一个问题。
-
检索:
- 系统使用同样的嵌入模型将用户的问题也转换成向量。
- 在向量数据库中,搜索与“问题向量”最相似(距离最近)的几个文本块。
-
增强:将检索到的相关文本块和用户的原始问题组合成一个新的提示,例如:
根据以下背景信息回答问题。
背景信息:- [检索到的文本块1]
- [检索到的文本块2]
- ...
问题: [用户的原始问题]
- 生成:将这个构造好的提示发送给大模型。大模型会严格根据提供的“背景信息”来生成一个准确、可靠的答案。

2、Embedding 是什么
DeepSeek 是用来对话的,RAGFlow 是为了辅助构建知识库,除此之外,我们还需要一个 Embedding 模型。
Embedding 是一种将离散的、高维的数据(如单词、句子、图片、用户ID)转换为连续的、低维的向量(即一串数字)的技术。这个向量旨在捕捉原始数据的语义或特征。
当上传知识库文件后,需要对这些文件进行解析,而文件是由自然语言组成,无法直接使用, Embedding 的主要作用就是将这些文本转换为向量的表示,计算向量之间的余弦相似度,值越接近1,表示越相似,这样就能从海量文档中快速找到最相关的内容。
并且还需要对用户的输入提问进行处理,经过 Embedding 之后,同样会生成一个高维向量,然后就可以拿这个用户的提问去匹配本地知识库生成的这些高维向量了。

3、小结
所以说为什么目前很多网页版的对话模型跟他聊天是不需要付费的,但你一旦想要上传文件,就要开始付费或者限制文件大小,因为你上传文件之后,在他回答问题之前,还会经历很多步骤。
比如如果是 PDF,需要将 PDF 中的文字图片表格抽取出来,储存到数据库,然后还需要将这些文字的信息进行 Embedding 嵌入处理,这些都需要消耗空间和算力。
所以我们本地部署 RAGFlow,以及我们本地自带的 Embedding 模型,就是为了用来在自己的电脑上完成这些工作的。
简而言之,Embedding 模型可以理解为,就是用来对你上传的附件,你的这些知识库的内容进行解析的。
4、搭建知识库整体步骤
整一个本地部署的全过程,它其实很简单,一共就三步:
- 下载 ollama,通过 ollama 将 deepseek 模型下载到本地来运行。
- 下载 ragflow 的源代码以及 docker,因为需要通过 docker 来本地部署 ragflow。
- 在 ragflow 中构建个人知识库,并且基于个人知识库去进行对话问答。
5、下载 ollama
首先需要下载 ollama,这是一个用于本地运行和管理大语言模型的工具。如果不了解 ollama,可以先看看 Ollama 玩转免费开源大模型。

下载安装后,需要配置环境变量,有两个环境变量。

OLLAMA_HOST 0.0.0.0:11434
OLLAMA_MODELS ollama模型下载路径
OLLAMA_HOST 是让虚拟机里面运行的 RAG Flow,能够访问本机上的 ollama,因为稍后 rag flow 是通过 docker 部署的,默认情况下 ollama 只允许本机访问,也就是它监听的是 localhost:11434,通过设置 OLLAMA_HOST,就可以让 ollama 监听所有的IP,这样虚拟机就可以访问到它了
OLLAMA_MODELS 是 ollama 下载模型的路径,这个不是必须的,但一般来说模型会非常大,默认是 C 盘,所以建议修改。
注意:配置完环境变量后,需要重启电脑才能生效。
然后通过 ollama 下载模型到本地,这里我们选择下载 deepseek 的模型。

接下来选择模型的参数量,如果下载整个原始的 deepseek 模型的话,参数量会达到 671b,大小会达到 404GB,个人电脑肯定是带不动,建议先从 1.5b 开始尝试,直接复制命令在 cmd 中执行即可。

到这里本地部署 deepseek 就已经完成了。
6、下载 RAGFlow 和 Docker
首先下载 RAGFlow 的源代码。

然后下载 Docker,为什么需要 docker 呢?
因为 RAGFlow 的源代码并不包含其运行需要的环境和依赖,而 docker 就相当于是一个封装好的环境,包含所有运行 RAGFlow 所需要的依赖库和配置等,我们就无需在本地环境中配置所有的这些组件。
举个例子,为了构建个人知识库,RAGFlow 需要处理这些文件数据,并且把这些数据给储存起来,储存数据肯定需要用到数据库,如果自己做配置的话,这一切很复杂很复杂。那么通过 docker 来运行 RAGFlow 所有这些相关配置都会在 docker 中配置好。
下载好 RAGFlow 后,打开源代码的文件夹,找到 docker 文件夹,然后修改 .env 配置文件。

为什么要修改这个配置呢,因为 RAGFlow 默认下载轻量的版本。但是轻量的版本是没有 embedding 模型的,所以选择下载一个完整版本,它会包含这个 embedding 模型。

如果遇到 Docker 镜像拉不下来的问题,可以在 docker/.env 文件内根据变量 RAGFLOW_IMAGE 的注释提示选择华为云或者阿里云的相应镜像。
华为云镜像名:swr.cn-north-4.myhuaweicloud.com/infiniflow/ragflow
阿里云镜像名:registry.cn-hangzhou.aliyuncs.com/infiniflow/ragflow
这里我们选择 v0.17.2 版本,该版本包含了 embedding 模型,配置如下:

接下来运行命令,下载 RAGFlow 的 docker 镜像并启动
$ cd ragflow/docker
$ docker compose -f docker-compose.yml up -d
服务器启动成功后再次确认服务器状态:
$ docker logs -f ragflow-server
出现以下界面提示说明服务器启动成功:
____ ___ ______ ______ __
/ __ \ / | / ____// ____// /____ _ __
/ /_/ // /| | / / __ / /_ / // __ \| | /| / /
/ _, _// ___ |/ /_/ // __/ / // /_/ /| |/ |/ /
/_/ |_|/_/ |_|\____//_/ /_/ \____/ |__/|__/
* Running on all addresses (0.0.0.0)
注意:启动 RAGFlow 需要你的电脑配置 CPU >= 4 核,RAM >= 16 GB,Disk >= 50 GB,如果小于这个配置,是很难运行的。这点在 ragflow 官网有说明。
接下来就可以在浏览器打开 localhost:80 进入 ragflow 登录页面了,需要先注册,这里注册的账号密码就保存在 docker 的 mysql 中。登录成功后就可以开始配置模型了。
7、RAGFlow 配置
添加 ollama 本地模型,当然这里也可以添加其他模型,但需要输入对应的 API Key,这些需要在对应的官网申请,但就不是本地部署了。

注意模型类型需要选择 chat 模型。
模型名称就是在 ollama 中下载的模型名称,需要将其完整名称复制到文本框中。
基础 Url 需要根据当前电脑查看自己的本地 IP。
最大 token 数就是模型的输入输出长度。

系统模型设置是设置刚才添加的 ollama 模型。

创建知识库

在弹出窗口中,输入名称后确定,进入知识库配置页面,设置知识库的各项参数。
文档语言:“中文”。
嵌入模型:默认不变。
解析方法:取决后面需要上传到知识库的文件类型,每一种在页面右侧都有说明和示例,我要上传的是一个存放在 PDF 中的问答对,所以选择 Q&A。

新增文件,上传成功后,单击文件右侧的解析按钮开始解析文件,解析成功后,解析状态会变为“成功”。

点击上方导航栏的“聊天”,再点击“新建助理”。

给助理设置一个姓名,最底部的知识库中选择刚刚创建的知识库。

提示引擎可以配置相关提示信息,可以根据具体要求修改,不过默认的就已经很不错了。

模型配置中,选择刚配置的 deepseek 模型。

保存后,就可以开始对话了。

