手把手教你喂养 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 ...
随机推荐
- Nuxt.js 应用中的 webpack:error 事件钩子
title: Nuxt.js 应用中的 webpack:error 事件钩子 date: 2024/11/25 updated: 2024/11/25 author: cmdragon excerpt ...
- golang之常用方法/函数
1. io.Reader转化为字符串, byte切片 import "bytes" func StreamToByte(stream io.Reader) []byte { buf ...
- groovy 内存回收测试
问题 在使用我们的开发平台时,客户怀疑我们的动态执行脚本会导致系统内存回收的问题,导致系统不响应,为此我专门针对这个问题,做一下详细的测试,看看是不是到底有什么影响. 测试步骤 1.使用编写一个控制器 ...
- 论文解读《From Generation to Judgment: Opportunities and Challenges of LLM-as-a-judge》
发表时间:2024 期刊会议:arxiv 论文单位:Arizona State University 论文作者:Dawei Li, Bohan Jiang, Liangjie Huang, Alimo ...
- Vue项目“TypeError: Cannot read property ‘_wrapper’ of undefined
前情 最近在开发一个H5营销活动项目,为了更高的开发效率我使用了Vue全家桶来实现. 坑位 在开发中遇到一个奇怪报错(报错截图如下),从提示看也定位不到是哪里出问题 Why? 在报错的页面仔细看了一遍 ...
- manim边学边做--旋转
本篇介绍Manim中的两个旋转类的动画,名称差不多,分别是Rotate和Rotating. Rotate类主要用于对图形对象进行指定角度.围绕特定点的精确旋转,适用于几何图形演示.物理模拟和机械运动展 ...
- System.Text.Json匿名对象反序列化
以前就是一直使用 Newtonsoft.Json 用起来还是挺舒服的.由于 JSON 的应用越来越广,现在. NET Core 都内置了 System.Text.Json 可以直接对 JSON 进行操 ...
- Springboot上传文件大小限制处理
今天在开发过程中遇到一个文件上传的问题 io.undertow.server.RequestTooBigException: UT000020: Connection terminated as re ...
- Java 随机数 Random VS SecureRandom
1. Math.random() 静态方法 产生的随机数是 0 - 1 之间的一个 double,即 0 <= random <= 1.使用: for (int i = 0; i < ...
- java正则表达式(find()和 matches())
1.find()方法是部分匹配,是查找输入串中与模式匹配的子串,如果该匹配的串有组还可以使用group()函数. matches()是全部匹配,是将整个输入串与模式匹配,如果要验证一个输入的数据是否为 ...