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

      • 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.
        Parameters:
        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 Detail

      • build

        public HnswGraph 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.
        Parameters:
        vectors - the vectors for which to build a nearest neighbors graph. Must be an independet accessor for the vectors
        Throws:
        IOException
      • setInfoStream

        public void setInfoStream​(InfoStream infoStream)