KnnFloatVectorField (Lucene 10.5.1 core API)
Description: declaration: package: org.apache.lucene.document, class: KnnFloatVectorField

Package org.apache.lucene.document

# Class KnnFloatVectorField

java.lang.Object
org.apache.lucene.document.Field
org.apache.lucene.document.KnnFloatVectorField

All Implemented Interfaces:
  `IndexableField`

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 using `FloatVectorValues`, 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). A `KnnFloatVectorField` 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, 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

  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 vector
  `void`
  `setVectorValue(float[] value)`
  Set the vector value of this field
  `float[]`
  `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`

  ### Methods inherited from class java.lang.Object

  `clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

- ## Constructor Details

  - ### 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 (like `VectorSimilarityFunction.DOT_PRODUCT`) require values to be unit-length, which can be enforced using `VectorUtil.l2normalize(float[])`.
    Parameters:
      `name` - field name
      `vector` - value
      `similarityFunction` - 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 name
      `vector` - 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 name
      `vector` - value
      `fieldType` - field type
    Throws:
      `IllegalArgumentException` - if any parameter is null, or the vector is empty or has dimension > 1024.

- ## Method Details

  - ### createFieldType

    public static FieldType createFieldType(int dimension, VectorSimilarityFunction similarityFunction)
    A convenience method for creating a vector field type.
    Parameters:
      `dimension` - dimension of vectors
      `similarityFunction` - 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 query
      `queryVector` - The float vector target
      `k` - 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