CagraIndexParams
Java package: com.nvidia.cuvs
Supplemental parameters to build CAGRA Index.
Public Members
AUTO_SELECT
Select build algorithm automatically
Source: java/cuvs-java/src/main/java/com/nvidia/cuvs/CagraIndexParams.java:36
IVF_PQ
Use IVF-PQ to build all-neighbors knn graph
Source: java/cuvs-java/src/main/java/com/nvidia/cuvs/CagraIndexParams.java:40
NN_DESCENT
Experimental, use NN-Descent to build all-neighbors knn graph
Source: java/cuvs-java/src/main/java/com/nvidia/cuvs/CagraIndexParams.java:44
ACE
Experimental, use ACE (Augmented Core Extraction) to build graph for large datasets. 4 to be consistent with the other interfaces.
Source: java/cuvs-java/src/main/java/com/nvidia/cuvs/CagraIndexParams.java:49
SIMILAR_SEARCH_PERFORMANCE
Create a graph that is very similar to an HNSW graph in terms of the number of nodes and search performance. Since HNSW produces a variable-degree graph (2M being the max graph degree) and CAGRA produces a fixed-degree graph, there’s always a difference in the performance of the two.
This function attempts to produce such a graph that the QPS and recall of the two graphs being searched by HNSW are close for any search parameter combination. The CAGRA-produced graph tends to have a “longer tail” on the low recall side (that is being slightly faster and less precise).
Source: java/cuvs-java/src/main/java/com/nvidia/cuvs/CagraIndexParams.java:85
SAME_GRAPH_FOOTPRINT
Create a graph that has the same binary size as an HNSW graph with the given parameters (graph_degree = 2 * M) while trying to match the search performance as closely as possible.
The reference HNSW index and the corresponding from-CAGRA generated HNSW index will NOT produce the same recalls and QPS for the same parameter ef. The graphs are different internally. For the same ef, the from-CAGRA index likely has a slightly higher recall and slightly lower QPS. However, the Recall-QPS curves should be similar (i.e. the points are just shifted along the curve).
Source: java/cuvs-java/src/main/java/com/nvidia/cuvs/CagraIndexParams.java:96
L2Expanded
evaluate as dist_ij = sum(x_ik^2) + sum(y_ij)^2 - 2*sum(x_ik * y_jk)
Source: java/cuvs-java/src/main/java/com/nvidia/cuvs/CagraIndexParams.java:124
L2SqrtExpanded
same as above, but inside the epilogue, perform square root operation
Source: java/cuvs-java/src/main/java/com/nvidia/cuvs/CagraIndexParams.java:128
CosineExpanded
cosine distance
Source: java/cuvs-java/src/main/java/com/nvidia/cuvs/CagraIndexParams.java:132
L1
L1 distance *
Source: java/cuvs-java/src/main/java/com/nvidia/cuvs/CagraIndexParams.java:136
L2Unexpanded
evaluate as dist_ij += (x_ik - y-jk)^2 *
Source: java/cuvs-java/src/main/java/com/nvidia/cuvs/CagraIndexParams.java:140
L2SqrtUnexpanded
same as above, but inside the epilogue, perform square root operation
Source: java/cuvs-java/src/main/java/com/nvidia/cuvs/CagraIndexParams.java:144
InnerProduct
basic inner product
Source: java/cuvs-java/src/main/java/com/nvidia/cuvs/CagraIndexParams.java:148
Linf
Chebyshev (Linf) distance
Source: java/cuvs-java/src/main/java/com/nvidia/cuvs/CagraIndexParams.java:152
Canberra
Canberra distance
Source: java/cuvs-java/src/main/java/com/nvidia/cuvs/CagraIndexParams.java:156
LpUnexpanded
Generalized Minkowski distance
Source: java/cuvs-java/src/main/java/com/nvidia/cuvs/CagraIndexParams.java:160
CorrelationExpanded
Correlation distance
Source: java/cuvs-java/src/main/java/com/nvidia/cuvs/CagraIndexParams.java:164
JaccardExpanded
Jaccard distance
Source: java/cuvs-java/src/main/java/com/nvidia/cuvs/CagraIndexParams.java:168
HellingerExpanded
Hellinger distance
Source: java/cuvs-java/src/main/java/com/nvidia/cuvs/CagraIndexParams.java:172
Haversine
Haversine distance
Source: java/cuvs-java/src/main/java/com/nvidia/cuvs/CagraIndexParams.java:176
BrayCurtis
Bray-Curtis distance
Source: java/cuvs-java/src/main/java/com/nvidia/cuvs/CagraIndexParams.java:180
JensenShannon
Jensen-Shannon distance
Source: java/cuvs-java/src/main/java/com/nvidia/cuvs/CagraIndexParams.java:184
HammingUnexpanded
Hamming distance
Source: java/cuvs-java/src/main/java/com/nvidia/cuvs/CagraIndexParams.java:188
KLDivergence
KLDivergence
Source: java/cuvs-java/src/main/java/com/nvidia/cuvs/CagraIndexParams.java:192
RusselRaoExpanded
RusselRao
Source: java/cuvs-java/src/main/java/com/nvidia/cuvs/CagraIndexParams.java:196
DiceExpanded
Dice-Sorensen distance
Source: java/cuvs-java/src/main/java/com/nvidia/cuvs/CagraIndexParams.java:200
Precomputed
Precomputed (special value)
Source: java/cuvs-java/src/main/java/com/nvidia/cuvs/CagraIndexParams.java:204
getIntermediateGraphDegree
Gets the degree of input graph for pruning.
Returns
the degree of input graph
Source: java/cuvs-java/src/main/java/com/nvidia/cuvs/CagraIndexParams.java:366
getGraphDegree
Gets the degree of output graph.
Returns
the degree of output graph
Source: java/cuvs-java/src/main/java/com/nvidia/cuvs/CagraIndexParams.java:375
getCagraGraphBuildAlgo
Gets the CagraGraphBuildAlgo used to build the index.
Source: java/cuvs-java/src/main/java/com/nvidia/cuvs/CagraIndexParams.java:382
getNNDescentNumIterations
Gets the number of iterations to run if building with
CagraGraphBuildAlgo#NN_DESCENT
Source: java/cuvs-java/src/main/java/com/nvidia/cuvs/CagraIndexParams.java:390
getCuvsDistanceType
Gets the CuvsDistanceType used to build the index.
Source: java/cuvs-java/src/main/java/com/nvidia/cuvs/CagraIndexParams.java:397
getNumWriterThreads
Gets the number of threads used to build the index.
Source: java/cuvs-java/src/main/java/com/nvidia/cuvs/CagraIndexParams.java:404
getCuVSIvfPqParams
Gets the IVF_PQ parameters.
Source: java/cuvs-java/src/main/java/com/nvidia/cuvs/CagraIndexParams.java:411
getCuVSAceParams
Gets the ACE parameters.
Source: java/cuvs-java/src/main/java/com/nvidia/cuvs/CagraIndexParams.java:418
getCuvsCagraGraphBuildAlgo
Gets the CAGRA build algorithm.
Source: java/cuvs-java/src/main/java/com/nvidia/cuvs/CagraIndexParams.java:425
getCagraCompressionParams
Gets the CAGRA compression parameters.
Source: java/cuvs-java/src/main/java/com/nvidia/cuvs/CagraIndexParams.java:432
withIntermediateGraphDegree
Sets the degree of input graph for pruning.
Parameters
Returns
an instance of Builder
Source: java/cuvs-java/src/main/java/com/nvidia/cuvs/CagraIndexParams.java:482
withGraphDegree
Sets the degree of output graph.
Parameters
Returns
an instance to Builder
Source: java/cuvs-java/src/main/java/com/nvidia/cuvs/CagraIndexParams.java:493
withCagraGraphBuildAlgo
Sets the CuvsCagraGraphBuildAlgo to use.
Parameters
Returns
an instance of Builder
Source: java/cuvs-java/src/main/java/com/nvidia/cuvs/CagraIndexParams.java:504
withMetric
Sets the metric to use.
Parameters
Returns
an instance of Builder
Source: java/cuvs-java/src/main/java/com/nvidia/cuvs/CagraIndexParams.java:515
withNNDescentNumIterations
Sets the Number of Iterations to run if building with
CagraGraphBuildAlgo#NN_DESCENT.
Parameters
Returns
an instance of Builder
Source: java/cuvs-java/src/main/java/com/nvidia/cuvs/CagraIndexParams.java:528
withNumWriterThreads
Sets the number of writer threads to use for indexing.
Parameters
Returns
an instance of Builder
Source: java/cuvs-java/src/main/java/com/nvidia/cuvs/CagraIndexParams.java:539
withCuVSIvfPqParams
Sets the IVF_PQ index parameters.
Parameters
Returns
an instance of Builder
Source: java/cuvs-java/src/main/java/com/nvidia/cuvs/CagraIndexParams.java:550
withCuVSAceParams
Sets the ACE index parameters.
Parameters
Returns
an instance of Builder
Source: java/cuvs-java/src/main/java/com/nvidia/cuvs/CagraIndexParams.java:561
withCompressionParams
Registers an instance of configured CagraCompressionParams with this
Builder.
Parameters
Returns
An instance of this Builder.
Source: java/cuvs-java/src/main/java/com/nvidia/cuvs/CagraIndexParams.java:573
build
Builds an instance of CagraIndexParams.
Returns
an instance of CagraIndexParams
Source: java/cuvs-java/src/main/java/com/nvidia/cuvs/CagraIndexParams.java:583
Source: java/cuvs-java/src/main/java/com/nvidia/cuvs/CagraIndexParams.java:18