鄙人最初的设想,与考虑的场景是:
1.为了在无网环境下能够鞭策AI助我一臂之力,可能会有人问为什么要考虑无网环境,这不是杞人忧天吗?哈哈,到处都可以有无网环境的场景,比如高铁上(网络波动大)、公司的数据是不能联网的(防止数据泄露)等等,很多地方都有无网环境下的用处,不过一般确实不需要这无网方面的考虑。
2.本地部署AI的话可以降低成本,自己本地的算力,但是这方面也只能随便说说,毕竟个人的本地算力一般还是不够的,但是对于小企业和中等企业部署本地的话,就是常见的事情,数据在本地不会泄露,而且不需要买token。
3.学习一下Agent流程,MCP、RAG技术等。
综上场景,鄙人最初就是为了能够把这个项目放到U盘里,之后下次可以在能插U盘的电脑上快速配置好这些环境,快速部署在本地,以及能够快速进行本地鞭策AI为我所用。这不是一件美事吗?不过确实也没必要这么折腾。所以说,该项目没啥创新,用的都是开源的东西,就是搭建了一个本地ai模型+agent+RAG流程。
MyLocalAI
|__engine #AI的引擎,llama.cpp
| |__cpu #cpu包
| |__cuda12 #cuda包
| |__vulkan #老显卡(AMD和NVIDIA显卡皆可)的包
|__models #开源AI模型
| |__bge-small-zh-v1.5 #用于向量数据库的计算,把文本块直接编码成高维嵌入表示
| |__DeepSeek-R1-Distill-Qwen-7B-Q4_K_M.gguf #量化过的gguf格式deepseek模型
| |__qwen2.5-coder-7b-instruct-q8_0.gguf
|__My_RAG #本地自定义数据库(类似Zvec),引入RAG技术,MCP
| |__docs #存放要给AI的参考资料
│ |__build_db_diy.py #对本地资料docs进行全部转换为向量数据库
│ |__mcp_server.py #把加入的RAG技术(类似Zvec)转成MCP,方便agent调用
│ |__my_nano_db.pt #向量数据库本库
│ |__search_db.py #对RAG能否正常找到所需要的参考资料进行的测试demo
│ |__view_db.py #直观可视化查看构建的向量数据库
|
|__saoudrizwan.claude-dev-4.0.6 #Cline插件
|__cpu-start.bat #cpu模式启动,不过是命令行里面聊天
|__cuda-start.bat #cuda启动,命令行里面交互
|__LocalAPI-start.bat #服务端启动,调用本地的API(可以搭建Cline agent来自动化本地操作等),或者直接127.0.0.1浏览器窗口聊天
|__Python_Env #为了本地不配置复杂环境下载的WinPython
|__build_database.bat #构建自定义向量数据库的脚本
|__view_db.bat #可视化查看已经构建好的向量数据库脚本
鄙人一直以MyLocalAI这个整个项目为根目录(即engine和models的父目录),所以所有的运行脚本文件都放在了以MyLocalAI根目录下。
本人是在windows下对所有实验已经验证过的了,而且已经 把整个项目放进U盘里面了,方便我直接下次在其他电脑插上U盘就可以直接快速部署,鞭策AI了。
环境:llama.cpp、VSCode、Cline、Claude Code、Winpython
推荐的模型:Ornith-1.0-9B、Qwen3.5-9B
1.对本地模型选型,鄙人自己玩了三个模型,不过建议qwen2.5-coder-7b-instruct-q8_0.gguf模型,为了方便叙述,流程就只使用qwen2.5-coder-7b-instruct-q8_0这个模型。去hugging face或者魔搭社区搜索qwen2.5-coder-7b-instruct-q8_0 GGUF,只需要下载.gguf格式的模型单文件即可(不知道可以ai、百度、谷歌都可以为什么.gguf单文件就行了)。下载下来后放到models文件夹下。
2.去llama.cpp官网进行对应的版本下载,鄙人电脑是有显卡的,所以cpu版本的、cuda版本的我都下载了,参考版本为llama-b9873-bin-win-cpu-x64.zip(cpu版本)和llama-b9873-bin-win-cuda-12.4-x64.zip(cuda版本),这两个任意下载一个即可,也可以下载两个,下载后,解压到engine文件夹下,并把cpu版本的命名为cpu,cuda版本的命名为cuda12。
3.之后双击运行cpu-start.bat、cuda-start.bat、LocalAPI-start.bat三个脚本文件其中任意一个即可(可以看看脚本文件里面写的命令,很简单的,一看便明白了),之后就可以愉快与AI交互了,但注意自己的内存与显存,所以还是得自己编辑一下脚本文件设置上下文token数量。
4.引入RAG技术,就是My_RAG这个文件夹下的一些python代码(其实代码很简单的,查看代码就知道流程了,代码顺序为build_db_diy.py --> view_db.py --> search_db.py --> mcp_server.py )。大致流程就是,下载一个把文本块转换为高维嵌入向量表示的小模型,之后先对docs文件夹下的参考资料进行分块(防止编码后信息塌缩),再用小模型进行编码并存储到向量数据库my_nano_db.pt中。再使用余弦相似度来度量模型到底要选取向量数据库里面的哪些文本块作为参考资料,取得分最高的几个,之后配置Cline,完成,最后可以硬约束agent里发送给模型的提示词,让模型强制要调用自己定义好的MCP。
NOTES这章下面的没必要看,是鄙人自己的杂记,实验日志罢了,鄙人可以看看回忆回忆。
1.local ai agent desktop pet,本地动漫桌宠(类似开源项目AIRI,感觉和galgame的ATRI那个设想很像)
2.微调一个视觉语言模型,并配合Zvec+RAG技术,搭建一个学术专属助手(根据网络架构图以及描述编写网络结构编码)
1和2都未完成,都没时间做,作为后续将来的计划。
1.加入RAG技术,通过chromadb库来当作本地存储向量库。
- chromadb:极速本地向量数据库引擎。
- sentence-transformers:用来加载并运行那个“小巧的 Embedding 高维嵌入向量计算模型”。
- langchain-text-splitters:用来把长篇文本“切碎(Chunking)”的工具。
因为我使用了WinPython这个东西(方便便携式U盘部署),底层的c++动态链接库总是会报错,所以没有使用chromadb这个库了,直接手写的向量数据库。
1.在winpython这个运行python脚本文件时,报错”c10.dll“动态链接库。后面照着StackOverflow里面的回答里面随机挑了一个pip install torch==2.8.0 torchvision==0.23.0 torchaudio==2.8.0,结果成功了,其余的回答看着太麻烦了,就没选,选个最简单的解答结果就解决了这个动态链接库报错问题。