当前位置: 首页 > news >正文

spring-ai-alibaba第二章ollama集成EmbeddingModel

1、pom文件

	<dependencies>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-web</artifactId>
		</dependency>
 
		<dependency>
			<groupId>org.springframework.ai</groupId>
			<artifactId>spring-ai-ollama-spring-boot-starter</artifactId>
		</dependency>
	</dependencies>

2、ollama 需又向量模型,application.yml 内容如下

server:
  port: 10005

spring:
  application:
    name: spring-ai-alibaba-ollama-chat-model-example

  ai:
    ollama:
      base-url: http://localhost:11434
      chat:
        model: llama3.2:1b
      embedding:
        model: bge-m3

3、测试代码如下

package com.alibaba.cloud.ai.example.chat.ollama.controller;

import org.springframework.ai.embedding.Embedding;
import org.springframework.ai.embedding.EmbeddingModel;
import org.springframework.ai.embedding.EmbeddingResponse;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

import java.util.List;
import java.util.Map;

@RestController
public class EmbeddingController {

    private final EmbeddingModel embeddingModel;

    @Autowired
    public EmbeddingController(EmbeddingModel embeddingModel) {
        this.embeddingModel = embeddingModel;
    }

    @GetMapping("/ai/embedding")
    public Map embed(@RequestParam(value = "message", defaultValue = "Tell me a joke") String message) {
        EmbeddingResponse embeddingResponse = this.embeddingModel.embedForResponse(List.of(message));
        List<Embedding> embeddings = embeddingResponse.getResults();
        embeddings.forEach(k -> {
            float[] ff = k.getOutput();
            System.out.println(ff.length);
        });
        return Map.of("embedding", embeddingResponse);
    }
}

测试效果如下

相关文章:

  • pyexcelerate在写入Excel时为何效率高?
  • Kotlin 协程官方文档知识汇总(二)
  • 详解隔离级别(4种),分别用表格展示问题出现的过程及解决办法
  • Geotools结合SLD实现矢量中文标注下的乱码和可用字体解析
  • 基于JavaWeb的二手图书交易系统(源码+lw+部署文档+讲解),源码可白嫖!
  • 【云原生】Kubernetes CEL 速查表
  • 【Git “fetch“ 命令详解】
  • Spring Boot中事务状态(TransactionStatus)的核心信息及常见应用场景
  • Android Photo Picker 深入解析与实战指南
  • 【视觉与语言模型参数解耦】为什么?方案?
  • Qt之共享内存类QSharedMemory的使用及实现原理(全)
  • 3.第二阶段x64游戏实战-分析人物移动实现人物加速
  • 网络安全等级保护测评
  • LeetCode 解题思路 29(Hot 100)
  • Qt 信号量使用方法
  • trae.ai 编辑器:前端开发者的智能效率革命
  • MySQL的不同字符集的排序规则
  • android gradle一直编译不下来,可能是打开了gradle离线模式
  • Redis 哨兵集群(Sentinel)与 Cluster 集群对比
  • SQL命令
  • 党政机关停车场免费、食堂开放,多地“五一”游客服务暖心周到
  • 魔都眼|石库门里看车展,五一来张园体验城市“漫时光”
  • 国家能源局通报上月投诉情况:赤峰有群众反映电费异常增高,已退费
  • 外媒称菲方允许菲官员窜台,国台办:应停止在台湾问题上玩火
  • 体坛联播|欧冠半决赛阿森纳主场不敌巴黎,北京男篮险胜山西
  • 辽宁辽阳火灾事故饭店经营者已被控制,善后处置全面展开