Skip to content

Ollama

本指南介绍如何配置和使用 Ollama 模型。

添加依赖

pom.xml 中添加 Ollama 依赖:

xml
<dependency>
    <groupId>org.springframework.ai</groupId>
    <artifactId>spring-ai-starter-model-ollama</artifactId>
</dependency>

配置 Ollama

application.yml 中配置 Ollama:

yaml
spring:
  ai:
    ollama:
      base-url: http://localhost:11434
      chat:
        options:
          model: deepseek-r1:32b
          temperature: 0.7
          num-predict: 2000
      embedding:
        options:
          model: mxbai-embed-large
          dimensions: 1024
      init:
        pull-model-strategy: never
        embedding:
          additional-models:
            - mxbai-embed-large

配置项说明

配置项类型说明
base-urlStringOllama 服务地址
chat.options.modelStringChat 模型名称
chat.options.temperatureDouble生成温度(0-1)
chat.options.num-predictInteger最大预测 token 数量
embedding.options.modelStringEmbedding 模型名称
embedding.options.dimensionsInteger向量维度
init.pull-model-strategyString模型拉取策略

安装 Ollama

Windows

powershell
winget install ollama
ollama serve

macOS

bash
brew install ollama
ollama serve

Linux

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

拉取模型

Chat 模型

bash
ollama pull deepseek-r1:32b
ollama pull qwen2.5:7b
ollama pull llama3.2:3b

Embedding 模型

bash
ollama pull mxbai-embed-large
ollama pull nomic-embed-text
ollama pull all-minilm:33m

使用示例

基本使用

java
@RestController
@RequiredArgsConstructor
public class OllamaController {

    private final SpringSqlEngine sqlEngine;
    private final OllamaChatModel chatModel;

    @PostMapping("/query")
    public Object query(@RequestBody QueryRequest request) {
        String sql = sqlEngine.setChatModel(chatModel)
                .generateSql(request.getQuestion());
        
        return sqlEngine.executeSql(sql);
    }
}

自定义选项

java
@PostMapping("/query-with-options")
public Object queryWithOptions(@RequestBody QueryRequest request) {
    String sql = sqlEngine.setChatModel(chatModel)
            .setOptions(RagOptions.builder()
                    .topN(10)
                    .rerank(true)
                    .limitScore(0.3)
                    .build())
            .generateSql(request.getQuestion());
    
    return sqlEngine.executeSql(sql);
}

支持的模型

Chat 模型

  • DeepSeek-R1
  • Qwen2.5
  • Llama3.2
  • Mistral
  • Gemma
  • Phi-3

Embedding 模型

  • mxbai-embed-large
  • nomic-embed-text
  • all-minilm
  • bge-m3

性能优化

模型选择

根据硬件选择合适的模型:

硬件推荐模型
8GB RAMllama3.2:3b, phi-3:mini
16GB RAMqwen2.5:7b, mistral:7b
32GB RAMdeepseek-r1:32b, llama3.2:70b

并发设置

yaml
spring:
  ai:
    ollama:
      chat:
        options:
          num-ctx: 4096
          num-threads: 4
          num-batch: 512

故障排除

常见问题

问题: 连接失败

解决方案: 确认 Ollama 服务正在运行

bash
ollama list

问题: 模型未找到

解决方案: 拉取所需的模型

bash
ollama pull model-name

问题: 内存不足

解决方案: 使用更小的模型或增加系统内存

下一步

最近更新

基于 Apache 2.0 许可证发布