Class KnnVectorField

  • All Implemented Interfaces:
    IndexableField

    public class KnnVectorField
    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 VectorValues, 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 KnnVectorField 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.
    • Constructor Detail

      • KnnVectorField

        public KnnVectorField​(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 strategies (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.
      • KnnVectorField

        public KnnVectorField​(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.
      • KnnVectorField

        public KnnVectorField​(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 Detail

      • 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.
      • 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