Ollama 概述
Ollama 是一个快速运行 LLM(Large Language Models,大语言模型)的简便工具。通过 Ollama,用户无需复杂的环境配置,即可轻松与大语言模型对话互动。它支持在本地部署,有效保护数据隐私,同时降低了大模型的使用门槛。
本文将深入解析 Ollama 的整体架构设计,并详细讲解用户在与 Ollama 进行对话时的具体处理流程,帮助开发者理解其底层机制。
Ollama 整体架构

Ollama 采用了经典的客户端 - 服务器(Client-Server, CS)架构模式,这种设计使得系统具有良好的扩展性和解耦性。
组件说明
-
Client(客户端): 通常通过命令行界面(CLI)与用户交互。用户可以通过终端输入指令来管理模型、发起对话或查询状态。CLI 负责将用户的意图转换为 HTTP 请求发送给服务端。
-
Server(服务端): 可以通过命令行、桌面应用(基于 Electron 框架)、Docker 容器中的一种方式启动。无论采用何种启动方式,最终调用的都是同一个核心可执行文件。服务端负责监听请求、调度资源并返回结果。
-
通信协议: Client 与 Server 之间使用标准的 HTTP 协议进行通信,这使得
Ollama易于集成到各种编程语言和系统中。
核心模块
Ollama Server 内部包含两个核心部分,它们协同工作以完成推理任务:
-
ollama-http-server: 这是
Ollama的主服务进程,负责接收来自客户端的 HTTP 请求,进行参数校验、会话管理,并协调后端引擎的工作。 -
llama.cpp: 作为 LLM 推理引擎,
llama.cpp负责加载模型权重、执行矩阵运算并生成文本。它是一个独立的开源项目,具备优秀的跨平台能力和硬件友好性,可以在没有 GPU 的设备(如 CPU 甚至树莓派)上运行。
ollama-http-server 与 llama.cpp 之间也是通过 HTTP 进行交互,这种内部微服务化的设计增强了系统的模块化程度。
Ollama 存储结构
Ollama 本地存储默认使用的文件夹路径为 $HOME/.ollama(Linux/macOS)或 %USERPROFILE%\.ollama(Windows)。其文件结构设计借鉴了云原生领域的最佳实践。

文件分类
本地存储中的文件主要可分为三类:
-
日志文件: 包括记录了用户对话输入的
history文件,用于保存上下文记忆;以及logs/server.log服务端日志文件,用于排查运行时问题。



