ChatOllama 是一个基于 LLM 的开源聊天机器人,支持本地模型和知识库管理。下面是一份详细的部署教程,涵盖 Docker 和本地开发两种方式。


ChatOllama 详细部署教程

1. 项目简介

ChatOllama 是一个基于大型语言模型(LLMs)的开源聊天机器人,支持多种语言模型和知识库管理。它提供类似 ChatGPT 的用户界面,支持模型管理、知识库管理、自由聊天以及基于知识库的聊天功能。

核心功能:

  • 支持 Ollama 本地模型、OpenAI、Azure OpenAI、Anthropic、Moonshot、Gemini、Groq 等多种 LLM 提供商
  • 知识库管理(基于向量数据库)
  • 模型管理(列出、下载、删除)
  • 支持文本和图像输入

2. 部署前准备

在开始部署之前,请确保你的系统满足以下要求:

2.1 硬件要求

  • 基础配置:4核 CPU + 8GB 内存(支持 7B 参数模型)
  • 进阶配置:8核 CPU + 16GB 内存(支持 13B 参数模型)
  • 磁盘空间:至少预留 20GB 用于模型存储

2.2 软件要求

  • Docker 和 Docker Compose(推荐方式)
  • Node.js + pnpm(本地开发方式)
  • Ollama 服务器(必须)

3. 方式一:使用 Docker 部署(推荐)

这是最简单快捷的部署方式,适合大多数用户。

3.1 安装 Ollama 服务器

首先需要在本地安装并运行 Ollama 服务器。根据你的操作系统选择安装方式:

Linux 系统:

1
curl -fsSL https://ollama.com/install.sh | sh

macOS 系统:
访问 Ollama 官网下载 macOS 版本的安装包,将 Ollama 应用拖拽至 Applications 文件夹。

Windows 系统:
访问 Ollama 官网获取 Windows 安装包,运行安装程序并按照向导完成安装。安装完成后,Ollama 会自动在后台运行。

安装完成后,验证 Ollama 是否正常运行:

1
ollama --version

默认情况下,Ollama 服务器运行在 http://localhost:11434

3.2 下载并配置 ChatOllama

步骤 1:克隆项目仓库

1
2
git clone https://github.com/sugarforever/chat-ollama.git
cd chat-ollama

步骤 2:检查 docker-compose.yaml 文件

确保 Ollama 服务器的地址设置正确。如果 Ollama 运行在本地默认端口,配置如下:

1
2
3
4
5
6
7
services:
chatollama:
image: chatollama:latest
ports:
- "3000:3000"
environment:
OLLAMA_SERVER: "http://host.docker.internal:11434"

3.3 启动服务

步骤 1:启动 Docker 容器

1
docker compose up

步骤 2:初始化 SQLite 数据库

如果你是第一次启动 Dockerized ChatOllama,需要初始化 SQLite 数据库:

1
docker compose exec chatollama npx prisma migrate dev

步骤 3:下载嵌入模型(用于知识库功能)

如果要使用知识库功能,需要下载一个嵌入模型。推荐使用 nomic-embed-text

1
docker compose exec ollama ollama pull nomic-embed-text:latest

你也可以在 Models 页面(http://localhost:3000/models)进行下载。

3.4 访问 ChatOllama

打开浏览器,访问 http://localhost:3000,你应该能看到 ChatOllama 的界面。

重要设置: 由于 ChatOllama 运行在 Docker 容器内,你需要在设置中将 Ollama 服务器地址设置为 http://host.docker.internal:11434(假设 Ollama 运行在本地默认端口)。

4. 方式二:本地开发部署

如果你想使用最新的代码库并根据需要进行修改,可以采用这种方式。

4.1 安装 Ollama 服务器

参考 3.1 节的步骤安装 Ollama 服务器。默认运行在 http://localhost:11434

4.2 安装 ChromaDB

ChatOllama 支持 Chroma 和 Milvus 两种向量数据库,默认使用 Chroma。

推荐使用 Docker 运行 ChromaDB:

1
2
docker pull chromadb/chroma
docker run -d -p 8000:8000 chromadb/chroma

现在 ChromaDB 运行在 http://localhost:8000

4.3 配置 ChatOllama

步骤 1:复制环境变量文件

1
cp .env.example .env

步骤 2:安装依赖

1
pnpm install

步骤 3:运行数据库迁移

使用 Prisma Migrate 创建数据库表:

1
pnpm prisma-migrate

4.4 启动开发服务器

确保 Ollama 服务器ChromaDB 都在运行,然后启动开发服务器:

1
pnpm dev

访问 http://localhost:3000 即可使用 ChatOllama。

5. 向量数据库配置

ChatOllama 支持两种向量数据库,你可以在 .env 文件中进行配置:

1
2
3
4
# 支持的值:chroma, milvus
VECTOR_STORE=chroma
CHROMADB_URL=http://localhost:8000
MILVUS_URL=http://localhost:19530

默认使用 Chroma。如果想使用 Milvus,将 VECTOR_STORE 设置为 milvus 并指定相应的 URL。

6. 嵌入模型配置

使用知识库功能需要配置有效的嵌入模型。你可以选择以下两种方式:

6.1 使用 Ollama 嵌入模型

推荐下载 nomic-embed-text 模型:

1
2
# 如果在 Docker 中运行
docker compose exec ollama ollama pull nomic-embed-text:latest

6.2 使用 OpenAI 嵌入模型

如果偏好使用 OpenAI,请在设置中设置有效的 OpenAI API Key,并填入以下嵌入模型之一:

  • text-embedding-3-large
  • text-embedding-3-small
  • text-embedding-ada-002

7. 数据存储说明

Docker 部署方式下有两种类型的数据存储:

7.1 向量数据(ChromaDB)

Chroma 数据库与 ChatOllama 一起运行在 Docker 容器中,数据持久化在 Docker 卷中。

7.2 关系数据(SQLite)

SQLite 数据库文件从 ~/.chatollama/chatollama.sqlite 挂载并持久化。

8. GPU 加速配置

如果你的系统有 NVIDIA GPU,可以使用 docker-compose_gpu.yaml 配置文件来启用 GPU 加速:

1
docker compose -f docker-compose_gpu.yaml up

该配置文件包含 NVIDIA GPU 驱动配置,可以显著提升模型推理速度。

9. 常见问题与解决方案

9.1 首次启动时数据库未初始化

问题:启动后无法正常使用。

解决方案:确保执行数据库迁移命令:

1
docker compose exec chatollama npx prisma migrate dev

9.2 无法连接到 Ollama 服务器

问题:ChatOllama 无法连接到 Ollama。

解决方案:在 Docker 部署中,需要在设置中将 Ollama 服务器地址设置为 http://host.docker.internal:11434

9.3 模型下载失败

问题:外部提供商(如 OpenRouter、DeepSeek)的模型无法下载。

解决方案:这是一个已知问题,外部提供商的模型无需下载即可使用。项目已在后续版本中修复了此问题。

9.4 更新项目后出现问题

问题:执行 git pull 后应用无法正常运行。

解决方案:每次 git pull 后需要重新运行:

1
2
pnpm install
pnpm prisma-migrate

10. 访问和使用

完成部署后,打开浏览器访问 http://localhost:3000,你将看到 ChatOllama 的聊天界面。

主要功能入口:

  • 模型管理http://localhost:3000/models
  • 设置页面:配置 Ollama 服务器地址、API Key 等
  • 知识库管理:创建和管理知识库

你可以开始与本地 LLM 模型进行对话,或上传文档创建知识库进行基于知识库的问答。


注意事项:该项目处于活跃开发中,功能和接口可能会有变化。建议定期查看项目仓库获取最新信息。