Skip to content

Add a Hash to Vector embedding sources to detect if source and embedding are out of sync #464

Description

@bsbodden

See https://github.com/redis/redis-om-spring/blob/main/redis-om-spring/src/main/java/com/redis/om/spring/annotations/Vectorize.java

Ideally a new annotation on the Hash field with connect it to the Vectorize annotation 'source' something like:

@Document
public class DocWithCustomModelOpenAIEmbedding {
  @Id
  private String id;

  @Indexed
  @NonNull
  private String name;

  @Indexed( //
            schemaFieldType = SchemaFieldType.VECTOR, //
            algorithm = VectorAlgorithm.HNSW, //
            type = VectorType.FLOAT32, //
            dimension = 3072, //
            distanceMetric = DistanceMetric.COSINE, //
            initialCapacity = 10
  )
  private float[] textEmbedding;

  @Vectorize( //
              destination = "textEmbedding", //
              embeddingType = EmbeddingType.SENTENCE, //
              provider = EmbeddingProvider.OPENAI, //
              openAiEmbeddingModel = EmbeddingModel.TEXT_EMBEDDING_3_LARGE, //
              trackChanges = true // <==== This will tell OM to hash the field into a private JSON or Hash field like `_text_hash` matching the name of the field below
  )
  @NonNull
  private String text;
}

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions