Class HnswGraphBuilder


public final class HnswGraphBuilder extends Object
Builder for HNSW graph. See HnswGraph for a gloss on the algorithm and the meaning of the hyperparameters.
  • Field Details


      public static final String HNSW_COMPONENT
      A name for the HNSW component for the info-stream *
      See Also:
    • randSeed

      public static long randSeed
      Random seed for level generation; public to expose for testing *
  • Constructor Details

    • HnswGraphBuilder

      public HnswGraphBuilder(RandomAccessVectorValuesProducer vectors, VectorSimilarityFunction similarityFunction, int maxConn, int beamWidth, long seed)
      Reads all the vectors from a VectorValues, builds a graph connecting them by their dense ordinals, using the given hyperparameter settings, and returns the resulting graph.
      vectors - the vectors whose relations are represented by the graph - must provide a different view over those vectors than the one used to add via addGraphNode.
      maxConn - the number of connections to make when adding a new graph node; roughly speaking the graph fanout.
      beamWidth - the size of the beam search to use when finding nearest neighbors.
      seed - the seed for a random number generator used during graph construction. Provide this to ensure repeatable construction.
  • Method Details

    • build

      public OnHeapHnswGraph build(RandomAccessVectorValues vectors) throws IOException
      Reads all the vectors from two copies of a random access VectorValues. Providing two copies enables efficient retrieval without extra data copying, while avoiding collision of the returned values.
      vectors - the vectors for which to build a nearest neighbors graph. Must be an independet accessor for the vectors
    • setInfoStream

      public void setInfoStream(InfoStream infoStream)
      Set info-stream to output debugging information *