注解详解
# VectoRex 注解说明
本文档详细介绍了 VectoRex 项目中用于定义集合和字段的自定义注解。通过这些注解,您可以轻松地将 Java 类映射到向量数据库中的集合和字段。
# 注解列表
# 1. @VectoRexCollection
该注解用于将一个类标记为 VectoRex 系统中的集合。您可以通过它指定集合的名称。
# 使用方法:
@VectoRexCollection(name = "my_collection")
public class MyCollection {
// 类的字段和方法
}
# 参数:
name
: 集合的名称。这是一个必填字段,且在系统中必须唯一。
# 示例:
@VectoRexCollection(name = "image_vectors")
public class ImageVectorCollection {
// 图像向量数据的字段和方法
}
# 2. @VectoRexField
该注解用于定义集合中的字段。您可以通过它指定字段的名称、数据类型、向量维度、度量类型以及是否为主键。
# 使用方法:
@VectoRexField(
name = "vector_field",
dataType = DataType.FLOAT_VECTOR,
dimension = 128,
metricType = MetricType.FLOAT_COSINE_DISTANCE,
isPrimaryKey = false
)
private float[] vectorField;
# 参数:
name
: 字段的名称。如果未提供,则默认使用 Java 字段名。dataType
: 字段的数据类型。默认为DataType.Scalar
。支持的取值包括:DataType.Scalar
(标量类型,如整数、字符串)DataType.FLOAT_VECTOR
(浮点向量)
dimension
: 向量的维度(仅对向量类型有效)。默认为-1
(未指定)。metricType
: 用于向量相似度计算的度量类型。默认为MetricType.FLOAT_COSINE_DISTANCE
。支持的取值包括:MetricType.FLOAT_COSINE_DISTANCE
(浮点向量的余弦距离)MetricType.FLOAT_EUCLIDEAN_DISTANCE
(浮点向量的欧几里得距离)MetricType.BINARY_HAMMING_DISTANCE
(二进制向量的汉明距离)
isPrimaryKey
: 指示该字段是否为主键。默认为false
。
# 示例:
@VectoRexCollection(name = "product_vectors")
public class ProductVectorCollection {
@VectoRexField(isPrimaryKey = true)
private String productId;
@VectoRexField(
name = "embedding",
dataType = DataType.FLOAT_VECTOR,
dimension = 256,
metricType = MetricType.FLOAT_EUCLIDEAN_DISTANCE
)
private List<Float> embedding;
@VectoRexField(name = "category")
private String category;
}
# 数据类型 (DataType
)
DataType
枚举定义了字段支持的数据类型:
Scalar
: 标量值(如整数、字符串)。FLOAT_VECTOR
: 浮点向量。
# 度量类型 (MetricType
)
MetricType
枚举定义了向量相似度计算支持的度量类型:
FLOAT_COSINE_DISTANCE
: 浮点向量的余弦距离。FLOAT_EUCLIDEAN_DISTANCE
: 浮点向量的欧几里得距离。BINARY_HAMMING_DISTANCE
: 二进制向量的汉明距离。
# 完整示例
以下是一个完整的使用示例:
@VectoRexCollection(name = "user_profiles")
public class UserProfileCollection {
@VectoRexField(isPrimaryKey = true)
private String userId;
@VectoRexField(name = "name")
private String name;
@VectoRexField(
name = "preferences",
dataType = DataType.FLOAT_VECTOR,
dimension = 64,
metricType = MetricType.FLOAT_COSINE_DISTANCE
)
private List<Float> preferences;
}