本地使用docker部署DeepSeek大模型

news2025/2/21 10:10:48

1、相关技术介绍

1.1、RAG

        RAG(Retrieval Augmented Generation),即“检索,增强,生成”,用于提升自然语言处理任务的性能。其核心思想是通过检索相关信息来增强生成模型的能力,具体步骤如下:

(1)检索(Retrieval):当用户提出问题时,系统会从外部的知识库中检索出与用户输入相关的内容。

(2)增强(Augmented):系统将检索到的信息与用户的输入结合,扩展模型的上下文。然后再传给模型,使模型得到增强。

(3)生成(Generation):生成模型基于增强后的输入生成最终的回答。由于这一回答参考了外部知识库中的内容,因此更具有参考性。

1.2、微调技术

        微调技术是指在预训练模型的基础上,通过特定任务的数据进一步训练,以提升模型在该领域中的表现,具体步骤如下:

(1)预训练:在大规模数据集上训练模型,学习通用特征。

(2)微调:在预训练模型上,通过特定任务的数据进一步训练。

        RAG和微调技术的共同点:都是用于赋予模型某个领域的特定知识,解决大模型的幻觉问题。所谓大模型幻觉就是当大模型遇到一些不知道的问题时,会输出一些错误的虚构的具有误导性内容的现象。

        RAG和微调技术的区别:RAG强调检索,更准确,但因为依赖于外部信息,所以灵活性差一些。微调技术强调训练学习,训练好的模型可以有自己的想法,更灵活一些。

1.3、Embedding模型

        Embedding 是一种将离散数据(如单词、句子自然语言或图像)转换为连续向量表示的技术。这些向量能够捕捉数据的语义信息,使得机器可以更好地理解和处理这些数据。Embedding 在自然语言处理(NLP)和机器学习中广泛应用。

        在RAG的检索步骤时,会通过Embedding(嵌入)模型,对知识库文件进行解析:Embedding的主要作用是将自然语言转化为机器可以理解的高维向量,并且通过这一过程捕获到文本背后的语义信息(比如不同文本之间的相似度关系)

        通过Embedding(嵌入)模型。对用户的提问进行处理。用户的输入同样会经过嵌入(Embedding)处理,生成一个高维向量。

拿用户的提问去匹配本地知识库:使用由用户输入生成的高维向量,去查询知识库中相关的文档片段,在这个过程中,系统会利用某些相似度度量去判断相似度。

        Embedding模型可以对你上传的附件进行解析。

1.4、相似度度量

        相似度度量是一种用于量化两个对象之间相似程度的方法。它在多个领域中广泛应用,如自然语言处理(NLP)、信息检索、机器学习和数据挖掘等。相似度度量可以帮助我们理解和比较不同对象之间的关系。

        相似度:表示两个对象在某种特征或属性上的接近程度。

        距离度量:与相似度相对,表示两个对象之间的差异程度。通常,距离越小,相似度越高。

        常见相似度度量方法

        (1)余弦相似度:用于衡量两个向量之间的夹角余弦值。应用于文本相似度、推荐系统。

        (2)欧式距离:用于衡量两个点在欧氏空间中的直线距离。应用于聚类分析、图像识别。

        (3)曼哈顿距离:用于衡量两个点在网格路径上的距离。应用于路径规划、数据挖掘。

        (4)杰卡德相似系数:用于衡量两个集合的交集与并集的比值。应用于集合相似度、推荐系统。

        (5)皮尔逊相关系数:用于衡量两个变量之间的线性相关性。应用于统计分析、数据挖掘。

1.5、Chat模型&Embedding模型

        Chat模型是用于自然语言对话,能够结合上下文理解和回应用户的输入,能够进行多轮对话。

        Embedding模型用于将文本映射为高维向量,用这些高维向量和知识库的高维向量去进行匹配。

        举个例子:假设我们有一个 Embedding 模型,将单词映射为 5 维向量。

        单词 "king" 的向量表示可能是:[0.25, -0.34, 0.12, 0.45, -0.67]

        单词 "queen" 的向量表示可能是:[0.23, -0.33, 0.11, 0.44, -0.66]

        单词 "man" 的向量表示可能是:[0.10, -0.20, 0.05, 0.30, -0.50]

        单词 "woman" 的向量表示可能是:[0.09, -0.19, 0.04, 0.29, -0.49]

        通过分析这四个映射的向量,我们可以看出,在向量空间中,语义相近的单词距离也较近。比如:"king" 和 "queen" 的向量在空间中距离较近,因为它们都是表示君主的词汇。"man" 和 "woman" 的向量在空间中距离较近,因为它们都是表示性别的词汇。判断向量空间是否相近就会用到“相似度度量方法”。

        在实际中,Embedding 模型的向量维度通常较高,例如Word2Vec通常使用 300 维向量,GloVe通常使用 50、100、200、300 维向量,BERT通常使用 768 维或 1024 维向量。

2、本地部署

2.1、先下载ollama

Download Ollama on Windows

2.2、通过Ollama下载模型到本地

        Ollama会默认把模型下载到C盘,如果想更换模型下载位置,可以新增环境变量OLLAMA_MODELS,变量值为模型下载到的路径。

        先启动ollama,cmd命令提示符输入ollama run 指定的模型,ollama run deepseek-r1:1.5b

如果已下载则会直接启动该模型,否则会去联网下载该模型。

deepseek-r1:1.5b

 

2.3、下载RAGFlow源代码

GitHub - infiniflow/ragflow: RAGFlow is an open-source RAG (Retrieval-Augmented Generation) engine based on deep document understanding.

 

2.4、下载安装docker

Docker: Accelerated Container Application Development

我这里选的是windows版的。

        直接点击下载后的docker图标进行安装。安装完成后桌面上会出现一个docker的图标:  

 

        注意windows安装docker desktop是默认安装在系统盘C盘的。不过这个可以改安装位置。

        首先打开命令提示符。 

        切换到Docker Desktop Installer.exe安装包所在的目录。  

        输入以下命令:

start /w "" "Docker Desktop Installer.exe" install -accept-license --installation-dir="D:\SoftWare\Docker\install" --wsl-default-data-root="D:\SoftWare\Docker\install\Data" --windows-containers-default-data-root="D:\SoftWare\Docker\install"

 D:\SoftWare\Docker\install为Docker安装的位置,D:\SoftWare\Docker\install\Data用于存储镜像、容器、卷等数据的目录。

        点击OK,等待一会儿,就安装完成了。

 但是此时打开docker客户端,会报这个问题。

        解决方法,cmd管理员模式运行以下代码:bcdedit /set hypervisorlaunchtype auto

        重启电脑后,以管理员身份运行Docker Desktop

        因此,需要修改ragflow源代码下的.env文件。

        配置环境变量:OLLAMA_HOST  

        配置OLLAMA_HOST环境变量的作用是让虚拟机里的RAGFlow能够访问到本机上的Ollama,因为这里RAGFlow要通过Docker部署,默认情况下ollama只能允许本机访问的。默认情况下Ollama监听的是localhost:11434。通过设置成0.0.0.0,这样Ollama就可以监听到本机所有的ip,这样虚拟机就可以访问到本机上的Ollama了。  

        cmd进入ragflow目录下,输入命令:docker compose -f docker/docker-compose.yml up -d

        注意:如果镜像拉不下来则要配置国内的镜像源。

{
	"builder": {
		"gc": {
			"defaultKeepStorage": "20GB",
			"enabled": true
		}
	},
	"experimental": false,
	"registry-mirrors": [
		"https://registry.docker-cn.com"
	]
}

 

Docker中国区官方镜像
https://registry.docker-cn.com

中科大
https://docker.mirrors.ustc.edu.cn/

网易
http://hub-mirror.c.163.com/

腾讯
https://mirror.ccs.tencentyun.com

        镜像源记得多试几个,我最后是挂了梯子的。

 

        最后总共花了一个多小时才把镜像下载下来,下载过程中如果卡住不动了,可以按一下回车键。  

        镜像下载成功后,浏览器输入:http://localhost:80 进入以下页面,说明RAGFlow已经部署成功了。

 

3、在RAG中构建个人知识库

3.1、添加Ollama模型

 

3.2、系统模型设置 

 

 

3.3、创建知识库 

 

 

 

        不过我的电脑本地解析pdf文档经常卡在那里不动了,然后RAGFlow也卡住了,然后就自动退出登录了。

 

         后来,我又把pdf转为word,并把里面的所有图片都删除了,结果还是解析到一半就卡住了,然后自动跳出登录了。最后,我把文档只保留了“前言”部分,差不多一页文档的样子,很快就解析成功了。

 3.4、新建聊天助理

 

 

        设置好聊天助理后,与聊天助理对话,出现了连接失败的问题。  

        出现这个问题,是由于系统运行内存不足导致的。我本机的笔记本内存是16G,docker启动后系统是分配了7.5G的内存,内存显著不足,导致elasticsearch无法正常运行,显示为无法建立连接。

        我参考了这位博主的文章:Ragflow错误解决方案 Failed to establish a new connection: [Errno 111] Connection refused-CSDN博客

       在windows下给docker desktop分配最大内存。

        win + r,调出运行,输入 %UserProfile%,进入用户文件夹 在用户文件夹下创建一个新的文件,改名为 .wslconfig,内容如下:

[wsl2]
memory=16GB          # 分配的内存
processors=12        # 处理器核心数量,考虑超线程
swap=0
localhostForwarding=true

        保存文件后,重启docker和WSL。

  1. 退出docker,任务管理器中确保无docker相关进程。

  2. win+r调出运行,输入cmd并回车,在命令提示符中,输入以下内容并回车。

    wsl --shutdown

        重新打开docker,确保容器中所有的程序都运行,重新在浏览器中连接ragflow进行尝试。

        不过有时候和聊天助手对话,也会报“ERROR: NotFoundError(404, 'index_not_found_exception', 'no such index [ragflow_c97380ccebb111ef951b0242ac120006]', ragflow_c97380ccebb111ef951b0242ac120006, index_or_alias)”。这个问题其实就是elasticsearch应用启动的有问题。重启一下就行了。如果还有问题,那就再把知识库的知识文档重新解析一遍。

        最终,可以顺利的和聊天助手聊天了。

         但是AI把一段话重复了两遍。

 

4、调用外部大模型API

        由于本地部署的话,受限于个人电脑的配置,所以很不好用。因此为了能更好的享受AI大模型带来的便利,这里推荐直接调用外部大模型API。

        我这里以“通义千问”大模型为例,首先进入阿里云官网。

通义大模型_企业拥抱 AI 时代首选-阿里云

 

 

 

 

 

 

 

 

 

5、总结

        上一次写文章还是2024年9月份,已经半年没有写文章了。去年下半年平时上班周末上课,忙忙碌碌的也没心思更不知道要写点啥。上班就那点东西,天天业务搬砖增删改查,越来越不想干了。但不干开发,不写代码也不知道自己能干点啥?原本是希望读个非全的研究生,看看其他方向的,真正读了半学期感觉下来,就是脑子里被灌了一大堆有的没的的知识,大脑还是懵逼的。学校的老师都在搞什么“量子计算、脑机接口、密码学、计算机图形、物联网、机器学习、海事遥感......”这些东西与我工作没有关系,我也研究不了老师们的这些方向,选了个导师,还是放养的,无课题无组会,自己想办法毕业,学校的学费还真好赚啊!我还得为论文头疼。

        通过本地部署大模型构建自己的知识库以聊天助理的方式呈现知识交互,确实蛮令人震撼的。从今以后都是AI的天下了,我经常用AI帮我改代码。不过由于我的笔记本是轻薄本,受限于性能,无法本地部署一个真正可用的大模型知识库,还得去租个云主机,或者购买外部提供的模型api。

6、参考资料

Windows Docker 配置国内镜像源的两种方法_docker desktop配置多个镜像源默认使用哪个镜像源-CSDN博客 【知识科普】【纯本地化搭建】【不本地也行】DeepSeek + RAGFlow 构建个人知识库_哔哩哔哩_bilibili Windows装Docker至D盘/其他盘(最新,最准确,直接装)_docker安装到d盘-CSDN博客 Windows Docker安装(当前计算机配置不支持 WSL2。.....问题已解决)-CSDN博客

在 Windows 上配置 Ollama 服务并开放局域网访问_ollama局域网访问-CSDN博客

Ragflow错误解决方案 Failed to establish a new connection: [Errno 111] Connection refused-CSDN博客

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2300984.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

统计5分钟nginx访问日志的数据并设置阈值告警

1.脚本统计生成deny_ip文件 #!/usr/bin/bash#Tate:2022.3.30 #Author:Yingjian #function: 统计5分钟之内的访问ip #env#脚本存放的目录 workdircd $(dirname $0);pwdif [ $# -eq 0 ];then echo "Usage: $0 {统计几分钟内的ip}" exit 2 filogfile/var/log/nginx/acc…

day12_调度和可视化

文章目录 day12_调度和可视化一、任务调度1、开启进程2、登入UI界面3、配置租户4、创建项目5、创建工作流5.1 HiveSQL部署(掌握)5.2 SparkDSL部署(掌握)5.3 SparkSQL部署(熟悉)5.4 SeaTunnel部署&#xff0…

DC-6靶机渗透测试全过程

目录 前期准备 一、渗透测试 1.IP地址查询 2.端口信息搜寻 3.网页信息搜集 wappalyzer WPScan 反弹shell graham用户 反弹出jens的shell nmap提权 二、总结 前期准备 攻击机: kali windows11 靶机:DC-6靶机(调至NAT模式&#xff0…

Win11 远程 连接 Ubuntu20.04(局域网)

Win11 远程 连接 Ubuntu20.04(局域网) 0. Ubuntu 开启共享1. Ubuntu系统中安装RDP服务器2.windows中连接使用方式1:远程桌面连接(winr: mstsc)方式2:mobaXterm 3 问题远程连接后出现黑屏 参考文献: 0. Ubuntu 开启共享 在ubunt设置中&#x…

Visual Studio Code支持WSL,直接修改linux/ubuntu中的文件

步骤1 开始通过 WSL 使用 VS Code | Microsoft Learn 点击远程开发扩展包。 步骤2 Remote Development - Visual Studio Marketplace 点击install, 允许打开Visual Studio Code。 步骤3 共有4项,一齐安装。 步骤4 在WSL Linux(Ubuntu)中&#xf…

开源在线考试系统开源在线考试系统:支持数学公式的前后端分离解决方案

开源在线考试系统:支持数学公式的前后端分离解决方案 项目介绍项目概述:技术栈:版本要求主要功能:特色亮点 项目仓库地址演示地址GiteeGitHub 系统效果展示教师端系统部分功能截图学生端系统部分功能截图 结语 项目介绍 项目概述…

解决 ssh connect to host github.com port 22 Connection timed out

一、问题描述 本地 pull/push 推送代码到 github 项目报 22 端口连接超时,测试连接也是 22 端口连接超时 ssh 密钥没问题、也开了 Watt Toolkit 网络是通的,因此可以强制将端口切换为 443 二、解决方案 1、测试连接 ssh -T gitgithub.com意味着无法通…

分享8款AI生成PPT的工具!含测评

随着人工智能技术的飞速进步,制作PPT变得愈发便捷,仅需输入主题指令,便能在瞬间获得一份完整的演示文稿。尤其在制作篇幅较长的PPT时,手动编写每一页内容并设计格式和排版,不仅效率低下,而且耗时耗力。 本…

豪越科技:消防安全重点单位一体化安全管控

在当今数字化高速发展的时代,消防安全的重要性日益凸显。豪越科技以其卓越的技术实力和创新精神,将物联网、大数据、人工智能等先进技术深度融合,打造出了功能强大的消防安全重点单位一体化安全管控平台,为消防安全管理带来了全新…

LabVIEW无刷电机控制器检测系统

开发了一种基于LabVIEW的无刷电机控制器检测系统。由于无刷电机具有高效率、低能耗等优点,在电动领域有取代传统电机的趋势,而无刷电机的核心部件无刷电机控制器产量也在不断增长。然而,无刷电机控制器的出厂检测仍处于半自动化状态&#xff…

EXCEL解决IF函数“您已为此函数输入太多个参数”的报错

IF函数的基本结构是IF(条件, 值为真时的结果, 值为假时的结果),所以标准的IF函数最多只能有三个参数。当用户输入的参数超过三个时,Excel就会报这个错误。比如多个IF语句叠加,但可能在嵌套的过程中没有正确关闭每个IF函数的括号,导…

C#使用文件读写操作实现仙剑五前传称号存档修改

手把手教学仙剑五前传 称号存档修改器 首先找到 Pal5Q所在目录的save\global.sav 文件,这是一个只有488字节的文件,这里存放称号对应的编号ID,以及是否已获得该称号,1为已获取称号,0为未获取称号 [称号:是否获取]这是一个键值对 称号的编号ID是一个Int32数字,使用C#的方法Bi…

记录一次部署PC端网址全过程

当我查看我之前写的文章时、顿时惊奇发出感慨:啥时候写的?是我写的么?疑惑重重… 所以说,好记性不如烂笔头。 记录一次部署PC端网址全过程 部署PC端网址分是三步:第一步:申请域名并映射到外网IP &#xff0…

Spring——Spring开发实战经验(4)

摘要 本文深入探讨了 Spring 应用中 Interceptor(拦截器)、Filter(过滤器)和 Aspect(切面)的执行顺序、职责及典型使用场景。Filter 是 Servlet 级别的机制,主要用于日志记录、权限验证等&…

小白win10安装并配置yt-dlp

需要yt-dlp和ffmpeg 注意存放路径最好都是全英文 win10安装并配置yt-dlp 一、下载1.下载yt-dlp2. fffmpeg下载 二、配置环境三、cmd操作四、yt-dlp下视频操作 一、下载 1.下载yt-dlp yt-dlp地址 找到win的压缩包点下载,并解压 2. fffmpeg下载 ffmpeg官方下载 …

I²C简介

前言 IC(Inter-Integrated Circuit, 内置集成电路)总线是由Philips公司(现属于恩智浦)在上世纪80年代开发的两线式串行通信总线,用于连接微控制器及其外围设备,控制设备之间的通信。 IC总线的物理拓扑示意…

【Vue+python】Vue调用python-fastApi接口实现数据(数值、列表类型数据)渲染

前言:之前做的一直都是SpringBootVue的应用,但现在需要实现一个能将python实现的算法应用展示在前端的界面。想法是直接Vue调用python-fastApi接口实现数据渲染~ 文章目录 1. 变量定义2. axios调用python3. 跨域问题解决4. 数据渲染4.1 数值数据渲染4.2 …

构建高效智能对话前端:基于Ant Design X 的deepseek对话应用

文章目录 实现的效果前言Ant Design X添加欢迎组件创建对话气泡存储对话历史渲染对话气泡 输入组件WebSocket 连接总结 实现的效果 待机页面: 等待页面: 完成页面: 前言 随着人工智能技术的飞速发展,大模型对话系统已成为…

开源多商户商城源码最新版_适配微信小程序+H5+APP+PC多端

在数字化时代,电子商务已经成为各行业不可或缺的一部分,开源多商户商城源码为中小企业和个人开发者提供了快速搭建和定制电商平台的利器。分享一款最新版的开源多商户商城源码,它能够适配微信小程序、H5、APP和PC等多个端口,满足商…

第3章 .NETCore核心基础组件:3.1 .NET Core依赖注入

3.1.1 什么是控制反转、依赖注入 杨老师在书中进行了一系列的文字阐述,总结一下就是:软件设计模式中有一种叫做【控制反转】的设计模式,而依赖注入是实现这种设计模式的一个很重要的方式。也就是说学习依赖注入,是学习怎样实现控…