org.elasticsearch.nativeaccess.VectorSimilarityFunctions Maven / Gradle / Ivy
Show all versions of elasticsearch-native Show documentation
/*
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
* or more contributor license agreements. Licensed under the "Elastic License
* 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side
* Public License v 1"; you may not use this file except in compliance with, at
* your election, the "Elastic License 2.0", the "GNU Affero General Public
* License v3.0 only", or the "Server Side Public License, v 1".
*/
package org.elasticsearch.nativeaccess;
import java.lang.invoke.MethodHandle;
/**
* Utility interface providing vector similarity functions.
*
* MethodHandles are returned to avoid a static reference to MemorySegment,
* which is not in the currently lowest compile version, JDK 17. Code consuming
* the method handles will, by definition, require access to MemorySegment.
*/
public interface VectorSimilarityFunctions {
/**
* Produces a method handle returning the dot product of byte (unsigned int7) vectors.
*
*
Unsigned int7 byte vectors have values in the range of 0 to 127 (inclusive).
*
*
The type of the method handle will have {@code int} as return type, The type of
* its first and second arguments will be {@code MemorySegment}, whose contents is the
* vector data bytes. The third argument is the length of the vector data.
*/
MethodHandle dotProductHandle7u();
/**
* Produces a method handle returning the square distance of byte (unsigned int7) vectors.
*
*
Unsigned int7 byte vectors have values in the range of 0 to 127 (inclusive).
*
*
The type of the method handle will have {@code int} as return type, The type of
* its first and second arguments will be {@code MemorySegment}, whose contents is the
* vector data bytes. The third argument is the length of the vector data.
*/
MethodHandle squareDistanceHandle7u();
}