感谢您点开这篇文章:D,鼠鼠我是一个代码小白,下文是学习开源项目Open WebUI过程中的一点笔记记录,希望能帮助到你~
本人菜鸟,持续成长,能力不足有疏漏的地方欢迎一起探讨指正,比心心~
通过本文,您可以了解:
-
Open WebUI项目的基本信息和架构
-
通过ollama部署大模型、通过docker镜像和源码运行Open WebUI项目的方法
-
项目后端代码在多情景(普通提问、联网搜索提问、上传PDF文件且联网提问、上传PDF文件非联网提问)下的相关代码实现逻辑
-
RAG****模块实现逻辑流程
目录
1.3.2.2、webui/models(重点,数据库实体)
1.3.2.4、openai/chat_interceptor
情景2:用户进行联网搜索提问“武汉今天天气如何”时,代码调用逻辑:
情景3.1:用户上传PDF文件,让其帮忙总结(联网搜索功能关闭),代码逻辑:
情景3.2:用户上传PDF文件,让其帮忙总结,(联网搜索功能开启),代码逻辑:
一、项目基本信息
-
Github:https://github.com/open-webui/open-webui
-
官方文档:https://docs.openwebui.com/getting-started/
-
代码版本:v0.3.32(2024.10.6)——本文学习版本,目前最新版本已更新至v0.3.35(截至2024.10.28)
二、运行项目源码
**作者本地环境:**Ubuntu24.04,纯CPU
通过ollama部署大模型qwen2:7b作为模型端,通过Open WebUI提供用户chat服务。
1、通过ollama部署大模型
ollama是大模型部署方案,对应docker,本质也是基于docker的容器化技术
1.1、安装ollma
官方地址:https://ollama.com/
开源地址:https://github.com/ollama/ollama
打开官网,点击Downloard,根据操作系统选择对应下载方式。
以Ubuntu24.04为例,通过下述命令下载:
curl -fsSL https://ollama.com/install.sh | sh
#下载完成后查询版本信息
ollama -v
#查看状态
如上,ollama已经成功安装。
1.2、配置ollama
通过编辑ollama.service进行配置:
sudo vim /etc/systemd/system/ollama.service
- 更改HOST
由于Ollama的默认参数配置,启动时设置了仅本地访问,因此需要对HOST进行配置,开启监听任何来源IP。
[Service]
# 配置远程访问
Environment="OLLAMA_HOST=0.0.0.0"
- 更改模型存储路径
默认情况下,不同操作系统大模型存储的路径如下:
macOS: ~/.ollama/models
Linux: /usr/share/ollama/.ollama/models
Windows: C:Users.ollamamodels
如果要修改模型文件的存储路径,设置如下:
[Service]
# 配置OLLAMA的模型存放路径
Environment="OLLAMA_MODELS=/data/ollama/models"
如果因为指定的目录ollama用户及用户组没有相应权限,导致服务不能启动。可以通过授权给相应的目录权限解决问题:
chown ollama:ollama ollama/models
- 应用配置
重载systemd并重启Ollama
systemctl daemon-reload
systemctl restart ollama
配置完成后,访问测试。浏览器访问http://IP:11434/,出现Ollama is running代表成功。
1.3、下载模型
ollama的命令和docker操作命令非常相似。可通过shell窗口输入ollama查看相关命令:
******:~/work# ollama
Usage:
ollama [flags]
ollama [command]
Available Commands:
serve Start ollama
create Create a model from a Modelfile
show Show information for a model
run Run a model
pull Pull a model from a registry
push Push a model to a registry
list List models
ps List running models
cp Copy a model
rm Remove a model
help Help about any command
Flags:
-h, --help help for ollama
-v, --version Show version information
Use "ollama [command] --help" for more information about a command.
由上可知ollama相关命令:
ollama serve # 启动ollama
ollama create # 从模型文件创建模型
ollama show # 显示模型信息
ollama run # 运行模型
ollama pull # 从注册仓库中拉取模型
ollama push # 将模型推送到注册仓库
ollama list # 列出已下载模型
ollama cp # 复制模型
ollama rm # 删除模型
ollama help # 获取有关任何命令的帮助信息
-
拉取qwen2-7b模型
ollama pull qwen2:7b
#下载成功查看模型
ollama list
可见,已成功拉取:
也可以自定义模型,所谓自定义模型就是不适用Ollama官方模型库中的模型,理论可以使用其他各类经过转换处理的模型,有从GGUF导入和从PyTorch或Safetensors导入两种方式。
所谓从从PyTorch或Safetensors导入Ollama,其实就是使用llama.cpp项目,对PyTorch或Safetensors类型的模型进行转换、量化处理成GGUF格式的模型,然后再用Ollama加载使用 。