Package org.apache.lucene.index
Enum VectorSimilarityFunction
 java.lang.Object

 java.lang.Enum<VectorSimilarityFunction>

 org.apache.lucene.index.VectorSimilarityFunction

 All Implemented Interfaces:
Serializable
,Comparable<VectorSimilarityFunction>
public enum VectorSimilarityFunction extends Enum<VectorSimilarityFunction>
Vector similarity function; used in search to return top K most similar vectors to a target vector. This is a label describing the method used during indexing and searching of the vectors in order to determine the nearest neighbors.


Enum Constant Summary
Enum Constants Enum Constant Description COSINE
Cosine similarity.DOT_PRODUCT
Dot product.EUCLIDEAN
Euclidean distance

Method Summary
All Methods Static Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description abstract float
compare(float[] v1, float[] v2)
Calculates a similarity score between the two vectors with a specified function.abstract float
compare(BytesRef v1, BytesRef v2)
Calculates a similarity score between the two vectors with a specified function.static VectorSimilarityFunction
valueOf(String name)
Returns the enum constant of this type with the specified name.static VectorSimilarityFunction[]
values()
Returns an array containing the constants of this enum type, in the order they are declared.



Enum Constant Detail

EUCLIDEAN
public static final VectorSimilarityFunction EUCLIDEAN
Euclidean distance

DOT_PRODUCT
public static final VectorSimilarityFunction DOT_PRODUCT
Dot product. NOTE: this similarity is intended as an optimized way to perform cosine similarity. In order to use it, all vectors must be normalized, including both document and query vectors. Using dot product with vectors that are not normalized can result in errors or poor search results. Floating point vectors must be normalized to be of unit length, while byte vectors should simply all have the same norm.

COSINE
public static final VectorSimilarityFunction COSINE
Cosine similarity. NOTE: the preferred way to perform cosine similarity is to normalize all vectors to unit length, and instead useDOT_PRODUCT
. You should only use this function if you need to preserve the original vectors and cannot normalize them in advance. The similarity score is normalised to assure it is positive.


Method Detail

values
public static VectorSimilarityFunction[] values()
Returns an array containing the constants of this enum type, in the order they are declared. This method may be used to iterate over the constants as follows:for (VectorSimilarityFunction c : VectorSimilarityFunction.values()) System.out.println(c);
 Returns:
 an array containing the constants of this enum type, in the order they are declared

valueOf
public static VectorSimilarityFunction valueOf(String name)
Returns the enum constant of this type with the specified name. The string must match exactly an identifier used to declare an enum constant in this type. (Extraneous whitespace characters are not permitted.) Parameters:
name
 the name of the enum constant to be returned. Returns:
 the enum constant with the specified name
 Throws:
IllegalArgumentException
 if this enum type has no constant with the specified nameNullPointerException
 if the argument is null

compare
public abstract float compare(float[] v1, float[] v2)
Calculates a similarity score between the two vectors with a specified function. Higher similarity scores correspond to closer vectors. Parameters:
v1
 a vectorv2
 another vector, of the same dimension Returns:
 the value of the similarity function applied to the two vectors

compare
public abstract float compare(BytesRef v1, BytesRef v2)
Calculates a similarity score between the two vectors with a specified function. Higher similarity scores correspond to closer vectors. The offsets and lengths of the BytesRefs determine the vector data that is compared. Each (signed) byte represents a vector dimension. Parameters:
v1
 a vectorv2
 another vector, of the same dimension Returns:
 the value of the similarity function applied to the two vectors

