Ollama简介
Ollama 是一个用于本地化部署和管理大型语言模型(LLM)的工具。它支持多种开源模型(如 LLaMA、Alpaca 等),并提供了简单的 API 接口,方便开发者调用。Ollama可以让你在自己的电脑上运行各种强大的 AI 模型,就像运行普通软件一样简单。
Ollama本地部署有什么好处
隐私与数据安全
本地部署确保所有数据处理和模型推理均在用户自己的设备上完成,避免敏感数据上传至第三方服务器。对于涉及商业机密或个人隐私的应用场景,本地部署能有效降低数据泄露风险。
离线可用性
无需依赖网络连接即可运行,适合网络不稳定或完全离线的环境(如内网、偏远地区)。模型响应速度不受带宽限制,尤其对实时性要求高的任务(如实时翻译、对话)更具优势。
定制化与灵活性
用户可自由选择模型版本(如Llama 2、Mistral等),并针对特定需求微调模型参数或训练数据。本地部署允许深度集成到现有工作流中,不受云服务API的限制。
长期成本优化
虽然初始硬件投入较高(如需要GPU支持),但长期使用可避免云服务的按量计费或订阅费用。对于高频使用场景,本地部署的总成本可能更低。
性能可控性
本地部署允许直接控制计算资源分配(如CPU/GPU优先级、内存占用),避免云服务的多租户资源竞争问题。用户可根据实际需求调整批处理大小、线程数等参数以优化性能。
合规与审计
某些行业(如医疗、金融)对数据存储和计算有严格合规要求。本地部署简化了合规流程,所有操作日志和数据留存均可自主管理,便于审计追踪。
安装Ollama
下载Ollama
访问Ollama官方网站(https://ollama.com/),根据操作系统选择对应的安装包:
- Windows:下载
.exe
安装程序并运行。 - macOS:下载
.dmg
文件并拖拽到应用程序文件夹。 - Linux:通过命令行下载,例如:
curl -fsSL https://ollama.com/install.sh | sh
注:
-
模型默认安装在C盘,可以修改安装路径
-
点击环境变量,选择下面新建一个系统环境变量 OLLAMA_MODELS ,然后指定想要安装模型的路径 ,比如 “D:\Ollama”
-
需要重启 Ollama生效
启动Ollama服务
安装完成后,启动Ollama服务:
- Windows/macOS:通过桌面图标或应用程序列表启动。
- Linux:运行以下命令启动服务:
ollama serve
下载Deepseek模型
硬件配置建议
-
GPU选择(根据模型大小灵活调整):
入门配置:NVIDIA显卡(≥8GB显存) → 适合7B/8B模型。
高性能配置:NVIDIA显卡(≥16GB显存) → 支持14B大模型。
无独立显卡用户:可使用CPU模式运行(速度约为GPU的20%)。 -
内存要求:≥16GB(推荐32GB,处理长文本时不易卡顿)
-
存储空间:≥50GB可用空间(建议SSD硬盘,加快模型加载速度)
-
操作系统:
Windows 10/11(21H2及以上版本)。
macOS Ventura 13.4+。
Ubuntu 22.04 LTS/24.04 LTS
选择适合自己的版本 https://ollama.com/library/deepseek-r1
使用ollama pull
命令下载模型,以1.5b举例:
ollama pull deepseek-r1:1.5b
等待模型下载完成,具体时间取决于网络速度和模型大小。
运行模型
下载完成后,通过以下命令与模型交互:
ollama run deepseek-r1:1.5b
输入问题或指令,模型会生成响应。例如:
>>> 你好
Spring AI部署代码
pom文件
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.example</groupId>
<artifactId>ollama</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>jar</packaging>
<name>ollama</name>
<description>Demo project for Spring Boot</description>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>3.3.8</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<properties>
<maven.compiler.source>17</maven.compiler.source>
<maven.compiler.target>17</maven.compiler.target>
<spring-ai.version>1.0.0-M5</spring-ai.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.ai</groupId>
<artifactId>spring-ai-ollama-spring-boot-starter</artifactId>
<version>1.0.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<scope>provided</scope>
</dependency>
</dependencies>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.ai</groupId>
<artifactId>spring-ai-bom</artifactId>
<version>${spring-ai.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<!--下载spring-ai相关包需要用到的仓库地址-->
<repositories>
<repository>
<id>spring-milestones</id>
<name>Spring Milestones</name>
<url>https://repo.spring.io/milestone</url>
<snapshots>
<enabled>false</enabled>
</snapshots>
</repository>
<repository>
<id>spring-snapshots</id>
<name>Spring Snapshots</name>
<url>https://repo.spring.io/snapshot</url>
<releases>
<enabled>false</enabled>
</releases>
</repository>
</repositories>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
yml配置文件
spring:
ai:
ollama:
base-url: http://localhost:11434
model: deepseek-r1:1.5b
chat:
options:
model: deepseek-r1:1.5b
temperature: 0.7
代码
package org.example.service;
import lombok.RequiredArgsConstructor;
import org.springframework.ai.chat.prompt.Prompt;
import org.springframework.ai.chat.prompt.SystemPromptTemplate;
import org.springframework.ai.ollama.OllamaChatModel;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.Map;
@RequiredArgsConstructor
@Service
public class AiService {
@Autowired
private OllamaChatModel ollamaChatModel ;
// 简单的直接调用
public String generate(String message) {
return ollamaChatModel .call(message);//返回文本
}
}