diff options
author | Geir Storli <geirst@verizonmedia.com> | 2020-06-19 16:05:20 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-06-19 16:05:20 +0200 |
commit | 860e94ad566f700937ce87e51b638c12e8a5833e (patch) | |
tree | 35df4dc505720c2807628dbc8eddb2b622e627d1 | |
parent | f3955d3cd4d3f01c41f2d5d96e05666e6d0c827d (diff) | |
parent | c56ffa5e2735b6e3873aa18edc5e54a9128f3108 (diff) |
Merge pull request #13645 from vespa-engine/geirst/multi-threaded-hnsw-indexing-flag
Multi-threaded hnsw indexing flag
32 files changed, 176 insertions, 18 deletions
diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/derived/AttributeFields.java b/config-model/src/main/java/com/yahoo/searchdefinition/derived/AttributeFields.java index 004e44a7659..210f54de6a6 100644 --- a/config-model/src/main/java/com/yahoo/searchdefinition/derived/AttributeFields.java +++ b/config-model/src/main/java/com/yahoo/searchdefinition/derived/AttributeFields.java @@ -250,6 +250,7 @@ public class AttributeFields extends Derived implements AttributesConfig.Produce ib.hnsw.neighborstoexploreatinsert(params.neighborsToExploreAtInsert()); var dm = AttributesConfig.Attribute.Index.Hnsw.Distancemetric.Enum.valueOf(dma.toString()); ib.hnsw.distancemetric(dm); + ib.hnsw.multithreadedindexing(params.multiThreadedIndexing()); aaB.index(ib); } return aaB; diff --git a/config-model/src/main/java/com/yahoo/searchdefinition/document/HnswIndexParams.java b/config-model/src/main/java/com/yahoo/searchdefinition/document/HnswIndexParams.java index 2f084d3e513..f4f4cedd2aa 100644 --- a/config-model/src/main/java/com/yahoo/searchdefinition/document/HnswIndexParams.java +++ b/config-model/src/main/java/com/yahoo/searchdefinition/document/HnswIndexParams.java @@ -16,10 +16,12 @@ public class HnswIndexParams { private final Optional<Integer> maxLinksPerNode; private final Optional<Integer> neighborsToExploreAtInsert; + private final Optional<Boolean> multiThreadedIndexing; public static class Builder { private Optional<Integer> maxLinksPerNode = Optional.empty(); private Optional<Integer> neighborsToExploreAtInsert = Optional.empty(); + private Optional<Boolean> multiThreadedIndexing = Optional.empty(); public void setMaxLinksPerNode(int value) { maxLinksPerNode = Optional.of(value); @@ -27,20 +29,26 @@ public class HnswIndexParams { public void setNeighborsToExploreAtInsert(int value) { neighborsToExploreAtInsert = Optional.of(value); } + public void setMultiThreadedIndexing(boolean value) { + multiThreadedIndexing = Optional.of(value); + } public HnswIndexParams build() { - return new HnswIndexParams(maxLinksPerNode, neighborsToExploreAtInsert); + return new HnswIndexParams(maxLinksPerNode, neighborsToExploreAtInsert, multiThreadedIndexing); } } public HnswIndexParams() { this.maxLinksPerNode = Optional.empty(); this.neighborsToExploreAtInsert = Optional.empty(); + this.multiThreadedIndexing = Optional.empty(); } public HnswIndexParams(Optional<Integer> maxLinksPerNode, - Optional<Integer> neighborsToExploreAtInsert) { + Optional<Integer> neighborsToExploreAtInsert, + Optional<Boolean> multiThreadedIndexing) { this.maxLinksPerNode = maxLinksPerNode; this.neighborsToExploreAtInsert = neighborsToExploreAtInsert; + this.multiThreadedIndexing = multiThreadedIndexing; } /** @@ -51,7 +59,8 @@ public class HnswIndexParams { if (! other.isPresent()) return this; HnswIndexParams rhs = other.get(); return new HnswIndexParams(rhs.maxLinksPerNode.or(() -> maxLinksPerNode), - rhs.neighborsToExploreAtInsert.or(() -> neighborsToExploreAtInsert)); + rhs.neighborsToExploreAtInsert.or(() -> neighborsToExploreAtInsert), + rhs.multiThreadedIndexing.or(() -> multiThreadedIndexing)); } public int maxLinksPerNode() { @@ -61,4 +70,8 @@ public class HnswIndexParams { public int neighborsToExploreAtInsert() { return neighborsToExploreAtInsert.orElse(DEFAULT_NEIGHBORS_TO_EXPLORE_AT_INSERT); } + + public boolean multiThreadedIndexing() { + return multiThreadedIndexing.orElse(false); + } } diff --git a/config-model/src/main/javacc/SDParser.jj b/config-model/src/main/javacc/SDParser.jj index 75ef3a831e8..68dafc5e578 100644 --- a/config-model/src/main/javacc/SDParser.jj +++ b/config-model/src/main/javacc/SDParser.jj @@ -337,6 +337,7 @@ TOKEN : | < MAXLINKSPERNODE: "max-links-per-node" > | < DISTANCEMETRIC: "distance-metric" > | < NEIGHBORSTOEXPLOREATINSERT: "neighbors-to-explore-at-insert" > +| < MULTITHREADEDINDEXING: "multi-threaded-indexing" > | < SUMMARYFEATURES_SL: "summary-features" (" ")* ":" (~["}","\n"])* ("\n")? > | < SUMMARYFEATURES_ML: "summary-features" (<SEARCHLIB_SKIP>)? "{" (~["}"])* "}" > | < SUMMARYFEATURES_ML_INHERITS: "summary-features inherits " (<IDENTIFIER>) (<SEARCHLIB_SKIP>)? "{" (~["}"])* "}" > @@ -1841,7 +1842,8 @@ void hnswIndexBody(HnswIndexParams.Builder params) : } { ( <MAXLINKSPERNODE> <COLON> num = integer() { params.setMaxLinksPerNode(num); } - | <NEIGHBORSTOEXPLOREATINSERT> <COLON> num = integer() { params.setNeighborsToExploreAtInsert(num); } ) + | <NEIGHBORSTOEXPLOREATINSERT> <COLON> num = integer() { params.setNeighborsToExploreAtInsert(num); } + | <MULTITHREADEDINDEXING> { params.setMultiThreadedIndexing(true); } ) } /** diff --git a/config-model/src/test/derived/advanced/attributes.cfg b/config-model/src/test/derived/advanced/attributes.cfg index 0217d957432..7f0c2400b9a 100644 --- a/config-model/src/test/derived/advanced/attributes.cfg +++ b/config-model/src/test/derived/advanced/attributes.cfg @@ -24,3 +24,4 @@ attribute[].index.hnsw.enabled false attribute[].index.hnsw.maxlinkspernode 16 attribute[].index.hnsw.distancemetric EUCLIDEAN attribute[].index.hnsw.neighborstoexploreatinsert 200 +attribute[].index.hnsw.multithreadedindexing false diff --git a/config-model/src/test/derived/array_of_struct_attribute/attributes.cfg b/config-model/src/test/derived/array_of_struct_attribute/attributes.cfg index 8391a8a9bdd..807b514c8d6 100644 --- a/config-model/src/test/derived/array_of_struct_attribute/attributes.cfg +++ b/config-model/src/test/derived/array_of_struct_attribute/attributes.cfg @@ -24,6 +24,7 @@ attribute[].index.hnsw.enabled false attribute[].index.hnsw.maxlinkspernode 16 attribute[].index.hnsw.distancemetric EUCLIDEAN attribute[].index.hnsw.neighborstoexploreatinsert 200 +attribute[].index.hnsw.multithreadedindexing false attribute[].name "elem_array.weight" attribute[].datatype INT32 attribute[].collectiontype ARRAY @@ -50,3 +51,4 @@ attribute[].index.hnsw.enabled false attribute[].index.hnsw.maxlinkspernode 16 attribute[].index.hnsw.distancemetric EUCLIDEAN attribute[].index.hnsw.neighborstoexploreatinsert 200 +attribute[].index.hnsw.multithreadedindexing false diff --git a/config-model/src/test/derived/attributeprefetch/attributes.cfg b/config-model/src/test/derived/attributeprefetch/attributes.cfg index 448f9a82d36..b872efa3db8 100644 --- a/config-model/src/test/derived/attributeprefetch/attributes.cfg +++ b/config-model/src/test/derived/attributeprefetch/attributes.cfg @@ -24,6 +24,7 @@ attribute[].index.hnsw.enabled false attribute[].index.hnsw.maxlinkspernode 16 attribute[].index.hnsw.distancemetric EUCLIDEAN attribute[].index.hnsw.neighborstoexploreatinsert 200 +attribute[].index.hnsw.multithreadedindexing false attribute[].name "multibyte" attribute[].datatype INT8 attribute[].collectiontype ARRAY @@ -50,6 +51,7 @@ attribute[].index.hnsw.enabled false attribute[].index.hnsw.maxlinkspernode 16 attribute[].index.hnsw.distancemetric EUCLIDEAN attribute[].index.hnsw.neighborstoexploreatinsert 200 +attribute[].index.hnsw.multithreadedindexing false attribute[].name "wsbyte" attribute[].datatype INT8 attribute[].collectiontype WEIGHTEDSET @@ -76,6 +78,7 @@ attribute[].index.hnsw.enabled false attribute[].index.hnsw.maxlinkspernode 16 attribute[].index.hnsw.distancemetric EUCLIDEAN attribute[].index.hnsw.neighborstoexploreatinsert 200 +attribute[].index.hnsw.multithreadedindexing false attribute[].name "singleint" attribute[].datatype INT32 attribute[].collectiontype SINGLE @@ -102,6 +105,7 @@ attribute[].index.hnsw.enabled false attribute[].index.hnsw.maxlinkspernode 16 attribute[].index.hnsw.distancemetric EUCLIDEAN attribute[].index.hnsw.neighborstoexploreatinsert 200 +attribute[].index.hnsw.multithreadedindexing false attribute[].name "multiint" attribute[].datatype INT32 attribute[].collectiontype ARRAY @@ -128,6 +132,7 @@ attribute[].index.hnsw.enabled false attribute[].index.hnsw.maxlinkspernode 16 attribute[].index.hnsw.distancemetric EUCLIDEAN attribute[].index.hnsw.neighborstoexploreatinsert 200 +attribute[].index.hnsw.multithreadedindexing false attribute[].name "wsint" attribute[].datatype INT32 attribute[].collectiontype WEIGHTEDSET @@ -154,6 +159,7 @@ attribute[].index.hnsw.enabled false attribute[].index.hnsw.maxlinkspernode 16 attribute[].index.hnsw.distancemetric EUCLIDEAN attribute[].index.hnsw.neighborstoexploreatinsert 200 +attribute[].index.hnsw.multithreadedindexing false attribute[].name "singlelong" attribute[].datatype INT64 attribute[].collectiontype SINGLE @@ -180,6 +186,7 @@ attribute[].index.hnsw.enabled false attribute[].index.hnsw.maxlinkspernode 16 attribute[].index.hnsw.distancemetric EUCLIDEAN attribute[].index.hnsw.neighborstoexploreatinsert 200 +attribute[].index.hnsw.multithreadedindexing false attribute[].name "multilong" attribute[].datatype INT64 attribute[].collectiontype ARRAY @@ -206,6 +213,7 @@ attribute[].index.hnsw.enabled false attribute[].index.hnsw.maxlinkspernode 16 attribute[].index.hnsw.distancemetric EUCLIDEAN attribute[].index.hnsw.neighborstoexploreatinsert 200 +attribute[].index.hnsw.multithreadedindexing false attribute[].name "wslong" attribute[].datatype INT64 attribute[].collectiontype WEIGHTEDSET @@ -232,6 +240,7 @@ attribute[].index.hnsw.enabled false attribute[].index.hnsw.maxlinkspernode 16 attribute[].index.hnsw.distancemetric EUCLIDEAN attribute[].index.hnsw.neighborstoexploreatinsert 200 +attribute[].index.hnsw.multithreadedindexing false attribute[].name "singlefloat" attribute[].datatype FLOAT attribute[].collectiontype SINGLE @@ -258,6 +267,7 @@ attribute[].index.hnsw.enabled false attribute[].index.hnsw.maxlinkspernode 16 attribute[].index.hnsw.distancemetric EUCLIDEAN attribute[].index.hnsw.neighborstoexploreatinsert 200 +attribute[].index.hnsw.multithreadedindexing false attribute[].name "multifloat" attribute[].datatype FLOAT attribute[].collectiontype ARRAY @@ -284,6 +294,7 @@ attribute[].index.hnsw.enabled false attribute[].index.hnsw.maxlinkspernode 16 attribute[].index.hnsw.distancemetric EUCLIDEAN attribute[].index.hnsw.neighborstoexploreatinsert 200 +attribute[].index.hnsw.multithreadedindexing false attribute[].name "wsfloat" attribute[].datatype FLOAT attribute[].collectiontype WEIGHTEDSET @@ -310,6 +321,7 @@ attribute[].index.hnsw.enabled false attribute[].index.hnsw.maxlinkspernode 16 attribute[].index.hnsw.distancemetric EUCLIDEAN attribute[].index.hnsw.neighborstoexploreatinsert 200 +attribute[].index.hnsw.multithreadedindexing false attribute[].name "singledouble" attribute[].datatype DOUBLE attribute[].collectiontype SINGLE @@ -336,6 +348,7 @@ attribute[].index.hnsw.enabled false attribute[].index.hnsw.maxlinkspernode 16 attribute[].index.hnsw.distancemetric EUCLIDEAN attribute[].index.hnsw.neighborstoexploreatinsert 200 +attribute[].index.hnsw.multithreadedindexing false attribute[].name "multidouble" attribute[].datatype DOUBLE attribute[].collectiontype ARRAY @@ -362,6 +375,7 @@ attribute[].index.hnsw.enabled false attribute[].index.hnsw.maxlinkspernode 16 attribute[].index.hnsw.distancemetric EUCLIDEAN attribute[].index.hnsw.neighborstoexploreatinsert 200 +attribute[].index.hnsw.multithreadedindexing false attribute[].name "wsdouble" attribute[].datatype DOUBLE attribute[].collectiontype WEIGHTEDSET @@ -388,6 +402,7 @@ attribute[].index.hnsw.enabled false attribute[].index.hnsw.maxlinkspernode 16 attribute[].index.hnsw.distancemetric EUCLIDEAN attribute[].index.hnsw.neighborstoexploreatinsert 200 +attribute[].index.hnsw.multithreadedindexing false attribute[].name "singlestring" attribute[].datatype STRING attribute[].collectiontype SINGLE @@ -414,6 +429,7 @@ attribute[].index.hnsw.enabled false attribute[].index.hnsw.maxlinkspernode 16 attribute[].index.hnsw.distancemetric EUCLIDEAN attribute[].index.hnsw.neighborstoexploreatinsert 200 +attribute[].index.hnsw.multithreadedindexing false attribute[].name "multistring" attribute[].datatype STRING attribute[].collectiontype ARRAY @@ -440,6 +456,7 @@ attribute[].index.hnsw.enabled false attribute[].index.hnsw.maxlinkspernode 16 attribute[].index.hnsw.distancemetric EUCLIDEAN attribute[].index.hnsw.neighborstoexploreatinsert 200 +attribute[].index.hnsw.multithreadedindexing false attribute[].name "wsstring" attribute[].datatype STRING attribute[].collectiontype WEIGHTEDSET @@ -466,3 +483,4 @@ attribute[].index.hnsw.enabled false attribute[].index.hnsw.maxlinkspernode 16 attribute[].index.hnsw.distancemetric EUCLIDEAN attribute[].index.hnsw.neighborstoexploreatinsert 200 +attribute[].index.hnsw.multithreadedindexing false diff --git a/config-model/src/test/derived/attributes/attributes.cfg b/config-model/src/test/derived/attributes/attributes.cfg index d88c6b8b70a..750749de45c 100644 --- a/config-model/src/test/derived/attributes/attributes.cfg +++ b/config-model/src/test/derived/attributes/attributes.cfg @@ -24,6 +24,7 @@ attribute[].index.hnsw.enabled false attribute[].index.hnsw.maxlinkspernode 16 attribute[].index.hnsw.distancemetric EUCLIDEAN attribute[].index.hnsw.neighborstoexploreatinsert 200 +attribute[].index.hnsw.multithreadedindexing false attribute[].name "a2" attribute[].datatype STRING attribute[].collectiontype SINGLE @@ -50,6 +51,7 @@ attribute[].index.hnsw.enabled false attribute[].index.hnsw.maxlinkspernode 16 attribute[].index.hnsw.distancemetric EUCLIDEAN attribute[].index.hnsw.neighborstoexploreatinsert 200 +attribute[].index.hnsw.multithreadedindexing false attribute[].name "a3" attribute[].datatype STRING attribute[].collectiontype SINGLE @@ -76,6 +78,7 @@ attribute[].index.hnsw.enabled false attribute[].index.hnsw.maxlinkspernode 16 attribute[].index.hnsw.distancemetric EUCLIDEAN attribute[].index.hnsw.neighborstoexploreatinsert 200 +attribute[].index.hnsw.multithreadedindexing false attribute[].name "a5" attribute[].datatype STRING attribute[].collectiontype SINGLE @@ -102,6 +105,7 @@ attribute[].index.hnsw.enabled false attribute[].index.hnsw.maxlinkspernode 16 attribute[].index.hnsw.distancemetric EUCLIDEAN attribute[].index.hnsw.neighborstoexploreatinsert 200 +attribute[].index.hnsw.multithreadedindexing false attribute[].name "a6" attribute[].datatype STRING attribute[].collectiontype SINGLE @@ -128,6 +132,7 @@ attribute[].index.hnsw.enabled false attribute[].index.hnsw.maxlinkspernode 16 attribute[].index.hnsw.distancemetric EUCLIDEAN attribute[].index.hnsw.neighborstoexploreatinsert 200 +attribute[].index.hnsw.multithreadedindexing false attribute[].name "b1" attribute[].datatype STRING attribute[].collectiontype SINGLE @@ -154,6 +159,7 @@ attribute[].index.hnsw.enabled false attribute[].index.hnsw.maxlinkspernode 16 attribute[].index.hnsw.distancemetric EUCLIDEAN attribute[].index.hnsw.neighborstoexploreatinsert 200 +attribute[].index.hnsw.multithreadedindexing false attribute[].name "b2" attribute[].datatype STRING attribute[].collectiontype SINGLE @@ -180,6 +186,7 @@ attribute[].index.hnsw.enabled false attribute[].index.hnsw.maxlinkspernode 16 attribute[].index.hnsw.distancemetric EUCLIDEAN attribute[].index.hnsw.neighborstoexploreatinsert 200 +attribute[].index.hnsw.multithreadedindexing false attribute[].name "b3" attribute[].datatype STRING attribute[].collectiontype SINGLE @@ -206,6 +213,7 @@ attribute[].index.hnsw.enabled false attribute[].index.hnsw.maxlinkspernode 16 attribute[].index.hnsw.distancemetric EUCLIDEAN attribute[].index.hnsw.neighborstoexploreatinsert 200 +attribute[].index.hnsw.multithreadedindexing false attribute[].name "b4" attribute[].datatype INT32 attribute[].collectiontype SINGLE @@ -232,6 +240,7 @@ attribute[].index.hnsw.enabled false attribute[].index.hnsw.maxlinkspernode 16 attribute[].index.hnsw.distancemetric EUCLIDEAN attribute[].index.hnsw.neighborstoexploreatinsert 200 +attribute[].index.hnsw.multithreadedindexing false attribute[].name "b5" attribute[].datatype INT32 attribute[].collectiontype SINGLE @@ -258,6 +267,7 @@ attribute[].index.hnsw.enabled false attribute[].index.hnsw.maxlinkspernode 16 attribute[].index.hnsw.distancemetric EUCLIDEAN attribute[].index.hnsw.neighborstoexploreatinsert 200 +attribute[].index.hnsw.multithreadedindexing false attribute[].name "b6" attribute[].datatype INT64 attribute[].collectiontype ARRAY @@ -284,6 +294,7 @@ attribute[].index.hnsw.enabled false attribute[].index.hnsw.maxlinkspernode 16 attribute[].index.hnsw.distancemetric EUCLIDEAN attribute[].index.hnsw.neighborstoexploreatinsert 200 +attribute[].index.hnsw.multithreadedindexing false attribute[].name "b7" attribute[].datatype DOUBLE attribute[].collectiontype WEIGHTEDSET @@ -310,6 +321,7 @@ attribute[].index.hnsw.enabled false attribute[].index.hnsw.maxlinkspernode 16 attribute[].index.hnsw.distancemetric EUCLIDEAN attribute[].index.hnsw.neighborstoexploreatinsert 200 +attribute[].index.hnsw.multithreadedindexing false attribute[].name "a9" attribute[].datatype INT32 attribute[].collectiontype SINGLE @@ -336,6 +348,7 @@ attribute[].index.hnsw.enabled false attribute[].index.hnsw.maxlinkspernode 16 attribute[].index.hnsw.distancemetric EUCLIDEAN attribute[].index.hnsw.neighborstoexploreatinsert 200 +attribute[].index.hnsw.multithreadedindexing false attribute[].name "a10" attribute[].datatype INT32 attribute[].collectiontype ARRAY @@ -362,6 +375,7 @@ attribute[].index.hnsw.enabled false attribute[].index.hnsw.maxlinkspernode 16 attribute[].index.hnsw.distancemetric EUCLIDEAN attribute[].index.hnsw.neighborstoexploreatinsert 200 +attribute[].index.hnsw.multithreadedindexing false attribute[].name "a11" attribute[].datatype INT32 attribute[].collectiontype SINGLE @@ -388,6 +402,7 @@ attribute[].index.hnsw.enabled false attribute[].index.hnsw.maxlinkspernode 16 attribute[].index.hnsw.distancemetric EUCLIDEAN attribute[].index.hnsw.neighborstoexploreatinsert 200 +attribute[].index.hnsw.multithreadedindexing false attribute[].name "a12" attribute[].datatype INT32 attribute[].collectiontype SINGLE @@ -414,6 +429,7 @@ attribute[].index.hnsw.enabled false attribute[].index.hnsw.maxlinkspernode 16 attribute[].index.hnsw.distancemetric EUCLIDEAN attribute[].index.hnsw.neighborstoexploreatinsert 200 +attribute[].index.hnsw.multithreadedindexing false attribute[].name "a7_arr" attribute[].datatype STRING attribute[].collectiontype ARRAY @@ -440,6 +456,7 @@ attribute[].index.hnsw.enabled false attribute[].index.hnsw.maxlinkspernode 16 attribute[].index.hnsw.distancemetric EUCLIDEAN attribute[].index.hnsw.neighborstoexploreatinsert 200 +attribute[].index.hnsw.multithreadedindexing false attribute[].name "a8_arr" attribute[].datatype STRING attribute[].collectiontype ARRAY @@ -466,3 +483,4 @@ attribute[].index.hnsw.enabled false attribute[].index.hnsw.maxlinkspernode 16 attribute[].index.hnsw.distancemetric EUCLIDEAN attribute[].index.hnsw.neighborstoexploreatinsert 200 +attribute[].index.hnsw.multithreadedindexing false diff --git a/config-model/src/test/derived/complex/attributes.cfg b/config-model/src/test/derived/complex/attributes.cfg index 337b736471d..f1449cf52be 100644 --- a/config-model/src/test/derived/complex/attributes.cfg +++ b/config-model/src/test/derived/complex/attributes.cfg @@ -24,6 +24,7 @@ attribute[].index.hnsw.enabled false attribute[].index.hnsw.maxlinkspernode 16 attribute[].index.hnsw.distancemetric EUCLIDEAN attribute[].index.hnsw.neighborstoexploreatinsert 200 +attribute[].index.hnsw.multithreadedindexing false attribute[].name "fleeting" attribute[].datatype FLOAT attribute[].collectiontype ARRAY @@ -50,6 +51,7 @@ attribute[].index.hnsw.enabled false attribute[].index.hnsw.maxlinkspernode 16 attribute[].index.hnsw.distancemetric EUCLIDEAN attribute[].index.hnsw.neighborstoexploreatinsert 200 +attribute[].index.hnsw.multithreadedindexing false attribute[].name "fleeting2" attribute[].datatype FLOAT attribute[].collectiontype SINGLE @@ -76,6 +78,7 @@ attribute[].index.hnsw.enabled false attribute[].index.hnsw.maxlinkspernode 16 attribute[].index.hnsw.distancemetric EUCLIDEAN attribute[].index.hnsw.neighborstoexploreatinsert 200 +attribute[].index.hnsw.multithreadedindexing false attribute[].name "foundat" attribute[].datatype INT64 attribute[].collectiontype SINGLE @@ -102,6 +105,7 @@ attribute[].index.hnsw.enabled false attribute[].index.hnsw.maxlinkspernode 16 attribute[].index.hnsw.distancemetric EUCLIDEAN attribute[].index.hnsw.neighborstoexploreatinsert 200 +attribute[].index.hnsw.multithreadedindexing false attribute[].name "collapseby" attribute[].datatype INT32 attribute[].collectiontype SINGLE @@ -128,6 +132,7 @@ attribute[].index.hnsw.enabled false attribute[].index.hnsw.maxlinkspernode 16 attribute[].index.hnsw.distancemetric EUCLIDEAN attribute[].index.hnsw.neighborstoexploreatinsert 200 +attribute[].index.hnsw.multithreadedindexing false attribute[].name "ts" attribute[].datatype INT64 attribute[].collectiontype SINGLE @@ -154,6 +159,7 @@ attribute[].index.hnsw.enabled false attribute[].index.hnsw.maxlinkspernode 16 attribute[].index.hnsw.distancemetric EUCLIDEAN attribute[].index.hnsw.neighborstoexploreatinsert 200 +attribute[].index.hnsw.multithreadedindexing false attribute[].name "combineda" attribute[].datatype INT32 attribute[].collectiontype SINGLE @@ -180,6 +186,7 @@ attribute[].index.hnsw.enabled false attribute[].index.hnsw.maxlinkspernode 16 attribute[].index.hnsw.distancemetric EUCLIDEAN attribute[].index.hnsw.neighborstoexploreatinsert 200 +attribute[].index.hnsw.multithreadedindexing false attribute[].name "year_arr" attribute[].datatype INT32 attribute[].collectiontype ARRAY @@ -206,6 +213,7 @@ attribute[].index.hnsw.enabled false attribute[].index.hnsw.maxlinkspernode 16 attribute[].index.hnsw.distancemetric EUCLIDEAN attribute[].index.hnsw.neighborstoexploreatinsert 200 +attribute[].index.hnsw.multithreadedindexing false attribute[].name "year_sub" attribute[].datatype INT32 attribute[].collectiontype SINGLE @@ -232,3 +240,4 @@ attribute[].index.hnsw.enabled false attribute[].index.hnsw.maxlinkspernode 16 attribute[].index.hnsw.distancemetric EUCLIDEAN attribute[].index.hnsw.neighborstoexploreatinsert 200 +attribute[].index.hnsw.multithreadedindexing false diff --git a/config-model/src/test/derived/hnsw_index/attributes.cfg b/config-model/src/test/derived/hnsw_index/attributes.cfg index 087a116f4cd..9cea76174c7 100644 --- a/config-model/src/test/derived/hnsw_index/attributes.cfg +++ b/config-model/src/test/derived/hnsw_index/attributes.cfg @@ -24,6 +24,7 @@ attribute[].index.hnsw.enabled true attribute[].index.hnsw.maxlinkspernode 32 attribute[].index.hnsw.distancemetric ANGULAR attribute[].index.hnsw.neighborstoexploreatinsert 300 +attribute[].index.hnsw.multithreadedindexing true attribute[].name "t2" attribute[].datatype TENSOR attribute[].collectiontype SINGLE @@ -50,3 +51,4 @@ attribute[].index.hnsw.enabled false attribute[].index.hnsw.maxlinkspernode 16 attribute[].index.hnsw.distancemetric EUCLIDEAN attribute[].index.hnsw.neighborstoexploreatinsert 200 +attribute[].index.hnsw.multithreadedindexing false diff --git a/config-model/src/test/derived/hnsw_index/test.sd b/config-model/src/test/derived/hnsw_index/test.sd index 82291be9747..373624c9e7b 100644 --- a/config-model/src/test/derived/hnsw_index/test.sd +++ b/config-model/src/test/derived/hnsw_index/test.sd @@ -9,6 +9,7 @@ search test { hnsw { max-links-per-node: 32 neighbors-to-explore-at-insert: 300 + multi-threaded-indexing } } } diff --git a/config-model/src/test/derived/imported_position_field/attributes.cfg b/config-model/src/test/derived/imported_position_field/attributes.cfg index 685f708768a..75184c66789 100644 --- a/config-model/src/test/derived/imported_position_field/attributes.cfg +++ b/config-model/src/test/derived/imported_position_field/attributes.cfg @@ -24,6 +24,7 @@ attribute[].index.hnsw.enabled false attribute[].index.hnsw.maxlinkspernode 16 attribute[].index.hnsw.distancemetric EUCLIDEAN attribute[].index.hnsw.neighborstoexploreatinsert 200 +attribute[].index.hnsw.multithreadedindexing false attribute[].name "my_pos_zcurve" attribute[].datatype INT64 attribute[].collectiontype SINGLE @@ -50,3 +51,4 @@ attribute[].index.hnsw.enabled false attribute[].index.hnsw.maxlinkspernode 16 attribute[].index.hnsw.distancemetric EUCLIDEAN attribute[].index.hnsw.neighborstoexploreatinsert 200 +attribute[].index.hnsw.multithreadedindexing false diff --git a/config-model/src/test/derived/imported_struct_fields/attributes.cfg b/config-model/src/test/derived/imported_struct_fields/attributes.cfg index e8b7a7b6235..6256f98d05f 100644 --- a/config-model/src/test/derived/imported_struct_fields/attributes.cfg +++ b/config-model/src/test/derived/imported_struct_fields/attributes.cfg @@ -24,6 +24,7 @@ attribute[].index.hnsw.enabled false attribute[].index.hnsw.maxlinkspernode 16 attribute[].index.hnsw.distancemetric EUCLIDEAN attribute[].index.hnsw.neighborstoexploreatinsert 200 +attribute[].index.hnsw.multithreadedindexing false attribute[].name "my_elem_array.name" attribute[].datatype STRING attribute[].collectiontype SINGLE @@ -50,6 +51,7 @@ attribute[].index.hnsw.enabled false attribute[].index.hnsw.maxlinkspernode 16 attribute[].index.hnsw.distancemetric EUCLIDEAN attribute[].index.hnsw.neighborstoexploreatinsert 200 +attribute[].index.hnsw.multithreadedindexing false attribute[].name "my_elem_array.weight" attribute[].datatype INT32 attribute[].collectiontype SINGLE @@ -76,6 +78,7 @@ attribute[].index.hnsw.enabled false attribute[].index.hnsw.maxlinkspernode 16 attribute[].index.hnsw.distancemetric EUCLIDEAN attribute[].index.hnsw.neighborstoexploreatinsert 200 +attribute[].index.hnsw.multithreadedindexing false attribute[].name "my_elem_map.key" attribute[].datatype STRING attribute[].collectiontype SINGLE @@ -102,6 +105,7 @@ attribute[].index.hnsw.enabled false attribute[].index.hnsw.maxlinkspernode 16 attribute[].index.hnsw.distancemetric EUCLIDEAN attribute[].index.hnsw.neighborstoexploreatinsert 200 +attribute[].index.hnsw.multithreadedindexing false attribute[].name "my_elem_map.value.name" attribute[].datatype STRING attribute[].collectiontype SINGLE @@ -128,6 +132,7 @@ attribute[].index.hnsw.enabled false attribute[].index.hnsw.maxlinkspernode 16 attribute[].index.hnsw.distancemetric EUCLIDEAN attribute[].index.hnsw.neighborstoexploreatinsert 200 +attribute[].index.hnsw.multithreadedindexing false attribute[].name "my_elem_map.value.weight" attribute[].datatype INT32 attribute[].collectiontype SINGLE @@ -154,6 +159,7 @@ attribute[].index.hnsw.enabled false attribute[].index.hnsw.maxlinkspernode 16 attribute[].index.hnsw.distancemetric EUCLIDEAN attribute[].index.hnsw.neighborstoexploreatinsert 200 +attribute[].index.hnsw.multithreadedindexing false attribute[].name "my_str_int_map.key" attribute[].datatype STRING attribute[].collectiontype SINGLE @@ -180,6 +186,7 @@ attribute[].index.hnsw.enabled false attribute[].index.hnsw.maxlinkspernode 16 attribute[].index.hnsw.distancemetric EUCLIDEAN attribute[].index.hnsw.neighborstoexploreatinsert 200 +attribute[].index.hnsw.multithreadedindexing false attribute[].name "my_str_int_map.value" attribute[].datatype INT32 attribute[].collectiontype SINGLE @@ -206,3 +213,4 @@ attribute[].index.hnsw.enabled false attribute[].index.hnsw.maxlinkspernode 16 attribute[].index.hnsw.distancemetric EUCLIDEAN attribute[].index.hnsw.neighborstoexploreatinsert 200 +attribute[].index.hnsw.multithreadedindexing false diff --git a/config-model/src/test/derived/importedfields/attributes.cfg b/config-model/src/test/derived/importedfields/attributes.cfg index 6f3514102b4..87a841a95e0 100644 --- a/config-model/src/test/derived/importedfields/attributes.cfg +++ b/config-model/src/test/derived/importedfields/attributes.cfg @@ -24,6 +24,7 @@ attribute[].index.hnsw.enabled false attribute[].index.hnsw.maxlinkspernode 16 attribute[].index.hnsw.distancemetric EUCLIDEAN attribute[].index.hnsw.neighborstoexploreatinsert 200 +attribute[].index.hnsw.multithreadedindexing false attribute[].name "b_ref" attribute[].datatype REFERENCE attribute[].collectiontype SINGLE @@ -50,6 +51,7 @@ attribute[].index.hnsw.enabled false attribute[].index.hnsw.maxlinkspernode 16 attribute[].index.hnsw.distancemetric EUCLIDEAN attribute[].index.hnsw.neighborstoexploreatinsert 200 +attribute[].index.hnsw.multithreadedindexing false attribute[].name "b_ref_with_summary" attribute[].datatype REFERENCE attribute[].collectiontype SINGLE @@ -76,6 +78,7 @@ attribute[].index.hnsw.enabled false attribute[].index.hnsw.maxlinkspernode 16 attribute[].index.hnsw.distancemetric EUCLIDEAN attribute[].index.hnsw.neighborstoexploreatinsert 200 +attribute[].index.hnsw.multithreadedindexing false attribute[].name "my_int_field" attribute[].datatype INT32 attribute[].collectiontype SINGLE @@ -102,6 +105,7 @@ attribute[].index.hnsw.enabled false attribute[].index.hnsw.maxlinkspernode 16 attribute[].index.hnsw.distancemetric EUCLIDEAN attribute[].index.hnsw.neighborstoexploreatinsert 200 +attribute[].index.hnsw.multithreadedindexing false attribute[].name "my_string_field" attribute[].datatype STRING attribute[].collectiontype SINGLE @@ -128,6 +132,7 @@ attribute[].index.hnsw.enabled false attribute[].index.hnsw.maxlinkspernode 16 attribute[].index.hnsw.distancemetric EUCLIDEAN attribute[].index.hnsw.neighborstoexploreatinsert 200 +attribute[].index.hnsw.multithreadedindexing false attribute[].name "my_int_array_field" attribute[].datatype INT32 attribute[].collectiontype ARRAY @@ -154,6 +159,7 @@ attribute[].index.hnsw.enabled false attribute[].index.hnsw.maxlinkspernode 16 attribute[].index.hnsw.distancemetric EUCLIDEAN attribute[].index.hnsw.neighborstoexploreatinsert 200 +attribute[].index.hnsw.multithreadedindexing false attribute[].name "my_int_wset_field" attribute[].datatype INT32 attribute[].collectiontype WEIGHTEDSET @@ -180,6 +186,7 @@ attribute[].index.hnsw.enabled false attribute[].index.hnsw.maxlinkspernode 16 attribute[].index.hnsw.distancemetric EUCLIDEAN attribute[].index.hnsw.neighborstoexploreatinsert 200 +attribute[].index.hnsw.multithreadedindexing false attribute[].name "my_ancient_int_field" attribute[].datatype INT32 attribute[].collectiontype SINGLE @@ -206,3 +213,4 @@ attribute[].index.hnsw.enabled false attribute[].index.hnsw.maxlinkspernode 16 attribute[].index.hnsw.distancemetric EUCLIDEAN attribute[].index.hnsw.neighborstoexploreatinsert 200 +attribute[].index.hnsw.multithreadedindexing false diff --git a/config-model/src/test/derived/inheritance/attributes.cfg b/config-model/src/test/derived/inheritance/attributes.cfg index 541092622ff..f5ced387e8e 100644 --- a/config-model/src/test/derived/inheritance/attributes.cfg +++ b/config-model/src/test/derived/inheritance/attributes.cfg @@ -24,6 +24,7 @@ attribute[].index.hnsw.enabled false attribute[].index.hnsw.maxlinkspernode 16 attribute[].index.hnsw.distancemetric EUCLIDEAN attribute[].index.hnsw.neighborstoexploreatinsert 200 +attribute[].index.hnsw.multithreadedindexing false attribute[].name "overridden" attribute[].datatype INT32 attribute[].collectiontype SINGLE @@ -50,6 +51,7 @@ attribute[].index.hnsw.enabled false attribute[].index.hnsw.maxlinkspernode 16 attribute[].index.hnsw.distancemetric EUCLIDEAN attribute[].index.hnsw.neighborstoexploreatinsert 200 +attribute[].index.hnsw.multithreadedindexing false attribute[].name "onlymother" attribute[].datatype STRING attribute[].collectiontype SINGLE @@ -76,3 +78,4 @@ attribute[].index.hnsw.enabled false attribute[].index.hnsw.maxlinkspernode 16 attribute[].index.hnsw.distancemetric EUCLIDEAN attribute[].index.hnsw.neighborstoexploreatinsert 200 +attribute[].index.hnsw.multithreadedindexing false diff --git a/config-model/src/test/derived/inheritfromparent/attributes.cfg b/config-model/src/test/derived/inheritfromparent/attributes.cfg index dda86f765be..26b0f77417a 100644 --- a/config-model/src/test/derived/inheritfromparent/attributes.cfg +++ b/config-model/src/test/derived/inheritfromparent/attributes.cfg @@ -24,3 +24,4 @@ attribute[].index.hnsw.enabled false attribute[].index.hnsw.maxlinkspernode 16 attribute[].index.hnsw.distancemetric EUCLIDEAN attribute[].index.hnsw.neighborstoexploreatinsert 200 +attribute[].index.hnsw.multithreadedindexing false diff --git a/config-model/src/test/derived/map_attribute/attributes.cfg b/config-model/src/test/derived/map_attribute/attributes.cfg index 702e065d15a..7f224ff0c6a 100644 --- a/config-model/src/test/derived/map_attribute/attributes.cfg +++ b/config-model/src/test/derived/map_attribute/attributes.cfg @@ -24,6 +24,7 @@ attribute[].index.hnsw.enabled false attribute[].index.hnsw.maxlinkspernode 16 attribute[].index.hnsw.distancemetric EUCLIDEAN attribute[].index.hnsw.neighborstoexploreatinsert 200 +attribute[].index.hnsw.multithreadedindexing false attribute[].name "str_map.value" attribute[].datatype STRING attribute[].collectiontype ARRAY @@ -50,6 +51,7 @@ attribute[].index.hnsw.enabled false attribute[].index.hnsw.maxlinkspernode 16 attribute[].index.hnsw.distancemetric EUCLIDEAN attribute[].index.hnsw.neighborstoexploreatinsert 200 +attribute[].index.hnsw.multithreadedindexing false attribute[].name "int_map.key" attribute[].datatype INT32 attribute[].collectiontype ARRAY @@ -76,3 +78,4 @@ attribute[].index.hnsw.enabled false attribute[].index.hnsw.maxlinkspernode 16 attribute[].index.hnsw.distancemetric EUCLIDEAN attribute[].index.hnsw.neighborstoexploreatinsert 200 +attribute[].index.hnsw.multithreadedindexing false diff --git a/config-model/src/test/derived/map_of_struct_attribute/attributes.cfg b/config-model/src/test/derived/map_of_struct_attribute/attributes.cfg index 3eca0d5bbf8..f08fd4e8907 100644 --- a/config-model/src/test/derived/map_of_struct_attribute/attributes.cfg +++ b/config-model/src/test/derived/map_of_struct_attribute/attributes.cfg @@ -24,6 +24,7 @@ attribute[].index.hnsw.enabled false attribute[].index.hnsw.maxlinkspernode 16 attribute[].index.hnsw.distancemetric EUCLIDEAN attribute[].index.hnsw.neighborstoexploreatinsert 200 +attribute[].index.hnsw.multithreadedindexing false attribute[].name "str_elem_map.value.name" attribute[].datatype STRING attribute[].collectiontype ARRAY @@ -50,6 +51,7 @@ attribute[].index.hnsw.enabled false attribute[].index.hnsw.maxlinkspernode 16 attribute[].index.hnsw.distancemetric EUCLIDEAN attribute[].index.hnsw.neighborstoexploreatinsert 200 +attribute[].index.hnsw.multithreadedindexing false attribute[].name "str_elem_map.value.weight" attribute[].datatype INT32 attribute[].collectiontype ARRAY @@ -76,6 +78,7 @@ attribute[].index.hnsw.enabled false attribute[].index.hnsw.maxlinkspernode 16 attribute[].index.hnsw.distancemetric EUCLIDEAN attribute[].index.hnsw.neighborstoexploreatinsert 200 +attribute[].index.hnsw.multithreadedindexing false attribute[].name "int_elem_map.key" attribute[].datatype INT32 attribute[].collectiontype ARRAY @@ -102,6 +105,7 @@ attribute[].index.hnsw.enabled false attribute[].index.hnsw.maxlinkspernode 16 attribute[].index.hnsw.distancemetric EUCLIDEAN attribute[].index.hnsw.neighborstoexploreatinsert 200 +attribute[].index.hnsw.multithreadedindexing false attribute[].name "int_elem_map.value.name" attribute[].datatype STRING attribute[].collectiontype ARRAY @@ -128,3 +132,4 @@ attribute[].index.hnsw.enabled false attribute[].index.hnsw.maxlinkspernode 16 attribute[].index.hnsw.distancemetric EUCLIDEAN attribute[].index.hnsw.neighborstoexploreatinsert 200 +attribute[].index.hnsw.multithreadedindexing false diff --git a/config-model/src/test/derived/music/attributes.cfg b/config-model/src/test/derived/music/attributes.cfg index f75b8e06b80..d33313c30eb 100644 --- a/config-model/src/test/derived/music/attributes.cfg +++ b/config-model/src/test/derived/music/attributes.cfg @@ -24,6 +24,7 @@ attribute[].index.hnsw.enabled false attribute[].index.hnsw.maxlinkspernode 16 attribute[].index.hnsw.distancemetric EUCLIDEAN attribute[].index.hnsw.neighborstoexploreatinsert 200 +attribute[].index.hnsw.multithreadedindexing false attribute[].name "pto" attribute[].datatype INT32 attribute[].collectiontype SINGLE @@ -50,6 +51,7 @@ attribute[].index.hnsw.enabled false attribute[].index.hnsw.maxlinkspernode 16 attribute[].index.hnsw.distancemetric EUCLIDEAN attribute[].index.hnsw.neighborstoexploreatinsert 200 +attribute[].index.hnsw.multithreadedindexing false attribute[].name "mid" attribute[].datatype INT32 attribute[].collectiontype SINGLE @@ -76,6 +78,7 @@ attribute[].index.hnsw.enabled false attribute[].index.hnsw.maxlinkspernode 16 attribute[].index.hnsw.distancemetric EUCLIDEAN attribute[].index.hnsw.neighborstoexploreatinsert 200 +attribute[].index.hnsw.multithreadedindexing false attribute[].name "weight" attribute[].datatype FLOAT attribute[].collectiontype SINGLE @@ -102,6 +105,7 @@ attribute[].index.hnsw.enabled false attribute[].index.hnsw.maxlinkspernode 16 attribute[].index.hnsw.distancemetric EUCLIDEAN attribute[].index.hnsw.neighborstoexploreatinsert 200 +attribute[].index.hnsw.multithreadedindexing false attribute[].name "bgnpfrom" attribute[].datatype FLOAT attribute[].collectiontype SINGLE @@ -128,6 +132,7 @@ attribute[].index.hnsw.enabled false attribute[].index.hnsw.maxlinkspernode 16 attribute[].index.hnsw.distancemetric EUCLIDEAN attribute[].index.hnsw.neighborstoexploreatinsert 200 +attribute[].index.hnsw.multithreadedindexing false attribute[].name "newestedition" attribute[].datatype INT32 attribute[].collectiontype SINGLE @@ -154,6 +159,7 @@ attribute[].index.hnsw.enabled false attribute[].index.hnsw.maxlinkspernode 16 attribute[].index.hnsw.distancemetric EUCLIDEAN attribute[].index.hnsw.neighborstoexploreatinsert 200 +attribute[].index.hnsw.multithreadedindexing false attribute[].name "year" attribute[].datatype INT32 attribute[].collectiontype SINGLE @@ -180,6 +186,7 @@ attribute[].index.hnsw.enabled false attribute[].index.hnsw.maxlinkspernode 16 attribute[].index.hnsw.distancemetric EUCLIDEAN attribute[].index.hnsw.neighborstoexploreatinsert 200 +attribute[].index.hnsw.multithreadedindexing false attribute[].name "did" attribute[].datatype INT32 attribute[].collectiontype SINGLE @@ -206,6 +213,7 @@ attribute[].index.hnsw.enabled false attribute[].index.hnsw.maxlinkspernode 16 attribute[].index.hnsw.distancemetric EUCLIDEAN attribute[].index.hnsw.neighborstoexploreatinsert 200 +attribute[].index.hnsw.multithreadedindexing false attribute[].name "cbid" attribute[].datatype INT32 attribute[].collectiontype SINGLE @@ -232,6 +240,7 @@ attribute[].index.hnsw.enabled false attribute[].index.hnsw.maxlinkspernode 16 attribute[].index.hnsw.distancemetric EUCLIDEAN attribute[].index.hnsw.neighborstoexploreatinsert 200 +attribute[].index.hnsw.multithreadedindexing false attribute[].name "hiphopvalue_arr" attribute[].datatype STRING attribute[].collectiontype ARRAY @@ -258,6 +267,7 @@ attribute[].index.hnsw.enabled false attribute[].index.hnsw.maxlinkspernode 16 attribute[].index.hnsw.distancemetric EUCLIDEAN attribute[].index.hnsw.neighborstoexploreatinsert 200 +attribute[].index.hnsw.multithreadedindexing false attribute[].name "metalvalue_arr" attribute[].datatype STRING attribute[].collectiontype ARRAY @@ -284,3 +294,4 @@ attribute[].index.hnsw.enabled false attribute[].index.hnsw.maxlinkspernode 16 attribute[].index.hnsw.distancemetric EUCLIDEAN attribute[].index.hnsw.neighborstoexploreatinsert 200 +attribute[].index.hnsw.multithreadedindexing false diff --git a/config-model/src/test/derived/newrank/attributes.cfg b/config-model/src/test/derived/newrank/attributes.cfg index 303ea35223a..ae3a33e49c3 100644 --- a/config-model/src/test/derived/newrank/attributes.cfg +++ b/config-model/src/test/derived/newrank/attributes.cfg @@ -24,6 +24,7 @@ attribute[].index.hnsw.enabled false attribute[].index.hnsw.maxlinkspernode 16 attribute[].index.hnsw.distancemetric EUCLIDEAN attribute[].index.hnsw.neighborstoexploreatinsert 200 +attribute[].index.hnsw.multithreadedindexing false attribute[].name "pto" attribute[].datatype INT32 attribute[].collectiontype SINGLE @@ -50,6 +51,7 @@ attribute[].index.hnsw.enabled false attribute[].index.hnsw.maxlinkspernode 16 attribute[].index.hnsw.distancemetric EUCLIDEAN attribute[].index.hnsw.neighborstoexploreatinsert 200 +attribute[].index.hnsw.multithreadedindexing false attribute[].name "mid" attribute[].datatype INT32 attribute[].collectiontype SINGLE @@ -76,6 +78,7 @@ attribute[].index.hnsw.enabled false attribute[].index.hnsw.maxlinkspernode 16 attribute[].index.hnsw.distancemetric EUCLIDEAN attribute[].index.hnsw.neighborstoexploreatinsert 200 +attribute[].index.hnsw.multithreadedindexing false attribute[].name "weight" attribute[].datatype FLOAT attribute[].collectiontype SINGLE @@ -102,6 +105,7 @@ attribute[].index.hnsw.enabled false attribute[].index.hnsw.maxlinkspernode 16 attribute[].index.hnsw.distancemetric EUCLIDEAN attribute[].index.hnsw.neighborstoexploreatinsert 200 +attribute[].index.hnsw.multithreadedindexing false attribute[].name "bgnpfrom" attribute[].datatype FLOAT attribute[].collectiontype SINGLE @@ -128,6 +132,7 @@ attribute[].index.hnsw.enabled false attribute[].index.hnsw.maxlinkspernode 16 attribute[].index.hnsw.distancemetric EUCLIDEAN attribute[].index.hnsw.neighborstoexploreatinsert 200 +attribute[].index.hnsw.multithreadedindexing false attribute[].name "newestedition" attribute[].datatype INT32 attribute[].collectiontype SINGLE @@ -154,6 +159,7 @@ attribute[].index.hnsw.enabled false attribute[].index.hnsw.maxlinkspernode 16 attribute[].index.hnsw.distancemetric EUCLIDEAN attribute[].index.hnsw.neighborstoexploreatinsert 200 +attribute[].index.hnsw.multithreadedindexing false attribute[].name "year" attribute[].datatype INT32 attribute[].collectiontype SINGLE @@ -180,6 +186,7 @@ attribute[].index.hnsw.enabled false attribute[].index.hnsw.maxlinkspernode 16 attribute[].index.hnsw.distancemetric EUCLIDEAN attribute[].index.hnsw.neighborstoexploreatinsert 200 +attribute[].index.hnsw.multithreadedindexing false attribute[].name "did" attribute[].datatype INT32 attribute[].collectiontype SINGLE @@ -206,6 +213,7 @@ attribute[].index.hnsw.enabled false attribute[].index.hnsw.maxlinkspernode 16 attribute[].index.hnsw.distancemetric EUCLIDEAN attribute[].index.hnsw.neighborstoexploreatinsert 200 +attribute[].index.hnsw.multithreadedindexing false attribute[].name "scorekey" attribute[].datatype INT32 attribute[].collectiontype SINGLE @@ -232,6 +240,7 @@ attribute[].index.hnsw.enabled false attribute[].index.hnsw.maxlinkspernode 16 attribute[].index.hnsw.distancemetric EUCLIDEAN attribute[].index.hnsw.neighborstoexploreatinsert 200 +attribute[].index.hnsw.multithreadedindexing false attribute[].name "cbid" attribute[].datatype INT32 attribute[].collectiontype SINGLE @@ -258,3 +267,4 @@ attribute[].index.hnsw.enabled false attribute[].index.hnsw.maxlinkspernode 16 attribute[].index.hnsw.distancemetric EUCLIDEAN attribute[].index.hnsw.neighborstoexploreatinsert 200 +attribute[].index.hnsw.multithreadedindexing false diff --git a/config-model/src/test/derived/predicate_attribute/attributes.cfg b/config-model/src/test/derived/predicate_attribute/attributes.cfg index d095b68752a..b70804ed36d 100644 --- a/config-model/src/test/derived/predicate_attribute/attributes.cfg +++ b/config-model/src/test/derived/predicate_attribute/attributes.cfg @@ -24,3 +24,4 @@ attribute[].index.hnsw.enabled false attribute[].index.hnsw.maxlinkspernode 16 attribute[].index.hnsw.distancemetric EUCLIDEAN attribute[].index.hnsw.neighborstoexploreatinsert 200 +attribute[].index.hnsw.multithreadedindexing false diff --git a/config-model/src/test/derived/prefixexactattribute/attributes.cfg b/config-model/src/test/derived/prefixexactattribute/attributes.cfg index 5cae6b784ff..5e9930317cd 100644 --- a/config-model/src/test/derived/prefixexactattribute/attributes.cfg +++ b/config-model/src/test/derived/prefixexactattribute/attributes.cfg @@ -24,6 +24,7 @@ attribute[].index.hnsw.enabled false attribute[].index.hnsw.maxlinkspernode 16 attribute[].index.hnsw.distancemetric EUCLIDEAN attribute[].index.hnsw.neighborstoexploreatinsert 200 +attribute[].index.hnsw.multithreadedindexing false attribute[].name "attributefield2" attribute[].datatype STRING attribute[].collectiontype SINGLE @@ -50,3 +51,4 @@ attribute[].index.hnsw.enabled false attribute[].index.hnsw.maxlinkspernode 16 attribute[].index.hnsw.distancemetric EUCLIDEAN attribute[].index.hnsw.neighborstoexploreatinsert 200 +attribute[].index.hnsw.multithreadedindexing false diff --git a/config-model/src/test/derived/reference_fields/attributes.cfg b/config-model/src/test/derived/reference_fields/attributes.cfg index ec3ca030373..6bc8f93a4d4 100644 --- a/config-model/src/test/derived/reference_fields/attributes.cfg +++ b/config-model/src/test/derived/reference_fields/attributes.cfg @@ -24,6 +24,7 @@ attribute[].index.hnsw.enabled false attribute[].index.hnsw.maxlinkspernode 16 attribute[].index.hnsw.distancemetric EUCLIDEAN attribute[].index.hnsw.neighborstoexploreatinsert 200 +attribute[].index.hnsw.multithreadedindexing false attribute[].name "other_ref" attribute[].datatype REFERENCE attribute[].collectiontype SINGLE @@ -50,6 +51,7 @@ attribute[].index.hnsw.enabled false attribute[].index.hnsw.maxlinkspernode 16 attribute[].index.hnsw.distancemetric EUCLIDEAN attribute[].index.hnsw.neighborstoexploreatinsert 200 +attribute[].index.hnsw.multithreadedindexing false attribute[].name "yet_another_ref" attribute[].datatype REFERENCE attribute[].collectiontype SINGLE @@ -76,3 +78,4 @@ attribute[].index.hnsw.enabled false attribute[].index.hnsw.maxlinkspernode 16 attribute[].index.hnsw.distancemetric EUCLIDEAN attribute[].index.hnsw.neighborstoexploreatinsert 200 +attribute[].index.hnsw.multithreadedindexing false diff --git a/config-model/src/test/derived/sorting/attributes.cfg b/config-model/src/test/derived/sorting/attributes.cfg index 6e50bd625ee..a957e1ae4dd 100644 --- a/config-model/src/test/derived/sorting/attributes.cfg +++ b/config-model/src/test/derived/sorting/attributes.cfg @@ -24,6 +24,7 @@ attribute[].index.hnsw.enabled false attribute[].index.hnsw.maxlinkspernode 16 attribute[].index.hnsw.distancemetric EUCLIDEAN attribute[].index.hnsw.neighborstoexploreatinsert 200 +attribute[].index.hnsw.multithreadedindexing false attribute[].name "syntaxcheck2" attribute[].datatype STRING attribute[].collectiontype SINGLE @@ -50,6 +51,7 @@ attribute[].index.hnsw.enabled false attribute[].index.hnsw.maxlinkspernode 16 attribute[].index.hnsw.distancemetric EUCLIDEAN attribute[].index.hnsw.neighborstoexploreatinsert 200 +attribute[].index.hnsw.multithreadedindexing false attribute[].name "infieldonly" attribute[].datatype STRING attribute[].collectiontype SINGLE @@ -76,3 +78,4 @@ attribute[].index.hnsw.enabled false attribute[].index.hnsw.maxlinkspernode 16 attribute[].index.hnsw.distancemetric EUCLIDEAN attribute[].index.hnsw.neighborstoexploreatinsert 200 +attribute[].index.hnsw.multithreadedindexing false diff --git a/config-model/src/test/derived/tensor/attributes.cfg b/config-model/src/test/derived/tensor/attributes.cfg index 6ed960728c2..38d25a0faf0 100644 --- a/config-model/src/test/derived/tensor/attributes.cfg +++ b/config-model/src/test/derived/tensor/attributes.cfg @@ -24,6 +24,7 @@ attribute[].index.hnsw.enabled false attribute[].index.hnsw.maxlinkspernode 16 attribute[].index.hnsw.distancemetric EUCLIDEAN attribute[].index.hnsw.neighborstoexploreatinsert 200 +attribute[].index.hnsw.multithreadedindexing false attribute[].name "f3" attribute[].datatype TENSOR attribute[].collectiontype SINGLE @@ -50,6 +51,7 @@ attribute[].index.hnsw.enabled false attribute[].index.hnsw.maxlinkspernode 16 attribute[].index.hnsw.distancemetric EUCLIDEAN attribute[].index.hnsw.neighborstoexploreatinsert 200 +attribute[].index.hnsw.multithreadedindexing false attribute[].name "f4" attribute[].datatype TENSOR attribute[].collectiontype SINGLE @@ -76,6 +78,7 @@ attribute[].index.hnsw.enabled false attribute[].index.hnsw.maxlinkspernode 16 attribute[].index.hnsw.distancemetric EUCLIDEAN attribute[].index.hnsw.neighborstoexploreatinsert 200 +attribute[].index.hnsw.multithreadedindexing false attribute[].name "f5" attribute[].datatype TENSOR attribute[].collectiontype SINGLE @@ -102,6 +105,7 @@ attribute[].index.hnsw.enabled false attribute[].index.hnsw.maxlinkspernode 16 attribute[].index.hnsw.distancemetric EUCLIDEAN attribute[].index.hnsw.neighborstoexploreatinsert 200 +attribute[].index.hnsw.multithreadedindexing false attribute[].name "f6" attribute[].datatype FLOAT attribute[].collectiontype SINGLE @@ -128,3 +132,4 @@ attribute[].index.hnsw.enabled false attribute[].index.hnsw.maxlinkspernode 16 attribute[].index.hnsw.distancemetric EUCLIDEAN attribute[].index.hnsw.neighborstoexploreatinsert 200 +attribute[].index.hnsw.multithreadedindexing false diff --git a/config-model/src/test/derived/types/attributes.cfg b/config-model/src/test/derived/types/attributes.cfg index 8e37a1f1c63..536a2acba73 100644 --- a/config-model/src/test/derived/types/attributes.cfg +++ b/config-model/src/test/derived/types/attributes.cfg @@ -24,6 +24,7 @@ attribute[].index.hnsw.enabled false attribute[].index.hnsw.maxlinkspernode 16 attribute[].index.hnsw.distancemetric EUCLIDEAN attribute[].index.hnsw.neighborstoexploreatinsert 200 +attribute[].index.hnsw.multithreadedindexing false attribute[].name "along" attribute[].datatype INT64 attribute[].collectiontype SINGLE @@ -50,6 +51,7 @@ attribute[].index.hnsw.enabled false attribute[].index.hnsw.maxlinkspernode 16 attribute[].index.hnsw.distancemetric EUCLIDEAN attribute[].index.hnsw.neighborstoexploreatinsert 200 +attribute[].index.hnsw.multithreadedindexing false attribute[].name "abool" attribute[].datatype BOOL attribute[].collectiontype SINGLE @@ -76,6 +78,7 @@ attribute[].index.hnsw.enabled false attribute[].index.hnsw.maxlinkspernode 16 attribute[].index.hnsw.distancemetric EUCLIDEAN attribute[].index.hnsw.neighborstoexploreatinsert 200 +attribute[].index.hnsw.multithreadedindexing false attribute[].name "ashortfloat" attribute[].datatype FLOAT16 attribute[].collectiontype SINGLE @@ -102,6 +105,7 @@ attribute[].index.hnsw.enabled false attribute[].index.hnsw.maxlinkspernode 16 attribute[].index.hnsw.distancemetric EUCLIDEAN attribute[].index.hnsw.neighborstoexploreatinsert 200 +attribute[].index.hnsw.multithreadedindexing false attribute[].name "arrayfield" attribute[].datatype INT32 attribute[].collectiontype ARRAY @@ -128,6 +132,7 @@ attribute[].index.hnsw.enabled false attribute[].index.hnsw.maxlinkspernode 16 attribute[].index.hnsw.distancemetric EUCLIDEAN attribute[].index.hnsw.neighborstoexploreatinsert 200 +attribute[].index.hnsw.multithreadedindexing false attribute[].name "setfield" attribute[].datatype STRING attribute[].collectiontype WEIGHTEDSET @@ -154,6 +159,7 @@ attribute[].index.hnsw.enabled false attribute[].index.hnsw.maxlinkspernode 16 attribute[].index.hnsw.distancemetric EUCLIDEAN attribute[].index.hnsw.neighborstoexploreatinsert 200 +attribute[].index.hnsw.multithreadedindexing false attribute[].name "setfield2" attribute[].datatype STRING attribute[].collectiontype WEIGHTEDSET @@ -180,6 +186,7 @@ attribute[].index.hnsw.enabled false attribute[].index.hnsw.maxlinkspernode 16 attribute[].index.hnsw.distancemetric EUCLIDEAN attribute[].index.hnsw.neighborstoexploreatinsert 200 +attribute[].index.hnsw.multithreadedindexing false attribute[].name "setfield3" attribute[].datatype STRING attribute[].collectiontype WEIGHTEDSET @@ -206,6 +213,7 @@ attribute[].index.hnsw.enabled false attribute[].index.hnsw.maxlinkspernode 16 attribute[].index.hnsw.distancemetric EUCLIDEAN attribute[].index.hnsw.neighborstoexploreatinsert 200 +attribute[].index.hnsw.multithreadedindexing false attribute[].name "setfield4" attribute[].datatype STRING attribute[].collectiontype WEIGHTEDSET @@ -232,6 +240,7 @@ attribute[].index.hnsw.enabled false attribute[].index.hnsw.maxlinkspernode 16 attribute[].index.hnsw.distancemetric EUCLIDEAN attribute[].index.hnsw.neighborstoexploreatinsert 200 +attribute[].index.hnsw.multithreadedindexing false attribute[].name "tagfield" attribute[].datatype STRING attribute[].collectiontype WEIGHTEDSET @@ -258,6 +267,7 @@ attribute[].index.hnsw.enabled false attribute[].index.hnsw.maxlinkspernode 16 attribute[].index.hnsw.distancemetric EUCLIDEAN attribute[].index.hnsw.neighborstoexploreatinsert 200 +attribute[].index.hnsw.multithreadedindexing false attribute[].name "juletre" attribute[].datatype INT64 attribute[].collectiontype SINGLE @@ -284,6 +294,7 @@ attribute[].index.hnsw.enabled false attribute[].index.hnsw.maxlinkspernode 16 attribute[].index.hnsw.distancemetric EUCLIDEAN attribute[].index.hnsw.neighborstoexploreatinsert 200 +attribute[].index.hnsw.multithreadedindexing false attribute[].name "album1" attribute[].datatype STRING attribute[].collectiontype WEIGHTEDSET @@ -310,6 +321,7 @@ attribute[].index.hnsw.enabled false attribute[].index.hnsw.maxlinkspernode 16 attribute[].index.hnsw.distancemetric EUCLIDEAN attribute[].index.hnsw.neighborstoexploreatinsert 200 +attribute[].index.hnsw.multithreadedindexing false attribute[].name "other" attribute[].datatype INT64 attribute[].collectiontype SINGLE @@ -336,3 +348,4 @@ attribute[].index.hnsw.enabled false attribute[].index.hnsw.maxlinkspernode 16 attribute[].index.hnsw.distancemetric EUCLIDEAN attribute[].index.hnsw.neighborstoexploreatinsert 200 +attribute[].index.hnsw.multithreadedindexing false diff --git a/config-model/src/test/java/com/yahoo/searchdefinition/document/HnswIndexParamsTestCase.java b/config-model/src/test/java/com/yahoo/searchdefinition/document/HnswIndexParamsTestCase.java index e3dcc925e5e..44379d25012 100644 --- a/config-model/src/test/java/com/yahoo/searchdefinition/document/HnswIndexParamsTestCase.java +++ b/config-model/src/test/java/com/yahoo/searchdefinition/document/HnswIndexParamsTestCase.java @@ -17,29 +17,37 @@ public class HnswIndexParamsTestCase { var empty = new HnswIndexParams(); var builder = new HnswIndexParams.Builder(); builder.setMaxLinksPerNode(7); + builder.setMultiThreadedIndexing(false); var one = builder.build(); builder.setNeighborsToExploreAtInsert(42); var three = builder.build(); builder.setMaxLinksPerNode(17); builder.setNeighborsToExploreAtInsert(500); + builder.setMultiThreadedIndexing(true); var four = builder.build(); assertThat(empty.maxLinksPerNode(), is(16)); assertThat(empty.neighborsToExploreAtInsert(), is(200)); + assertThat(empty.multiThreadedIndexing(), is(false)); assertThat(one.maxLinksPerNode(), is(7)); + assertThat(one.multiThreadedIndexing(), is(false)); assertThat(three.neighborsToExploreAtInsert(), is(42)); assertThat(four.maxLinksPerNode(), is(17)); assertThat(four.neighborsToExploreAtInsert(), is(500)); + assertThat(four.multiThreadedIndexing(), is(true)); var five = four.overrideFrom(Optional.of(empty)); assertThat(five.maxLinksPerNode(), is(17)); assertThat(five.neighborsToExploreAtInsert(), is(500)); + assertThat(five.multiThreadedIndexing(), is(true)); var six = four.overrideFrom(Optional.of(one)); assertThat(six.maxLinksPerNode(), is(7)); assertThat(six.neighborsToExploreAtInsert(), is(500)); + // This is explicitly set to false in 'one' + assertThat(six.multiThreadedIndexing(), is(false)); } } diff --git a/configdefinitions/src/vespa/attributes.def b/configdefinitions/src/vespa/attributes.def index 3602c2b0fd7..a091fbc573c 100644 --- a/configdefinitions/src/vespa/attributes.def +++ b/configdefinitions/src/vespa/attributes.def @@ -41,3 +41,5 @@ attribute[].index.hnsw.maxlinkspernode int default=16 # Deprecated: Remove on Vespa 8 or before when possible. attribute[].index.hnsw.distancemetric enum { EUCLIDEAN, ANGULAR, GEODEGREES } default=EUCLIDEAN attribute[].index.hnsw.neighborstoexploreatinsert int default=200 +# Whether multi-threaded indexing is enabled for this hnsw index. +attribute[].index.hnsw.multithreadedindexing bool default=false diff --git a/searchcommon/src/vespa/searchcommon/attribute/hnsw_index_params.h b/searchcommon/src/vespa/searchcommon/attribute/hnsw_index_params.h index c8b196023d6..5f974f509c6 100644 --- a/searchcommon/src/vespa/searchcommon/attribute/hnsw_index_params.h +++ b/searchcommon/src/vespa/searchcommon/attribute/hnsw_index_params.h @@ -16,29 +16,29 @@ private: uint32_t _neighbors_to_explore_at_insert; // This is always the same as in the attribute config, and is duplicated here to simplify usage. DistanceMetric _distance_metric; - bool _allow_multi_threaded_indexing; + bool _multi_threaded_indexing; public: HnswIndexParams(uint32_t max_links_per_node_in, uint32_t neighbors_to_explore_at_insert_in, DistanceMetric distance_metric_in, - bool allow_multi_threaded_indexing_in = false) + bool multi_threaded_indexing_in = false) : _max_links_per_node(max_links_per_node_in), _neighbors_to_explore_at_insert(neighbors_to_explore_at_insert_in), _distance_metric(distance_metric_in), - _allow_multi_threaded_indexing(allow_multi_threaded_indexing_in) + _multi_threaded_indexing(multi_threaded_indexing_in) {} uint32_t max_links_per_node() const { return _max_links_per_node; } uint32_t neighbors_to_explore_at_insert() const { return _neighbors_to_explore_at_insert; } DistanceMetric distance_metric() const { return _distance_metric; } - bool allow_multi_threaded_indexing() const { return _allow_multi_threaded_indexing; } + bool multi_threaded_indexing() const { return _multi_threaded_indexing; } bool operator==(const HnswIndexParams& rhs) const { return (_max_links_per_node == rhs._max_links_per_node && _neighbors_to_explore_at_insert == rhs._neighbors_to_explore_at_insert && _distance_metric == rhs._distance_metric && - _allow_multi_threaded_indexing == rhs._allow_multi_threaded_indexing); + _multi_threaded_indexing == rhs._multi_threaded_indexing); } }; diff --git a/searchcore/src/tests/proton/attribute/attribute_test.cpp b/searchcore/src/tests/proton/attribute/attribute_test.cpp index 91f580cd221..dabab649497 100644 --- a/searchcore/src/tests/proton/attribute/attribute_test.cpp +++ b/searchcore/src/tests/proton/attribute/attribute_test.cpp @@ -811,18 +811,18 @@ public: const vespalib::string dense_tensor = "tensor(x[2])"; AVConfig -get_tensor_config(bool allow_multi_threaded_indexing) +get_tensor_config(bool multi_threaded_indexing) { AVConfig cfg(AVBasicType::TENSOR); cfg.setTensorType(ValueType::from_spec(dense_tensor)); - cfg.set_hnsw_index_params(HnswIndexParams(4, 4, DistanceMetric::Euclidean, allow_multi_threaded_indexing)); + cfg.set_hnsw_index_params(HnswIndexParams(4, 4, DistanceMetric::Euclidean, multi_threaded_indexing)); return cfg; } std::shared_ptr<MockDenseTensorAttribute> -make_mock_tensor_attribute(const vespalib::string& name, bool allow_multi_threaded_indexing) +make_mock_tensor_attribute(const vespalib::string& name, bool multi_threaded_indexing) { - auto cfg = get_tensor_config(allow_multi_threaded_indexing); + auto cfg = get_tensor_config(multi_threaded_indexing); return std::make_shared<MockDenseTensorAttribute>(name, cfg); } diff --git a/searchcore/src/vespa/searchcore/proton/attribute/attribute_writer.cpp b/searchcore/src/vespa/searchcore/proton/attribute/attribute_writer.cpp index 8f19d5c203b..9b54ae816e0 100644 --- a/searchcore/src/vespa/searchcore/proton/attribute/attribute_writer.cpp +++ b/searchcore/src/vespa/searchcore/proton/attribute/attribute_writer.cpp @@ -40,7 +40,7 @@ use_two_phase_put_for_attribute(const AttributeVector& attr) const auto& cfg = attr.getConfig(); if (cfg.basicType() == search::attribute::BasicType::Type::TENSOR && cfg.hnsw_index_params().has_value() && - cfg.hnsw_index_params().value().allow_multi_threaded_indexing()) + cfg.hnsw_index_params().value().multi_threaded_indexing()) { return true; } diff --git a/searchlib/src/tests/attribute/attributemanager/attributemanager_test.cpp b/searchlib/src/tests/attribute/attributemanager/attributemanager_test.cpp index 3728b87c6df..b94186626c2 100644 --- a/searchlib/src/tests/attribute/attributemanager/attributemanager_test.cpp +++ b/searchlib/src/tests/attribute/attributemanager/attributemanager_test.cpp @@ -297,11 +297,14 @@ AttributeManagerTest::testConfigConvert() a.index.hnsw.enabled = true; a.index.hnsw.maxlinkspernode = 32; a.index.hnsw.neighborstoexploreatinsert = 300; + a.index.hnsw.multithreadedindexing = true; auto out = ConfigConverter::convert(a); EXPECT_TRUE(out.hnsw_index_params().has_value()); - EXPECT_EQUAL(32u, out.hnsw_index_params().value().max_links_per_node()); - EXPECT_EQUAL(300u, out.hnsw_index_params().value().neighbors_to_explore_at_insert()); - EXPECT_TRUE(out.hnsw_index_params().value().distance_metric() == dm_out); + const auto& params = out.hnsw_index_params().value(); + EXPECT_EQUAL(32u, params.max_links_per_node()); + EXPECT_EQUAL(300u, params.neighbors_to_explore_at_insert()); + EXPECT_TRUE(params.distance_metric() == dm_out); + EXPECT_TRUE(params.multi_threaded_indexing()); } { // hnsw index params (disabled) CACA a; diff --git a/searchlib/src/vespa/searchlib/attribute/configconverter.cpp b/searchlib/src/vespa/searchlib/attribute/configconverter.cpp index f6c39b9570d..f435f79bf65 100644 --- a/searchlib/src/vespa/searchlib/attribute/configconverter.cpp +++ b/searchlib/src/vespa/searchlib/attribute/configconverter.cpp @@ -90,7 +90,7 @@ ConfigConverter::convert(const AttributesConfig::Attribute & cfg) if (cfg.index.hnsw.enabled) { retval.set_hnsw_index_params(HnswIndexParams(cfg.index.hnsw.maxlinkspernode, cfg.index.hnsw.neighborstoexploreatinsert, - dm)); + dm, cfg.index.hnsw.multithreadedindexing)); } if (retval.basicType().type() == BasicType::Type::TENSOR) { if (!cfg.tensortype.empty()) { |