前言

笔者接触生成式 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 即可。

xfjjo

这里模型的选用记得视自己的硬件措施选定,以 7b 模型为例,你至少需要 8GB 的运存

- 7b models generally require at least 8GB of RAM

待下载大模型结束后,就可以进行对话了。

不过这样对话似乎不够优雅,于是就有了下一步:安装 Open-webui.

Open-webui

Open-webui 官方给出的搭建十分简单,用 docker 一键命令即可。

不过,想在 Windows 上使用 docker,倒是需要费些功夫。

你需要创建一个虚拟主机,或者是用 linux 子系统基础上再部署 docker。

9kpt6

具体安装 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 的表现相去甚远。

gof3i

在运算时, CPU 基本跑满,生成速度则勉强可以接受。

Obsidian Copilot

Obsidian Copilot是一款 Obsidian 插件,支持本地部署的 ollama 模型。

你只需要根据下方选择对应的模型、模型名、请求链接即可。

详细的部署教程可以参考这个视频:使用Copilot插件使用本地AI模型服务

syt84

nlmfa

值得一提的是,由于 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 的小小梦想又这么破裂了,又是白忙活一场