DeepSeek、WebGUI、RAG本地部署实践
部署本地LLM
本地部署一个deepseek-r1:8b
如果没有太多定制化和性能需求,暂不考虑vllm等框架。
简单起见,我们使用ollama,参见官网 https://ollama.com/。
点击下载
下载后直接安装即可,这里本人使用的是Macbook M1,所以没有考虑GPU的问题,有GPU的小伙伴可以再搜一下。
安装完就可以直接命令行开始运行,运行成功后即可对话,非常简单。
ollama run deepseek-r1:8b
ollama默认在11434端口启动HTTP API服务,部署完之后即可使用,接下来的WebGUI和RAGFlow都可以基于此HTTP API集成本地的ollama。
使用本地LLM的聊天WebGUI
google搜索ollama GUI,有两个选择
- ollama-gui
- Open-webui
ollama-gui
github https://github.com/HelgeSverre/ollama-gui
有几种部署的办法
- 下载项目部署
- 用部署好的网页,但是使用本地的LLM
- Docker
这里我们选择部署好的网页,直接打开https://ollama-gui.vercel.app,在右边填上http://localhost:11434/api即可
Open-webui
github https://github.com/open-webui/open-webui
其支持
- python pip下载部署
- docker部署
我们这里使用docker部署,命令如下。其中host.docker.internal:host-gateway是docker容器视角中宿主机的地址,让容器中的open-webui可以访问宿主机本地部署的ollama LLM。
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
容器运行后浏览器打开 http://localhost:3000/,一路确定配置一下账号就可以了
这个页面比ollama-gui好看,风格和现在的Chatgpt页面一样
部署本地RAG服务
RAG的技术如下所示,其需要
- 知识库:一些相关的文本、语音数据,给用户搜索提供上下文
- embedding模型:用来embed用户输入和知识库
- 向量数据库:存储知识库,根据数据(如文本)相似度检索相关上下文数据
- LLM:处理输入的prompt,生成结果
在这里参考网上教程,我们使用ragflow
- 容易安装
- 可以集成主流chat、embedding、Rerank、Img2txt、Sequence2txt和TTS模型,支持本地部署模型或OpenAPI
- 提供知识库的解析存储
docker部署
这里我们选择docker的模式部署,参考官网的文档 https://ragflow.io/docs/dev/#start-up-the-server
首先,确保vm.max_map_count
大于262144。这个变量的值是一个进程中内存映射的最大数量,简单来说RAGFlow运行需要其大于262144,否则可能会内存不足OOM。
下载repo,使用最新tag v0.17.0
git clone https://github.com/infiniflow/ragflow.git
cd ragflow/docker
git checkout -f v0.17.0
使用预构建的 Docker 镜像并启动服务器
项目中docker配置默认使用的是v0.17.0-slim
轻量版不含embedding模型。
我们改成v0.17.0
完整版
运行docker命令
docker compose -f docker-compose.yml up -d
等容器起来后,服务默认部署在80端口,在浏览器打开http://localhost,一路确定配置一下账号
可以看到下图