大模型实战一、Ollama+RagFlow 部署本地知识库
参考你提供的文章,这里是基于 Windows 系统通过 Docker 安装部署 RagFlow 和 Ollama 的本地化大模型知识库的详细教程。本文将指导你如何在 Windows 上使用 Docker 来设置 RagFlow 和 Ollama 环境,并安装通义千问2 7B大模型和支持中文的 Embedding 模型。
在 Windows 上通过 Docker 安装和部署 RagFlow 和 Ollama
1. 环境准备
确保你的系统满足以下条件:
- Windows 10 或更高版本
- Docker Desktop 已安装并启用 WSL 2 后端
1.1 安装 Docker Desktop
如果你还没有安装 Docker Desktop,请按照以下步骤进行安装:
- 下载 Docker Desktop:Docker Desktop 官网
- 运行安装程序,按照提示完成安装。
- 启用 WSL 2 后端:
- 打开 Docker Desktop,进入 Settings > General,勾选 "Use the WSL 2 based engine"。
- 确保已安装并启用了 WSL 2。可以参考 微软官方指南 来完成 WSL 2 的安装和启用。
1.2 启动 Docker Desktop
安装完成后,启动 Docker Desktop,确保 Docker 正常运行。可以通过命令行验证 Docker 版本来确认安装成功:
powershell
docker --version
2. 安装 RagFlow 和 Ollama
RagFlow 和 Ollama 是用于管理和部署大模型知识库的关键工具。
2.1 拉取 Ollama 镜像
Ollama 是一个专注于大语言模型管理的工具,使用 Docker 容器来运行模型。
-
在终端中运行以下命令来拉取 Ollama 镜像:
bashdocker pull ollama/ollama
-
运行 Ollama 容器:
bashdocker run --rm -it --name ollama-cli ollama/ollama:latest
2.2 安装 RagFlow
RagFlow 是一个用于构建和管理信息检索生成流的工具。我们可以使用 Docker 容器来安装 RagFlow。
-
拉取 RagFlow 镜像:
bashdocker pull ragflow/ragflow:latest
-
运行 RagFlow 容器:
bashdocker run --rm -it --name ragflow-cli ragflow/ragflow:latest
3. 安装通义千问2 7B 模型
通义千问2 7B 是一个中文语言模型,可以用于构建本地化知识库。
3.1 下载并安装通义千问2 7B 模型
-
使用 Ollama CLI 来下载通义千问2 7B 模型:
bashollama pull tongyi/qwen-7b-chat
这将下载并准备模型以便于后续使用。
3.2 运行模型容器
-
使用 Ollama 运行通义千问2 7B 模型:
bashdocker run --rm -it --name qwen-7b-chat ollama/tongyi-qwen-7b-chat
你可以通过指定模型参数和配置来调整模型的运行行为。
4. 设置支持中文的 Embedding 模型
为了使 RagFlow 能够处理中文文本并进行向量化,我们需要安装一个支持中文的 Embedding 模型,例如 m3e-base
。
4.1 安装 transformers 和 sentence-transformers 库
-
创建一个 Docker 容器来安装和运行 Python 及相关库:
bashdocker run --rm -it --name embedding-env python:3.8-slim bash
-
在容器内部安装所需的库:
bashpip install transformers sentence-transformers
4.2 下载和加载 Embedding 模型
我们可以使用以下 Python 代码来加载 m3e-base
模型:
python
from sentence_transformers import SentenceTransformer
# 加载中文嵌入模型
embedding_model = SentenceTransformer('moka-ai/m3e-base')
你可以将上述代码保存为脚本,并在 Docker 容器中执行它。
5. 整合 RagFlow 和 Ollama,构建本地知识库
现在,我们可以通过 RagFlow 和 Ollama 集成来构建一个本地化知识库系统。
5.1 初始化 RagFlow 项目
在 Docker 容器中初始化一个新的 RagFlow 项目:
bash
docker exec -it ragflow-cli ragflow init my-local-knowledgebase
cd my-local-knowledgebase
5.2 添加中文 Embedding 和模型配置
编辑 config.yml
文件,配置 RagFlow 使用 Ollama 模型和中文嵌入:
yaml
embedding:
model: "moka-ai/m3e-base"
retriever:
type: "local"
index_path: "./index"
model:
type: "ollama"
model_name: "tongyi/qwen-7b-chat"
container_engine: "docker"
5.3 构建知识库索引
将你希望添加到知识库的中文文档或文本进行索引。假设我们有一些中文文档放在 data/
目录中:
bash
docker exec -it ragflow-cli ragflow index --data-dir ./data
5.4 运行知识库查询服务
使用 RagFlow 启动查询服务:
bash
docker exec -it ragflow-cli ragflow serve
你现在可以通过 REST API 或命令行工具查询本地化的中文知识库。
6. 测试部署
通过命令行或 HTTP 请求测试你的本地化知识库:
bash
curl -X POST http://localhost:8000/query -H "Content-Type: application/json" -d '{"query": "通义千问2的主要功能是什么?"}'
7. 完成部署和调优
根据实际需求进一步调优模型和检索配置,添加更多的自定义功能和业务逻辑。
总结
通过以上步骤,你已经成功在 Windows 系统上通过 Docker 部署了一个本地化的大模型知识库,结合 RagFlow 和 Ollama,安装了通义千问2 7B 模型和中文 Embedding 模型,构建了一个支持中文问答的系统。这种设置适用于企业内部知识管理、自动化客服、智能问答等场景。