VectoRex VectoRex
首页
  • 介绍
  • 嵌入

    • Spring嵌入使用
    • Solon嵌入使用
  • 服务端

    • 部署Server
    • API文档
  • 客户端

    • Java SDK
    • Golang SDK
    • Python SDK
  • 须知

    • 度量类型
    • 应用场景
    • 注解详解
快速开始
Source (opens new window)
首页
  • 介绍
  • 嵌入

    • Spring嵌入使用
    • Solon嵌入使用
  • 服务端

    • 部署Server
    • API文档
  • 客户端

    • Java SDK
    • Golang SDK
    • Python SDK
  • 须知

    • 度量类型
    • 应用场景
    • 注解详解
快速开始
Source (opens new window)
  • 介绍

    • 项目简介
  • 指南

    • 度量类型
    • 应用场景
    • 注解详解
  • 嵌入

    • spring内嵌使用
      • 一、概述
      • 二、安装
        • 2.1 依赖添加
      • 三、配置
        • 3.1 应用配置
        • 3.2 配置说明
      • 四、基本用法
        • 4.1 实体类定义
        • 4.2 Mapper 接口定义
        • 4.3 使用示例
    • solon内嵌使用
  • 服务端

    • 独立部署服务
    • API文档
  • 客户端

    • java sdk
    • go sdk
    • python sdk
目录

spring内嵌使用

# vectorex-starter

# 一、概述

vectorex-starter 是一个用于简化 VectoRex 服务集成的 Spring Boot Starter。它提供了自动配置和便捷的 API,帮助开发者快速在 Spring Boot 应用中使用 VectoRex 功能。

# 二、安装

# 2.1 依赖添加

在项目的 pom.xml 文件中添加以下依赖:

<dependency>
    <groupId>io.github.javpower</groupId>
    <artifactId>vectorex-starter</artifactId>
    <version>1.5.3</version>
</dependency>

# 三、配置

# 3.1 应用配置

在 application.yml 或 application.properties 文件中添加 VectoRex 配置:

vectorex:
  enable: true
  packages:
    - io.github.javpower.vectorextest.model

# 3.2 配置说明

  • vectorex.enable:是否启用 VectoRex 功能,默认为 true。
  • vectorex.packages:指定包含 VectoRex 实体类的包路径,用于自动扫描和注册。

# 四、基本用法

# 4.1 实体类定义

package io.github.javpower.vectorextest.model;

import io.github.javpower.vectorex.keynote.model.MetricType;
import io.github.javpower.vectorexcore.annotation.VectoRexCollection;
import io.github.javpower.vectorexcore.annotation.VectoRexField;
import io.github.javpower.vectorexcore.entity.DataType;
import lombok.Data;

import java.util.List;

@Data
@VectoRexCollection(name = "face")
public class Face {
    @VectoRexField(
            isPrimaryKey = true
    )
    private Long id;
    @VectoRexField
    private String name;

    @VectoRexField(
            dataType = DataType.FloatVector,
            dimension = 128,
            metricType = MetricType.FLOAT_COSINE_DISTANCE
    )
    private List<Float> vector;
}

# 4.2 Mapper 接口定义

定义一个继承自 VectoRexMapper 的 Mapper 接口,用于操作 VectoRex 数据。

package io.github.javpower.vectorextest.mapper;

import io.github.javpower.vectorexbootstater.mapper.VectorRexMapper;
import io.github.javpower.vectorextest.model.Face;
import org.springframework.stereotype.Component;

@Component
public class FaceMapper extends VectorRexMapper<Face> {

}

# 4.3 使用示例

在测试类中使用 FaceMapper 进行数据操作。

import io.github.javpower.vectorex.mapper.VectoRexResult;
import io.github.javpower.vectorex.query.VectoRexQueryWrapper;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;

import java.util.ArrayList;
import java.util.List;

@SpringBootTest
public class VectorexTestApplicationTests {

    @Autowired
    private FaceMapper faceMapper;

    @Test
    void testFace() {
        List<VectoRexResult<Face>> query;

        // 新增数据
        List<Face> faces = generateFaces(5);
        faceMapper.insert(faces);

        // 查询数据
        query = faceMapper.queryWrapper().eq(Face::getName, "Face 1").query();
        System.out.println(GsonUtil.toJson(query));

        List<Float> floats = generateRandomVector(128);
        query = faceMapper.queryWrapper().vector(Face::getVector, floats).query();
        System.out.println(GsonUtil.toJson(query));

        // 删除数据
        faceMapper.removeById(1);

        // 查询数据
        query = faceMapper.queryWrapper().eq(Face::getName, "Face 1").query();
        System.out.println(GsonUtil.toJson(query));
    }

    public static List<Face> generateFaces(int count) {
        List<Face> faces = new ArrayList<>();
        for (int i = 0; i < count; i++) {
            Face face = new Face();
            face.setId((long) (i + 1)); // 生成从1开始的ID
            face.setName("Face " + (i + 1)); // 生成简单的名称
            face.setVector(generateRandomVector(128)); // 生成128维的随机向量
            faces.add(face);
        }
        return faces;
    }

    private static List<Float> generateRandomVector(int dimension) {
        List<Float> vector = new ArrayList<>();
        Random random = new Random();
        for (int i = 0; i < dimension; i++) {
            vector.add(random.nextFloat()); // 生成0到1之间的随机浮点数
        }
        return vector;
    }
}
注解详解
solon内嵌使用

← 注解详解 solon内嵌使用→

Theme by Vdoing | Copyright © 2024-2025 xgc | Apache License
  • 跟随系统
  • 浅色模式
  • 阅读模式
  • 深色模式