Package org.apache.lucene.util
Class VectorUtil
- java.lang.Object
-
- org.apache.lucene.util.VectorUtil
-
public final class VectorUtil extends Object
Utilities for computations with numeric arrays
-
-
Method Summary
All Methods Static Methods Concrete Methods Modifier and Type Method Description static void
add(float[] u, float[] v)
Adds the second argument to the firststatic float
cosine(float[] v1, float[] v2)
Returns the cosine similarity between the two vectors.static float
cosine(BytesRef a, BytesRef b)
Returns the cosine similarity between the two vectors.static float
dotProduct(float[] a, float[] b)
Returns the vector dot product of the two vectors.static float
dotProduct(BytesRef a, BytesRef b)
Dot product computed over signed bytes.static float
dotProductScore(BytesRef a, BytesRef b)
Dot product score computed over signed bytes, scaled to be in [0, 1].static float[]
l2normalize(float[] v)
Modifies the argument to be unit length, dividing by its l2-norm.static float[]
l2normalize(float[] v, boolean throwOnZero)
Modifies the argument to be unit length, dividing by its l2-norm.static float
squareDistance(float[] v1, float[] v2)
Returns the sum of squared differences of the two vectors.static float
squareDistance(BytesRef a, BytesRef b)
Returns the sum of squared differences of the two vectors.static BytesRef
toBytesRef(float[] vector)
Convert a floating point vector to an array of bytes using casting; the vector values should be in [-128,127]
-
-
-
Method Detail
-
dotProduct
public static float dotProduct(float[] a, float[] b)
Returns the vector dot product of the two vectors.- Throws:
IllegalArgumentException
- if the vectors' dimensions differ.
-
cosine
public static float cosine(float[] v1, float[] v2)
Returns the cosine similarity between the two vectors.- Throws:
IllegalArgumentException
- if the vectors' dimensions differ.
-
cosine
public static float cosine(BytesRef a, BytesRef b)
Returns the cosine similarity between the two vectors.
-
squareDistance
public static float squareDistance(float[] v1, float[] v2)
Returns the sum of squared differences of the two vectors.- Throws:
IllegalArgumentException
- if the vectors' dimensions differ.
-
squareDistance
public static float squareDistance(BytesRef a, BytesRef b)
Returns the sum of squared differences of the two vectors.
-
l2normalize
public static float[] l2normalize(float[] v)
Modifies the argument to be unit length, dividing by its l2-norm. IllegalArgumentException is thrown for zero vectors.- Returns:
- the input array after normalization
-
l2normalize
public static float[] l2normalize(float[] v, boolean throwOnZero)
Modifies the argument to be unit length, dividing by its l2-norm.- Parameters:
v
- the vector to normalizethrowOnZero
- whether to throw an exception whenv
has all zeros- Returns:
- the input array after normalization
- Throws:
IllegalArgumentException
- when the vector is all zero and throwOnZero is true
-
add
public static void add(float[] u, float[] v)
Adds the second argument to the first- Parameters:
u
- the destinationv
- the vector to add to the destination
-
dotProduct
public static float dotProduct(BytesRef a, BytesRef b)
Dot product computed over signed bytes.- Parameters:
a
- bytes containing a vectorb
- bytes containing another vector, of the same dimension- Returns:
- the value of the dot product of the two vectors
-
dotProductScore
public static float dotProductScore(BytesRef a, BytesRef b)
Dot product score computed over signed bytes, scaled to be in [0, 1].- Parameters:
a
- bytes containing a vectorb
- bytes containing another vector, of the same dimension- Returns:
- the value of the similarity function applied to the two vectors
-
toBytesRef
public static BytesRef toBytesRef(float[] vector)
Convert a floating point vector to an array of bytes using casting; the vector values should be in [-128,127]- Parameters:
vector
- a vector- Returns:
- a new BytesRef containing the vector's values cast to byte.
-
-