Spring Boot AI Ollama Embedding 嵌入模型解析向量数据

编程教程 (109) 2025-02-20 17:40:49

基于上一个项目Spring Boot 接入Ollama实现与Deepseek简单对话修改,增加嵌入库配置,修改模型拉取策略为always

application.yml配置参考:

spring:
  application:
    name: demo-boot-ollama
  ai:
    ollama:
      init:
        pull-model-strategy: always # 下载策略
        embedding:
          additional-models:
            - mxbai-embed-large
            - nomic-embed-text
      base-url: http://192.168.31.162:11434
      chat:
        options:
          model: deepseek-r1:8b

启动项目可以看到在拉取项目日志:

Spring Boot AI Ollama Embedding 嵌入_图示-b7947a02d2cf431a83bfcee7ca80ec2a.png
启动日志

提示:虽然打开模型拉取为自动,但是底部不过国内下载慢,容易挂。所以建议还是先拉取好了再来用。。。

spring 官网文章也有提到会影响程序启动

Spring Boot AI Ollama Embedding 嵌入_图示-8f6ecf016d414e4f99193a658592a0b3.png

所以实际使用推荐配置为never并提前下载好模型。

spring:
  application:
    name: demo-boot-ollama
  ai:
    ollama:
      init:
        pull-model-strategy: never # 下载策略

 

编写嵌入controller

@RestController
public class EmbeddingController {

    @Resource
    EmbeddingModel embeddingModel;

    @GetMapping("/ai/embedding")
    public Map embed(@RequestParam(value = "message",defaultValue = "告诉我一个笑话")String message) {
        EmbeddingResponse embeddingResponse = this.embeddingModel.embedForResponse(List.of(message));
        return Map.of("embedding", embeddingResponse);
    }
}

重启项目后访问:

Spring Boot AI Ollama Embedding 嵌入_图示-04634a1f565048fb844d74c3c437b45f.png
访问嵌入库的响应(响应为向量值需要后续的Vector Databases向量数据库存放)

 

手动嵌入测试

public class EmbedTests {
    public static void main(String[] args) {
        var ollamaApi = new OllamaApi("http://192.168.31.162:11434");
        OllamaEmbeddingModel embeddingModel = new OllamaEmbeddingModel(
                ollamaApi,
                OllamaOptions.builder()
                        .model(OllamaModel.MISTRAL.id())
                        .build(),
                ObservationRegistry.NOOP,
                ModelManagementOptions.defaults()
        );
        EmbeddingResponse helloWorld = embeddingModel.call(
                new EmbeddingRequest(
                        List.of("Hello World", "World is big and salvation is near"),
                        OllamaOptions.builder().model("chroma/all-minilm-l6-v2-f32")
                                .truncate(false)//truncate | 截断,删节;把……截成平面
                                .build()
                )
        );
        Map<String, EmbeddingResponse> embedding = Map.of("embedding", helloWorld);
        System.out.println(helloWorld);
    }
}

提示:请先下载好模型 chroma/all-minilm-l6-v2-f32 命令:ollama pull chroma/all-minilm-l6-v2-f32

image
运行项目可以看到嵌入解析后的向量数据

 

特别提醒:文中的向量与矢量都是代指 Vector 仅各个平台翻译不同,无任何区别。故向量数据库也是矢量数据库 或者 Vector Database

 

 


评论
User Image
提示:请评论与当前内容相关的回复,广告、推广或无关内容将被删除。

相关文章
基于上一个项目Spring Boot 接入Ollama实现与Deepseek简单对话修改,增加嵌入库配置,修改模型拉取策略为alwaysapplication.
概述本文讲解Java编程中如何通过Spring AI框架 集成 Redis Stack 向量数据库和Ollama模型服务提供者实现RAG本地外挂知识库。前置条件
Ollama 环境准备Ollama安装使用参考:Deepseek Windows安装和入门使用Spring Boot项目接入OllamaSpring Boot
Ollama 简介Ollama 是一个用于部署本地 AI 模型的工具,开发者可以在自己的机器上运行模型,并通过 API 接口调用。在本地搭建 Ollama 服务
问题ollama国内拉取模型慢,断点续传也蛮怎么办,当然是修改ollama镜像源 配置ollama模型国内镜像源
目标使用Redis Stack中间件作为向量数据库(Vector Database)实现文档数据的存储和查询功能。先决条件已安装好的 redis stack ,
Ollama 模型动辄xxGB,默认位置可能不满足需求,特别是Windows,默认的C盘,所以一般都需要调整下Ollama 模型存放位置。ollama 默认的模
概述Ollama官方最新版0.5.7,默认是不支持AMD 780m(代号:gfx1103)集成显卡的,已知方法都是基于一个开源项目ollama-for-amd来
GPUNvidiaOllama 支持计算能力为 5.0 及以上的 Nvidia GPU。检查你的计算兼容性,以确认你的显卡是否受支持: https://deve
确认Ollama兼容您的GPUNvidiaOllama 支持计算能力 5.0 及以上的 Nvidia GPU。要检查您的显卡是否受支持,请查看您的计算兼容性:h
引言    通过之前spring boot mybatis 整合的讲解: spring boot mybaties整合  (spring boot mybaties 整合 基于Java注解方式写...
spring boot入门,spring boot是一个崭新的spring框架分支项目,本文讲解其属性配置相关
spring boot mybatis 整合使用讲解介绍,spring boot与MyBatis的使用讲解介绍。spring boot mybatis xml mapper方式的入门和通过一个简...
Spring Boot 2.0,Spring框架的Spring Boot 中的Spring Boot Actuator变化讲解。并且了解如何在Spring Boot 2.0中使用Actuator...