前言

随着大模型技术的普及,企业对数据安全、隐私合规的要求越来越高,离线部署大模型成为 Java 后端开发者的核心需求。Spring AI 作为 Spring 生态的 AI 集成框架,搭配 Ollama 本地大模型运行工具,可快速构建完全离线、数据不出网的 AI 应用。本文基于实战场景,从零带你完成环境搭建、API 集成、功能开发,适合 Java 后端开发者快速上手 Spring AI 离线大模型开发。


一、技术选型与核心优势

1. 核心技术栈

技术 作用 优势
Spring AI Spring 生态 AI 集成框架 无缝对接 Spring Boot,统一大模型调用 API,支持多模型适配
Ollama 本地大模型运行工具 一键部署开源大模型(Llama 3、Qwen、Mistral 等),支持离线运行
Spring Boot 3.x 后端基础框架 快速构建项目,自动配置简化开发

2. 方案核心优势

  • 完全离线:所有数据在本地服务器运行,无需公网 API,保障数据安全
  • 生态兼容:Spring AI 完美适配 Spring Boot,可直接集成现有 Java 项目
  • 模型灵活:Ollama 支持上百种开源大模型,可按需切换,适配不同业务场景
  • 开发高效:Spring AI 封装了大模型调用、提示词管理、向量检索等能力,减少重复开发

二、环境搭建:Ollama+Spring Boot 项目初始化

1. Ollama 本地部署(Windows/Linux/Mac 通用)

  1. 下载 Ollama:官网 https://ollama.com/ ,一键安装完成
  2. 拉取开源大模型(以 Qwen 7B 为例,适合本地部署)

    bash

    # 拉取通义千问开源7B模型
    ollama pull qwen:7b
    # 验证模型是否安装成功
    ollama list
    # 启动模型服务(默认端口11434)
    ollama run qwen:7b
    
  3. 验证服务:访问 http://localhost:11434 ,出现 Ollama 标识即部署成功

2. Spring Boot 项目初始化

  1. 使用 Spring Initializr 创建项目,依赖选择:
    • Spring Web
    • Spring AI Ollama(Spring AI 0.8.x + 版本支持)
  2. pom.xml 核心依赖配置:

    xml

    <dependency>
        <groupId>org.springframework.ai</groupId>
        <artifactId>spring-ai-ollama-spring-boot-starter</artifactId>
        <version>0.8.1</version>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    
  3. application.yml 配置 Ollama 连接:

    yaml

    spring:
      ai:
        ollama:
          base-url: http://localhost:11434
          model: qwen:7b # 对应Ollama中拉取的模型
    

三、核心功能实战:从基础对话到业务集成

1. 基础大模型对话接口开发

创建 AI 服务接口,实现与本地大模型的对话交互:

java

@RestController
@RequestMapping("/ai")
public class AIController {

    @Autowired
    private OllamaChatClient ollamaChatClient;

    @GetMapping("/chat")
    public String chat(@RequestParam String prompt) {
        // 调用本地大模型生成回复
        return ollamaChatClient.call(prompt);
    }
}

启动项目后,访问 http://localhost:8080/ai/chat?prompt=介绍一下Spring AI ,即可获取本地大模型的回复,全程离线无公网请求。

2. 提示词工程优化:提升大模型输出质量

Spring AI 支持提示词模板,可动态注入参数,适配业务场景:

java

@GetMapping("/chat/template")
public String chatWithTemplate(@RequestParam String question) {
    PromptTemplate promptTemplate = new PromptTemplate(
        "你是一名资深Java后端工程师,用通俗易懂的语言回答用户问题:{question}"
    );
    Prompt prompt = promptTemplate.create(Map.of("question", question));
    return ollamaChatClient.call(prompt).getResult().getOutput().getContent();
}

3. 进阶功能:RAG 检索增强生成(本地知识库)

结合 Ollama 的向量模型,构建本地知识库,实现基于自有数据的问答:

  1. 配置向量模型:

    yaml

    spring:
      ai:
        ollama:
          embedding:
            model: nomic-embed-text
    
  2. 加载本地文档,构建向量库:

    java

    @Autowired
    private OllamaEmbeddingClient embeddingClient;
    
    @Autowired
    private VectorStore vectorStore;
    
    @PostConstruct
    public void initKnowledgeBase() {
        // 加载本地PDF/Markdown文档
        List<Document> documents = new TextReader(new FileSystemResource("docs/backend-knowledge.md")).read();
        // 生成向量并存入向量库
        vectorStore.add(documents);
    }
    
  3. 实现知识库问答:

    java

    @GetMapping("/rag/chat")
    public String ragChat(@RequestParam String query) {
        // 检索相关知识库内容
        List<Document> similarDocs = vectorStore.similaritySearch(query);
        // 构建增强提示词
        String context = similarDocs.stream().map(Document::getContent).collect(Collectors.joining("\n"));
        String prompt = "基于以下知识库内容回答问题:\n" + context + "\n问题:" + query;
        return ollamaChatClient.call(prompt);
    }
    

四、生产环境优化与避坑指南

1. 性能优化

  • 模型选型:根据服务器配置选择模型,8G 内存推荐 7B 模型,16G + 推荐 14B 模型
  • 服务部署:Ollama 以守护进程运行,Spring Boot 项目打包为 Jar 包后台启动
  • 并发优化:配置 Ollama 并发数,Spring AI 添加接口限流,避免大模型服务过载

2. 常见问题排查

  • ❌ 连接超时:检查 Ollama 服务是否启动,端口 11434 是否被占用
  • ❌ 模型加载失败:确认 Ollama 中模型拉取完整,模型名称与配置一致
  • ❌ 响应缓慢:本地大模型推理耗时与硬件相关,可更换轻量化模型提升速度

3. 安全合规

  • 严格控制大模型输入输出,避免敏感数据泄露
  • 开源大模型商用需遵守对应开源协议(如 Llama 3 商用授权)
  • 离线部署需定期更新模型补丁,修复安全漏洞

五、总结与拓展

本文基于 Spring AI+Ollama,完整实现了离线大模型应用的搭建与开发,涵盖环境部署、基础对话、RAG 知识库等核心功能,可直接应用于企业内部 AI 助手、代码辅助、文档问答等场景。

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐