Package org.apache.lucene.codecs.lucene99

# Class Lucene99ScalarQuantizedVectorsReader

java.lang.Object
org.apache.lucene.codecs.KnnVectorsReader
org.apache.lucene.codecs.hnsw.FlatVectorsReader
org.apache.lucene.codecs.lucene99.Lucene99ScalarQuantizedVectorsReader

All Implemented Interfaces:
  `Closeable`, `AutoCloseable`, `Accountable`, `QuantizedVectorsReader`

public final class Lucene99ScalarQuantizedVectorsReader extends FlatVectorsReader implements QuantizedVectorsReader
Reads Scalar Quantized vectors from the index segments along with index data structures.

WARNING: This API is experimental and might change in incompatible ways in the next release.

- ## Field Summary

  ### Fields inherited from class org.apache.lucene.codecs.hnsw.FlatVectorsReader

  `vectorScorer`

  ### Fields inherited from interface org.apache.lucene.util.Accountable

  `NULL_ACCOUNTABLE`

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `Lucene99ScalarQuantizedVectorsReader(SegmentReadState state, FlatVectorsReader rawVectorsReader, FlatVectorsScorer scorer)`

- ## Method Summary

  Modifier and Type
  Method
  Description
  `void`
  `checkIntegrity()`
  Checks consistency of this reader.
  `void`
  `close()`
  `ByteVectorValues`
  `getByteVectorValues(String field)`
  Returns the `ByteVectorValues` for the given `field`.
  `FloatVectorValues`
  `getFloatVectorValues(String field)`
  Returns the `FloatVectorValues` for the given `field`.
  `Map<String,Long>`
  `getOffHeapByteSize(FieldInfo fieldInfo)`
  Returns the desired size of off-heap memory for the given field.
  `ScalarQuantizer`
  `getQuantizationState(String field)`
  `QuantizedByteVectorValues`
  `getQuantizedVectorValues(String field)`
  `RandomVectorScorer`
  `getRandomVectorScorer(String field, byte[] target)`
  Returns a `RandomVectorScorer` for the given field and target vector.
  `RandomVectorScorer`
  `getRandomVectorScorer(String field, float[] target)`
  Returns a `RandomVectorScorer` for the given field and target vector.
  `long`
  `ramBytesUsed()`
  Return the memory usage of this object in bytes.

  ### Methods inherited from class org.apache.lucene.codecs.hnsw.FlatVectorsReader

  `getFlatVectorScorer, getMergeInstance, search, search`

  ### Methods inherited from class org.apache.lucene.codecs.KnnVectorsReader

  `finishMerge, mergeOffHeapByteSizeMaps`

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

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

  ### Methods inherited from interface org.apache.lucene.util.Accountable

  `getChildResources`

- ## Constructor Details

  - ### Lucene99ScalarQuantizedVectorsReader

    public Lucene99ScalarQuantizedVectorsReader(SegmentReadState state, FlatVectorsReader rawVectorsReader, FlatVectorsScorer scorer) throws IOException
    Throws:
      `IOException`

- ## Method Details

  - ### checkIntegrity

    public void checkIntegrity() throws IOException
    Description copied from class: `KnnVectorsReader`
    Checks consistency of this reader.

    Note that this may be costly in terms of I/O, e.g. may involve computing a checksum value against large data files.

    Specified by:
      `checkIntegrity` in class `KnnVectorsReader`
    Throws:
      `IOException`

  - ### getFloatVectorValues

    public FloatVectorValues getFloatVectorValues(String field) throws IOException
    Description copied from class: `KnnVectorsReader`
    Returns the `FloatVectorValues` for the given `field`. The behavior is undefined if the given field doesn't have KNN vectors enabled on its `FieldInfo`. The return value is never `null`.
    Specified by:
      `getFloatVectorValues` in class `KnnVectorsReader`
    Throws:
      `IOException`

  - ### getByteVectorValues

    public ByteVectorValues getByteVectorValues(String field) throws IOException
    Description copied from class: `KnnVectorsReader`
    Returns the `ByteVectorValues` for the given `field`. The behavior is undefined if the given field doesn't have KNN vectors enabled on its `FieldInfo`. The return value is never `null`.
    Specified by:
      `getByteVectorValues` in class `KnnVectorsReader`
    Throws:
      `IOException`

  - ### getRandomVectorScorer

    public RandomVectorScorer getRandomVectorScorer(String field, float[] target) throws IOException
    Description copied from class: `FlatVectorsReader`
    Returns a `RandomVectorScorer` for the given field and target vector.
    Specified by:
      `getRandomVectorScorer` in class `FlatVectorsReader`
    Parameters:
      `field` - the field to search
      `target` - the target vector
    Returns:
      a `RandomVectorScorer` for the given field and target vector.
    Throws:
      `IOException` - if an I/O error occurs when reading from the index.

  - ### getRandomVectorScorer

    public RandomVectorScorer getRandomVectorScorer(String field, byte[] target) throws IOException
    Description copied from class: `FlatVectorsReader`
    Returns a `RandomVectorScorer` for the given field and target vector.
    Specified by:
      `getRandomVectorScorer` in class `FlatVectorsReader`
    Parameters:
      `field` - the field to search
      `target` - the target vector
    Returns:
      a `RandomVectorScorer` for the given field and target vector.
    Throws:
      `IOException` - if an I/O error occurs when reading from the index.

  - ### close

    public void close() throws IOException
    Specified by:
      `close` in interface `AutoCloseable`
    Specified by:
      `close` in interface `Closeable`
    Throws:
      `IOException`

  - ### ramBytesUsed

    public long ramBytesUsed()
    Description copied from interface: `Accountable`
    Return the memory usage of this object in bytes. Negative values are illegal.
    Specified by:
      `ramBytesUsed` in interface `Accountable`

  - ### getOffHeapByteSize

    public Map<String,Long> getOffHeapByteSize(FieldInfo fieldInfo)
    Description copied from class: `KnnVectorsReader`
    Returns the desired size of off-heap memory for the given field. This size can be used to help determine the memory requirements for optimal search performance, which can be greatly affected by page faults when not enough memory is available.

    For reporting purposes, the size of the off-heap index structures is broken down by their file extension, which provides a logical categorization of their purpose, e.g. the `Lucene99HnswVectorsFormat` stores the HNSW graph neighbours lists in a file with the "vex" extension.

    The long value is the size in bytes of the off-heap space needed if the associated index structure were to be fully loaded in memory. While somewhat analogous to `Accountable.ramBytesUsed()` (which reports actual on-heap memory usage), the sizes reported by this method are not actual usage but rather the amount of available memory needed to fully load the index into memory, rather than an actual RAM usage requirement.

    To determine the total desired off-heap memory size for the given field:

         getOffHeapByteSize(field).values().stream().mapToLong(Long::longValue).sum();

    The default implementation returns an empty map.

    Overrides:
      `getOffHeapByteSize` in class `KnnVectorsReader`
    Parameters:
      `fieldInfo` - the fieldInfo
    Returns:
      a map of the desired off-heap memory requirements by category

  - ### getQuantizedVectorValues

    public QuantizedByteVectorValues getQuantizedVectorValues(String field) throws IOException
    Specified by:
      `getQuantizedVectorValues` in interface `QuantizedVectorsReader`
    Throws:
      `IOException`

  - ### getQuantizationState

    public ScalarQuantizer getQuantizationState(String field)
    Specified by:
      `getQuantizationState` in interface `QuantizedVectorsReader`