一、为什么不直接使用网页版DeepSeek?

  • 我们的需求:
    1.  绝对的隐私保护:联网使用大模型,数据会上传到DeepSeek服务器,隐私性无法得到绝对保证。
    2.  个性化知识库构建。
  • 可能面临的场景:如果你希望大模型能根据你们企业的规章制度来回答问题,那么你一般需要上传企业规章制度的附件,但你仍然可能面临的问题:
    1. 数据隐私问题:联网使用大模型数据隐私性无法得到绝对保证。
    2. 上传文件的限制问题:网页版AI对于文件上传的数量、大小一般有限制并且通常需要付费。
    3. 仅通过附件扩展上下文功能有限:每次在新对话中提问相关问题时,仍需要重新上传附件;修改删除对话中已有的附件困难

二、如何实现网页版DeepSeek不能实现的需求?

  • 隐私保护:通过对话大模型,如DeepSeek本地部署解决隐私问题。
  • 个性化知识库构建:
    • 使用RAG技术(Retrieval-augmented Generation,检索增强生成)构建个人知识库,为此我们需要:
      1. 本地部署RAG技术所需要的开源框架RAGFlow
      2. 本地部署Embedding大模型,或者直接部署自带Embedding模型的RAGFlow版本。

三、RAG技术和模型微调

  • RAG和模型微调都是为了解决大模型的幻觉(在回答他不知道的问题的时候,会乱编)问题。
  • RAG技术:在生成回答之前,通过信息检索从外部知识库中查找与问题相关的知识,增强生成过程中的信息来源,从而提升回答的质量及准确性,抽象为开卷考试
  • 模型微调:在已有的预训练模型的基础上,再结合特定任务的数据集进一步对其进行训练,使得模型在这一领域中表现得更好,抽象为考前复习
    • 很大程度上能解决幻觉问题,缺点:成本高。

实践证实:本地部署一个蒸馏后的大模型+RAG技术是一个出色的解决方案。

  • 共同点:都是为了赋予模型某个领域的特定知识,解决大模型的幻觉问题。
  • RAG技术的原理:
    1. 检索:当用户提出问题时,系统会从外部的知识库中检索出与用户输出相关的内容。
    2. 增强:系统将检索到的信息与用户的输入结合,扩展模型的上下文,然后再传给DeepSeek。
    3. 生成:生成模型基于增强后的输入生成最终的回答。     

四、什么是Embedding?为什么需要这个模型?

  • 检索的详细过程:
  1. 准备外部知识库:外部知识库可能来自本地的文件、搜索引擎结果、API等等。
  2. 通过Embedding嵌入模型,对知识库文件进行解析:Embedding的主要作用是将自然语言转化为机器可以理解的高维向量,并且通过这一过程捕获到文本背后的语义信息,比如不同文本间的相似度关系。
  3. 通过Embedding嵌入模型,对用户的提问进行处理。用户的输入同样会经过Embedding,生成一个高维向量。
  4. 拿用户的提问去匹配本地知识库:使用这个用户输入生成的高维向量,去查询知识库中相关的文档片段,在这个过程中,系统会利用某些相似度度量,如余弦相似度去判断相似度。
  • 模型的分类:Chat模型、Embedding模型。
  • 简而言之:Embedding模型是用来对你上传的文件进行解析的。

文本数据->Embedding->向量数据

                                        

五、本地部署全流程

  • 下载ollama,通过ollamaDeepSeek模型下载到本地运行。

                ollama是一个平台,存放了很多开源的大语言模型。

                ollama也是一个工具,可以将模型下载到本地并运行。

  • 下载RAGFlow源代码和Docker,通过Docker来本地部署RAGFlow
  • RAGFlow中构建个人知识库并实现基于个人知识库的对话问答。

具体实现:

1)下载ollama平台,通过ollama将DeepSeek和Embedding模型都下载到本地:

 直接使用官方下载可能会比较慢,建议使用

  1. 进入https://github.com/ollama/ollama,找到页面右侧一栏中的"Releases",此处为实时更新的最新版本。
  2. 找到对应的版本并右键,复制链接地址。
  3. 进入github代理的一个地址http://ghfast.top,粘贴下载。

可见速度还是非常快的:

:浏览器默认下载到C盘,磁盘空间不足需到浏览器设置中更改下载地址。

可以通过win + r键,输入cmd,输入ollama命令,下载成功的话,会输出相关内容。

扩展:下载的ollama和docker安装包,在安装解析时文件会自动安装到C盘,可以通过以下解决:

  1. Win+R输入regedit打开注册表。

  2. 导航至:
    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion

  3. 修改ProgramFilesDirProgramFilesDir (x86)的值为E盘路径(如E:\Program Files

2)配置用户环境变量。

环境变量1:OLLAMA_HOST-0.0.0.0:11434

  1. 作用:让虚拟机里的RAGFlow能够访问到本机上的ollama。
  2. 如果配置后虚拟机无法访问,可能是你的本机防火墙拦截了端口11434。
  3. 不想直接暴露11434端口,用SSH端口转发来实现。
  4. 更新完两个环境变量记得重启。

环境变量2:OLLAMA_MODELS-自定义位置

        作用:ollama默认会把模型下载到C盘,如果希望下载到其他盘需要进行配置。 

3)通过ollama下载模型deepseek-r1:1.5b

(1)进入https://ollama.com/library/deepseek-r1,根据个人电脑配置及需求选择相对应的模型。

拿deepseek-r1:1.5b模型举例,1.5b就是15亿个参数,后面的1.1GB是所需电脑显存,而非内存。也可以下载其他模型,建议先下载小的模型,下载更快,后续可以更换模型。

(2)复制模型相对应的命令,在cmd中粘贴即可下载。

此处就是开始下载了。 

4)下载docker

  • docker镜像是一个封装好的环境,包含了所有运行RAGFlow所需的依赖、库和配置。
  • 进入http://docker.com,下载相对应的版本,安装即可。
  • 安装好后点击桌面的docker desktop,在登陆界面选择without sign up后面同样跳过即可。
  • 还有很重要的一步,因为已有文件提供的镜像源不可用所造成拉取超时的问题,所以需要在docker中加一个国内可用的仓库:

如下为拉取时的报错

解决办法: 

        Setting->Docker Engine->添加文本

{
  "builder": {
    "gc": {
      "defaultKeepStorage": "20GB",
      "enabled": true
    }
  },
  "experimental": false,
"registry-mirrors":[
        "https://hub.rat.dev"
]
}

5)下载RAGFlow

注意:需要提前下载Git!!!

   进入https://git-scm.com/downloads,若出现无法打开的情况,将以下链接用迅雷app打开即可:https://github.com/git-for-windows/git/releases/download/v2.49.0.windows.1/Git-2.49.0-64-bit.exe

下载并安装好后,在cmd运行:

git clone https://github.com/infiniflow/ragflow.git

⚠️此处可能报错: 他告诉我们:“连接到github端口443失败:无法连接到服务器”。 

解决办法

        这种连接失败的错误提示。这个问题常常与网络配置、代理设置或 VPN 环境的干扰有关。

此处共有两种情况:

(1)使用 VPN 环境下的解决方案

1. 检查当前代理设置
        首先,确认你系统的代理设置。通常,VPN 会配置一个本地代理端口来进行网络请求。你可以通过以下步骤检查代理端口:

        打开 设置 > 网络与互联网 > 代理,找到代理设置,并记录当前代理端口。假设端口号为 1234。
2. 配置 Git 使用代理
        确保 Git 使用与系统代理设置相同的端口。可以通过以下命令配置 Git 的代理:

  • git config --global http.proxy http://127.0.0.1:1234
  • git config --global https.proxy http://127.0.0.1:1234

        如果你的代理端口号是 1234,那么命令就如上所示。这样,Git 会通过该代理访问 GitHub,确保网络请求能够顺利传输。

3. 验证代理设置是否生效
        在配置完成后,你可以使用以下命令验证代理设置是否正确:

  • git config --global -l

        这将列出当前的 Git 配置信息,确保其中的 http.proxyhttps.proxy 设置为你刚刚配置的端口。

4. 刷新 DNS 缓存
        有时 DNS 缓存可能会导致连接问题。在执行 Git 操作前,建议刷新系统的 DNS 缓存:

        Windows 用户:

  • ipconfig /flushdns

        Mac 用户:

  • sudo dscacheutil -flushcache
  • sudo killall -HUP mDNSResponder

        刷新 DNS 缓存后,重新进行 Git 操作,看是否能够正常连接到 GitHub。

5. 重新尝试 Git 操作
        在完成上述步骤后,尝试执行 git push git pull 等 Git 命令,看看是否能成功连接并操作 GitHub。如果问题仍然存在,请检查网络连接是否稳定,或者尝试更换 VPN 服务器。

(2)未使用 VPN 环境下的解决方案:

        如果你并未使用 VPN,但仍然遇到连接 GitHub 端口 443 失败的问题,那么可能是 Git 配置了代理,但实际并不需要。你可以按照以下步骤解决该问题:

1. 取消 Git 配置的代理
        如果 Git 配置了代理,而你并不需要它,或者你的网络环境不适合使用代理,那么需要取消 Git 的代理设置。使用以下命令取消代理:

  • git config --global --unset http.proxy
  • git config --global --unset https.proxy

        这两条命令将移除所有全局代理设置,恢复 Git 的默认直连模式

2. 验证代理设置已成功移除
        通过以下命令检查代理是否已经被成功移除:

  • git config --global -l

如果没有显示 http.proxyhttps.proxy 相关的条目,说明代理已经被成功移除。

3. 重试 Git 操作

        取消代理设置后,重新执行 Git 操作,看看是否可以顺利连接到 GitHub。如果问题依然存在,建议检查本地网络连接,确保没有防火墙或其他网络配置阻止了端口 443 的访问。

 解决问题后重新执行git命令即可:

git clone https://github.com/infiniflow/ragflow.git

6)修改.env文件

        .env文件会默认下载slim版本的docker镜像,这个版本的镜像不包含Embedding模型,所以接下来要更改.env文件使其在运行时下载非slim版本的镜像,具体操作如下:

  • 在刚刚下载好的ragflow文件中找到docker,进入.env文件:

                                                ragflow->docker->.env 

  • 找到第84、87行代码,修改为下即可:

此处操作是将自动下载的slim版通过“#”注释掉,并且取消非slim版的注释。

7)配置docker镜像源:

🚃配置Docker镜像源

        为了加速Docker镜像的拉取,建议将Docker镜像源更改为国内源。具体步骤如下:

  1. 进入docker文件目录
  2. 新建一个文本文档,将其改名为"daemon.json"
  3. 编辑以下内容:
    {
      "builder": {
        "gc": {
          "defaultKeepStorage": "20GB",
          "enabled": true
        }
      },
      "experimental": false,
      "features": {
        "buildkit": true
      },
      "registry-mirrors": [
        "https://docker.m.daocloud.io",
        "https://docker.1panel.live",
        "https://registry.docker-cn.com",
        "https://cr.console.aliyun.com",
        "https://mirror.ccs.tencentyun.com",
        "https://huecker.io/",
        "https://dockerhub.timeweb.cloud",
        "https://noohub.ru/",
        "https://dockerproxy.com",
        "https://docker.mirrors.ustc.edu.cn",
        "https://docker.nju.edu.cn",
        "https://xx4bwyg2.mirror.aliyuncs.com",
        "http://f1361db2.m.daocloud.io",
        "https://registry.docker-cn.com",
        "http://hub-mirror.c.163.com",
        "https://docker.mirrors.ustc.edu.cn",
        "https://docker.registry.cyou",
        "https://docker-cf.registry.cyou",
        "https://dockercf.jsdelivr.fyi",
        "https://docker.jsdelivr.fyi",
        "https://dockertest.jsdelivr.fyi",
        "https://mirror.aliyuncs.com",
        "https://dockerproxy.com",
        "https://mirror.baidubce.com",
        "https://docker.m.daocloud.io",
        "https://docker.nju.edu.cn",
        "https://docker.mirrors.sjtug.sjtu.edu.cn",
        "https://docker.mirrors.ustc.edu.cn",
        "https://mirror.iscas.ac.cn",
        "https://docker.rainbond.cc"
      ]
    }
    

8)利用提前编译好的docker镜像启动服务器:

  • 进入docker目录:

cd ragflow
  • 启动docker容器: 
docker compose -f docker/docker-compose.yml up -d

        ⚠️此处可能会遇到docker compose 不认识-f 标识的报错。将命令及报错发给网页版deepseek,回答是:

        AI:在 Windows 的 CMD 中遇到 unknown shorthand flag: 'f' in -f 错误,通常是因为命令格式或 Docker 环境配置问题。

问题出在了未正确安装 Docker Compose 插件。

解决办法

  • 首先要下载compose插件:

进入https://github.com/docker/compose/releases/tag/v2.34.0找到合适版本点击下载。

  • 将已下载好的.exe文件重命名为docker-compose.exe(去掉-Windows-x86_64部分)
  • 将将文件移动到系统PATH环境变量包含的目录(例如 C:\Windows\System32),确保 CMD 能全局访问该命令。
  • 运行
sudo move "E:\Google下载\docker-compose.exe" "C:\Windows\System32\docker-compose.exe

此处将示例地址改为正确地址即可。

  • 检查是否安装成功
docker-compose --version

若输出:docker-compose version 1.29.2, build xxxxxxx即安装成功。

  • 最后再次执行命令
docker-compose -f docker/docker-compose.yml up -d

注意:此处的命令与git官方教程中命令不同,加了一个"-"。

最后成功拉取,大概需要40min:

 六、在ragflow中构建个人知识库并实现基于个人知识库的对话问答:

  • docker成功启动后,浏览器输入localhost:80来访问ragflow。

Logo

欢迎加入DeepSeek 技术社区。在这里,你可以找到志同道合的朋友,共同探索AI技术的奥秘。

更多推荐