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

编程教程 (16) 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.
Ollama 环境准备Ollama安装使用参考:Deepseek Windows安装和入门使用Spring Boot项目接入OllamaSpring Boot
Spring Boot 2.0 入门 logoback配置实战教程,俗话说好马配好鞍。Spring Boot 框架从各方面给我们带来了开发效率。日志自然也不会落下。本文将讲解与Spring Bo...
spring boot webflux client实战,webclient是spring webflux的一个小组件。对于Java的http通讯来说,webclient是非常简单易用的。
spring boot整合cxf发布webservice服务和cxf客户端调用,说起web service最近几年restful大行其道,大有取代传统soap web service的趋势,但是...
引言    通过之前spring boot mybatis 整合的讲解: spring boot mybaties整合  (spring boot mybaties 整合 基于Java注解方式写...
Spring Boot 2.0,Spring框架的Spring Boot 中的Spring Boot Actuator变化讲解。并且了解如何在Spring Boot 2.0中使用Actuator...
Spring Boot 2.0 绑定properties属性资源文件 Spring Boot 2.0 读取properties配置文件值 Spring Boot 2.0获取properties配...
spring boot入门,spring boot是一个崭新的spring框架分支项目,本文讲解其属性配置相关
spring boot 1.5整合redis实现spring的缓存框架,spring boot,redis
spring boot是一个崭新的spring框架分支项目,本文讲解基本的数据库配置
Spring Boot validation整合hibernate validator实现数据验证,Spring Boot validation使用说明,Spring Boot validat...
spring boot mybatis 整合使用讲解介绍,spring boot与MyBatis的使用讲解介绍。spring boot mybatis xml mapper方式的入门和通过一个简...
spring boot又一个spring框架的经典项目,本文讲解spring boot入门的环境配置以及第一个项目,Spring Boot 入门教程
Spring Boot 2.0 Redis整合,通过spring boot 2.0整合Redis作为spring缓存框架的实现。