Package org.apache.lucene.document
Class KnnFloatVectorField
- java.lang.Object
-
- org.apache.lucene.document.Field
-
- org.apache.lucene.document.KnnFloatVectorField
-
- All Implemented Interfaces:
IndexableField
- Direct Known Subclasses:
KnnVectorField
public class KnnFloatVectorField extends Field
A field that contains a single floating-point numeric vector (or none) for each document. Vectors are dense - that is, every dimension of a vector contains an explicit value, stored packed into an array (of type float[]) whose length is the vector dimension. Values can be retrieved usingFloatVectorValues
, which is a forward-only docID-based iterator and also offers random-access by dense ordinal (not docId).VectorSimilarityFunction
may be used to compare vectors at query time (for example as part of result ranking). AKnnFloatVectorField
may be associated with a search similarity function defining the metric used for nearest-neighbor search among vectors of that field.- WARNING: This API is experimental and might change in incompatible ways in the next release.
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from class org.apache.lucene.document.Field
Field.Store
-
-
Field Summary
-
Fields inherited from class org.apache.lucene.document.Field
fieldsData, name, tokenStream, type
-
-
Constructor Summary
Constructors Constructor Description KnnFloatVectorField(String name, float[] vector)
Creates a numeric vector field with the default EUCLIDEAN_HNSW (L2) similarity.KnnFloatVectorField(String name, float[] vector, FieldType fieldType)
Creates a numeric vector field.KnnFloatVectorField(String name, float[] vector, VectorSimilarityFunction similarityFunction)
Creates a numeric vector field.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description static FieldType
createFieldType(int dimension, VectorSimilarityFunction similarityFunction)
A convenience method for creating a vector field type.static Query
newVectorQuery(String field, float[] queryVector, int k)
Create a new vector query for the provided field targeting the float vectorvoid
setVectorValue(float[] value)
Set the vector value of this fieldfloat[]
vectorValue()
Return the vector value of this field-
Methods inherited from class org.apache.lucene.document.Field
binaryValue, fieldType, getCharSequenceValue, invertableType, name, numericValue, readerValue, setBytesValue, setBytesValue, setByteValue, setDoubleValue, setFloatValue, setIntValue, setLongValue, setReaderValue, setShortValue, setStringValue, setTokenStream, storedValue, stringValue, tokenStream, tokenStreamValue, toString
-
-
-
-
Constructor Detail
-
KnnFloatVectorField
public KnnFloatVectorField(String name, float[] vector, VectorSimilarityFunction similarityFunction)
Creates a numeric vector field. Fields are single-valued: each document has either one value or no value. Vectors of a single field share the same dimension and similarity function. Note that some vector similarities (likeVectorSimilarityFunction.DOT_PRODUCT
) require values to be unit-length, which can be enforced usingVectorUtil.l2normalize(float[])
.- Parameters:
name
- field namevector
- valuesimilarityFunction
- a function defining vector proximity.- Throws:
IllegalArgumentException
- if any parameter is null, or the vector is empty or has dimension > 1024.
-
KnnFloatVectorField
public KnnFloatVectorField(String name, float[] vector)
Creates a numeric vector field with the default EUCLIDEAN_HNSW (L2) similarity. Fields are single-valued: each document has either one value or no value. Vectors of a single field share the same dimension and similarity function.- Parameters:
name
- field namevector
- value- Throws:
IllegalArgumentException
- if any parameter is null, or the vector is empty or has dimension > 1024.
-
KnnFloatVectorField
public KnnFloatVectorField(String name, float[] vector, FieldType fieldType)
Creates a numeric vector field. Fields are single-valued: each document has either one value or no value. Vectors of a single field share the same dimension and similarity function.- Parameters:
name
- field namevector
- valuefieldType
- field type- Throws:
IllegalArgumentException
- if any parameter is null, or the vector is empty or has dimension > 1024.
-
-
Method Detail
-
createFieldType
public static FieldType createFieldType(int dimension, VectorSimilarityFunction similarityFunction)
A convenience method for creating a vector field type.- Parameters:
dimension
- dimension of vectorssimilarityFunction
- a function defining vector proximity.- Throws:
IllegalArgumentException
- if any parameter is null, or has dimension > 1024.
-
newVectorQuery
public static Query newVectorQuery(String field, float[] queryVector, int k)
Create a new vector query for the provided field targeting the float vector- Parameters:
field
- The field to queryqueryVector
- The float vector targetk
- The number of nearest neighbors to gather- Returns:
- A new vector query
-
vectorValue
public float[] vectorValue()
Return the vector value of this field
-
setVectorValue
public void setVectorValue(float[] value)
Set the vector value of this field- Parameters:
value
- the value to set; must not be null, and length must match the field type
-
-