Class KnnByteVectorField

  • All Implemented Interfaces:
    IndexableField

    public class KnnByteVectorField
    extends Field
    A field that contains a single byte 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 byte[]) whose length is the vector dimension. Values can be retrieved using ByteVectorValues, 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 KnnByteVectorField 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

      • KnnByteVectorField

        public KnnByteVectorField​(String name,
                                  byte[] 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 constant-length.
        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.
      • KnnByteVectorField

        public KnnByteVectorField​(String name,
                                  byte[] 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.
      • KnnByteVectorField

        public KnnByteVectorField​(String name,
                                  byte[] 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

      • newVectorQuery

        public static Query newVectorQuery​(String field,
                                           byte[] queryVector,
                                           int k)
        Create a new vector query for the provided field targeting the byte vector
        Parameters:
        field - The field to query
        queryVector - The byte vector target
        k - The number of nearest neighbors to gather
        Returns:
        A new vector query
      • 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 byte[] vectorValue()
        Return the vector value of this field
      • setVectorValue

        public void setVectorValue​(byte[] 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