前言
笔者接触生成式 AI 已有一年半载,但都停留在直接使用现成模型进行网页对话。
因在早期便接触了 AI,刻板私自以为部署本地模型是一件非常困难的事情,没想到最近看到一篇文章,才知道现在已有不少成熟方案,部署似乎不是很难的样子。
二话不说,连夜开搞!
这次选用的方案为 Ollama+Open-webui
ollama是一个方便下载、运行大模型的工具,还提供了 Api 的对接方案,Open-webui是一个便于与大模型交互的网页 GUI 项目,可通过本地大模型预留的 Api 实现图像、文件上传、知识库预载等功能。
Ollama
安装 ollama 非常简单,以 windows 为例,你只需要打开他们的官网: https://ollama.com/ ,点击 Download 即可。
下载结束后,只需打开 cmd
,预载所需的大模型即可。
以 llama
模型为例,你只需要打开网页 https://ollama.com/library/llama2 ,选择所需的模型,然后在 cmd
运行一键命令 ollama run llama2
即可。
这里模型的选用记得视自己的硬件措施选定,以 7b
模型为例,你至少需要 8GB 的运存
- 7b models generally require at least 8GB of RAM
待下载大模型结束后,就可以进行对话了。
不过这样对话似乎不够优雅,于是就有了下一步:安装 Open-webui.
Open-webui
Open-webui 官方给出的搭建十分简单,用 docker 一键命令即可。
不过,想在 Windows 上使用 docker,倒是需要费些功夫。
你需要创建一个虚拟主机,或者是用 linux
子系统基础上再部署 docker。
具体安装 docker 方案可以查看这篇教程:Windows系统安装WSL,并安装docker服务
安装好后,当 docker 正常启动时,输入一键命令即可启动:
docker run -d -p 3000:8080 --add-host=host.docker.internal:host-gateway -v open-webui:/app/backend/data --name open-webui --restart always ghcr.io/open-webui/open-webui:main
这里因笔者自己 3000
端口被占用,导致没跑起来,遇到同样情况的朋友不妨换个端口试试。
运行 docker run
之后,访问本地 http://localhost:port/
即可访问 Open-webui
由于 llama2
是国外模型,本身对于中文的支持就很差,更不要说参数不足的小模型了,表现可谓一塌糊涂。
因此这里笔者使用的是阿里通义千文开源的 Qwen 1.5 大模型。
不过即使是声称国内的大模型,还是频繁出现中英混杂的现象,这与现有的网页对话 Ai 的表现相去甚远。
在运算时, CPU 基本跑满,生成速度则勉强可以接受。
Obsidian Copilot
Obsidian Copilot是一款 Obsidian 插件,支持本地部署的 ollama 模型。
你只需要根据下方选择对应的模型、模型名、请求链接即可。
详细的部署教程可以参考这个视频:使用Copilot插件使用本地AI模型服务
值得一提的是,由于 Obsidian 是一款基于 Electron 框架的软件,所以这种利用 Api 请求的方式,似乎会导致跨域 (Cos)请求问题。
你可以尝试使用 Ctrl+Shift+I
打开后台日志,如果看到报错有 COS
字样,便说明你也遇到了相似的问题。
作者给出了解决方案,退出 ollama
,然后在你的 Powershell 下运行如下指令即可:
ollama pull <model>
# Remember to close the Ollama app first to free up the port
$env:OLLAMA_ORIGINS="app://obsidian.md*"; ollama serve
但由于我能跑的本地模型本身并不出色,回答等待的时间大约又在两分钟左右,可以说,这样做简直性价比奇低,如果没有什么敏感信息或是赛博洁癖,还不如复制全篇笔记丢到 Claude / ChatGPT 上去。
害,于是我的笔记+AI 的小小梦想又这么破裂了,又是白忙活一场。