手把手教你喂养 DeepSeek 本地模型
上篇文章《手把手教你部署 DeepSeek 本地模型》首发是在公众号,但截止目前只有500多人阅读量,而在自己博客园BLOG同步更新的文章热度很高,目前已达到50000+的阅读量,流量是公众号的100倍。
不管怎样,看来大家还是更喜欢这种真正手把手的教学模式。
在高流量加持下,也得到了更多读者的反馈,从评论区看到大家部署成功后都很兴奋,普遍认为这类教程对新手的帮助很大。
但也有困惑,就是成功部署本地模型之后,除了能在断网模式下也可以和deepseek聊天之外,还有哪些优势呢?
其实从BLOG的评论区已经有读者指出,迫切的想知道下一步究竟该如何喂养这个本地模型,让它可以成为一个更有用的本地私密知识库。
下面就开始 DeepSeek 手把手系列第二篇:《手把手教你喂养 DeepSeek 本地模型》
- 1.基本概念科普
- 2.下载 AnythingLLM 软件
- 3.配置 nomic-embed-text 模型
- 4.演示如何正确喂养个人数据
- 5.喂养前后效果对比和缺陷
1.基本概念科普
这里先给AI小白简单科普一下基本概念,便于更好地理解本文中的动手操作。
为什么我这里叫“喂养”DeepSeek 本地模型,是因为大模型再强大也有它天然的局限性,比如训练数据不可能包含你的私域数据,而打造自己的本地私域知识库,就需要检索这些数据,具体采用的是RAG(检索增强生成)方法。
RAG,英文全称是Retrieval-Augmented Generation。简单来讲,采用RAG就需要把你的私域数据向量化,然后存储到向量数据库中,支持向量检索配合LLM大模型一起提供更专业的回复。
2.下载 AnythingLLM 软件
官方网站:
下载符合你系统平台的软件,我这里是Apple Intel:
下载好的AnythingLLMDesktop.dmg
,dmg文件约300M多点,双击安装并拖至应用程序中:
拖动时可以看到AnythingLLM安装程序有1G大小:
然后打开AnythingLLM,欢迎界面如下:
点击Get Started
配置首选LLM,这里我们选择上一篇文章已经教大家配置好的Ollama:
这里注意,需要确保你的Ollama正常运行,否则会报错找不到provider endpoint
,如下图:
此时就需要检查你的ollama以及可用的本地模型:
修复好之后就可以看到AnythingLLM已经可以正确识别到本地部署的模型:
之后可以看到LLM模型选择了Ollama,Embedding默认是AnythingLLM的Embedder,Vector Database默认是LanceDB:
为了不给新手加难度,Embedding和Vector Database我这里都没有进行修改,直接先进入到下一步,是一个survey,笔者是个i人,实在没啥可说的,这里直接跳过了:
下一步选择工作区名称,你可以随便起名字,我这里就用自己的英文名演示了:
然后就终于进入了主界面:
呼呼,迫不及待的开始测试。
我这里直接设计了一个大模型不可能知道的问题,就是拿我的中文名字去做测试,直接问他“赵靖宇是谁?”
果然,它不知道!
马上开始上传一段TXT文本QA-Test.TXT
,其实就是简单包含了我之前在讲公开课时的一段个人介绍,全文也没几句话。开始期待它的表现,上传方式如下,可以看到上传后文件就会自动Embedded!
可是…… 这里不太顺利,它居然还是不知道!呜呜呜,我都把小抄给你了你还说不知道,笔者已哭晕……
此时只能转而troubleshooting,检索发现不少人都有遇到类似问题,有人甚至直接发结论说本地大模型的模式下,AnythingLLM根本无法识别上传的个人文件,甚至力劝大家别折腾了。。
3.配置 nomic-embed-text 模型
笔者属于不撞南墙不回头的类型,想深挖下问题到底出在哪里?开始逐一检查可能的配置:
1)聊天设置模型选择肯定是没问题,本地大模型 DeepSeek:
2)向量数据库默认的,向量数量为1:
3)代理配置依然选择了本地大模型 DeepSeek:
笔者初步判断:
- 1)本地大模型肯定没问题,因为上篇使用Chatbox调用都OK,AnythingLLM对应配置也再次确认了,均正确。
- 2)向量数据库虽然我有更好的选择,笔者就是从事数据库行业,但这里显然还没到那个阶段,默认的即便再拉跨也不至于一个这么简单的文本向量化都搞不定。
- 3)那就剩下 Embedding 用的模型,虽然开始也没怀疑过,但是这样排除下来就这个可能性最大了。要不,换一个试试?
目前 Embedding 采用的是默认的 AnythingLLM Embedder:
简单research了下,选了另一个Ollama下的nomic-embed-text
Embedding 模型,官方网站:
我们可以在terminal下使用ollama直接拉取ollama pull nomic-embed-text
:
然后再回到Embedder首选项
,在嵌入引擎提供商,选择Ollama,然后在下面的Ollama Embedding Model选择刚刚下载的最新nomic-embed-text:8192
,如下图:
选择好之后点击蓝色的按钮保存更改
,会弹出一个比较醒目的Warning,如下图:
主要是警告你要做的这个更改Embedding模型的操作会重置先前所有embedded的文档,且不可逆转。我这之前的根本没效果,重置就重置,赶紧点击Confirm
,迫不及待想看下这个新的Embedder是否有用?
4.演示如何正确喂养个人数据
使用跟之前同样的操作方法,同样的问题赵靖宇是谁?
,喂养文本QA-Test.TXT
,终于起作用了!
于是兴奋地继续追问:他有几年的工作经验?
,又不知道了,当然这个正常,因为我提供的信息里就没有明确提到,可以继续上传其他个人数据,比如说来份PDF格式的个人简历:
然后继续问些更细节的问题:你知道他的博客地址是什么吗?
、赵靖宇有公众号吗?
效果还是比较给力的,均给出了正确答案。明确说出我的公众号名称赵靖宇
,以及Blog的url地址:https://www.cnblogs.com/jyzhao/
,尤其是网址能准确给出还是比较惊喜的。
5.喂养前后效果对比和缺陷
上面已经看到了喂养后的效果显著,但这是否就高枕无忧了呢?
其实不是的,比如我继续测试时发现,当让它帮我总结下简历信息,就看到了较明显的缺陷:
这里有两处明显的错误:而且有一个错误,还是之前单独问它时,回答正确的,具体如下图:
其实这个回复中大部分信息都还OK,可瑕疵也是极为明显的,比如它居然说我是人工智能聊天机器人,然后把之前曾正确回答出的博客网址又给答错了。
这些讹误和不稳定性,原因可能是受限于我本地部署的模型太小,本身能力不足,也可能是Embedding向量化的工作做的还不够好,但总体来说,对于我这台个人电脑能达到这样的效果,已经很是知足了。
OK,到这里,就已经完成了 DeepSeek 手把手系列的第二篇教程《手把手教你喂养 DeepSeek 本地模型》,之前说感兴趣的读者们也抓紧hands-on起来吧!
手把手教你喂养 DeepSeek 本地模型的更多相关文章
- 手把手教你玩转SOCKET模型之重叠I/O篇(下)
四. 实现重叠模型的步骤 作 了这么多的准备工作,费了这么多的笔墨,我们终于可以开始着手编码了.其实慢慢的你就会明白,要想透析重叠结构的内部原理也许是要费点功夫,但是只是学会 如何来使用它,却 ...
- 转:变手把手教你玩转SOCKET模型之重叠I/O篇
手把手教你玩转SOCKET模型之重叠I/O篇 “身为一个初学者,时常能体味到初学者入门的艰辛,所以总是想抽空作点什么来尽我所能的帮助那些需要帮助的人.我也希望大家能把自己的所学和他人一起分享,不要去鄙 ...
- 手把手教你使用HarmonyOS本地模拟器
2021年的华为开发者大会(HDC2021)上,我们随DevEco Studio 3.0 Beta1版本发布首次推出了本地模拟器(也称为Local Emulator),支持模拟手机品类. 我们通过下面 ...
- GitHub 手把手教你如何把本地项目或代码提交到Github托管
GitHub 手把手教你如何把项目或代码提交到Github托管 启动Git Bash命令行 重点内容 1.首先打开你的github,点击新建项目,点击new repositories ,然后直接给项目 ...
- 手把手教你玩转SOCKET模型之重叠I/O篇(上)
“身为一个初学者,时常能体味到初学者入门的艰辛,所以总是想抽空作点什么来尽我所能的帮助那些需要帮助的人.我也希望大家能把自己的所学和他人一起分享,不要去鄙视别人索取时的贪婪,因为最应该被鄙视的是不肯付 ...
- 手把手教你 Apache DolphinScheduler 本地开发环境搭建 | 中英文视频教程
点击上方 蓝字关注我们 最近,一些小伙伴反馈对小海豚的本地开发环境搭建过程不太了解,这不就有活跃的贡献者送来新鲜的视频教程!在此感谢@Tianqi-Dotes 的细致讲解 贡献者还贴心地录制了中英文两 ...
- 手把手教你Chrome扩展开发:本地存储篇
手把手教你开发chrome扩展一:开发Chrome Extenstion其实很简单 手把手教你开发Chrome扩展二:为html添加行为 手把手教你开发Chrome扩展三:关于本地存储数据 HTML5 ...
- 手把手教你开发Chrome扩展三:关于本地存储数据
手把手教你开发chrome扩展一:开发Chrome Extenstion其实很简单 手把手教你开发Chrome扩展二:为html添加行为 手把手教你开发Chrome扩展三:关于本地存储数据 HTML5 ...
- 网络编程懒人入门(八):手把手教你写基于TCP的Socket长连接
本文原作者:“水晶虾饺”,原文由“玉刚说”写作平台提供写作赞助,原文版权归“玉刚说”微信公众号所有,即时通讯网收录时有改动. 1.引言 好多小白初次接触即时通讯(比如:IM或者消息推送应用)时,总是不 ...
- 手把手教你开发chrome扩展
转载:http://www.cnblogs.com/walkingp/archive/2011/04/04/2003875.html 手把手教你开发chrome扩展一:开发Chrome Extenst ...
随机推荐
- docker部署java项目
1.首先你需要提前准备好jar包或者war包,并想办法放入Linux环境(或虚拟机)中: 2.java项目的部署需要用到Tomcat或者Jetty,docker可以直接拉取他俩的镜像,这里以Tomca ...
- Java内存泄露测试及工具
声明:这是转载的. 测试类: Element.java package com.memoryleak.demo; public class Element { private byte[] data; ...
- Impala学习--Impala概述,Impala系统架构
Imapla概述 Impala是Cloudera公司的一个实时海量查询产品.是对于已有Hive产品的补充.Impala采用了和Hive相同的类SQL接口,但并没有采用MapRed框架执行任务,而是采用 ...
- python开发包之远程隧道链接sshtunnel
缘起: 公司很多的数据库的链接都是本地连接或者指定ip地址可以访问, 如果你没有该ip权限, 但是你可以登录该数据库所在的服务器, 这个时候就可以使用ssh链接上这个服务器,以此为跳板进行数据库的链接 ...
- 2019GPLT
2019GPLT 7-2 6翻了 从左到右扫描输入的句子:如果句子中有超过 3 个连续的 6,则将这串连续的 6 替换成 9:但如果有超过 9 个连续的 6,则将这串连续的 6 替换成 27.其他内容 ...
- uniapp使用EventBus实现页面间数据传递
前情 最近在做小程序项目,选用是当前比较火的uniapp技术栈,经常会遇到页面间消息传递的需求. 为什么要这么做? uniapp页面间数据通信方式有很多:通过url传参,状态管理库vuex/pinia ...
- Nginx转发解析长域名多路径域名为一级域名
Nginx解析短域名,例如:访问 http://192.168.1.23 可直接跳转到 http://192.168.1.23/webroot/decision server { listen 90 ...
- Shiro简单入门+个人理解
身为一个刚刚进入开发行业的学生,进入公司就开始了Shiro框架的应用,特此在这里写下收获. Shiro是apache旗下一个开源安全框架,它将软件系统的安全认证相关的功能抽取出来,实现用户身份认证,权 ...
- 中电金信:数字经济时代,AI+金融技术应用与未来发展
- Java线程 interrupt 方法使用异常
背景 需要在异步任务中中断任务的执行,故选择通过调用 interrupt 方法对线程设置中断信号. 在比较耗时的业务代码增加判断 Thread.currentThread().isInterrupte ...