LantaoJin commented on PR #16794: URL: https://github.com/apache/lucene/pull/16794#issuecomment-6074522394
**luceneutil.** `KnnGraphTester` on cohere-v3 wikipedia, 1024d, 1M docs, 1000 queries, dot product, topK 100, M 16, beam width 100, `-numMergeWorker 8 -numMergeThread 8`; 32-core aarch64, JDK 25. To compare force merges on the same input, I built one multi-segment index per config without force merge and force-merged a copy of it with each version, twice: | config | before | after | speedup | |---|---|---|---| | float32, 8 segments | 187.6 s, 189.3 s, 188.5 s | 144.3 s, 143.0 s | 1.31x | | 7-bit quantized, 4 segments | 230.9 s, 226.1 s | 196.8 s, 194.7 s | 1.17x | The same float32 input force-merged with 1 worker (the serial merger) takes 829.9 s. The concurrent merge now builds graphs of the same quality as the serial merger: float32 recall is identical at every fanout from 0 to 400, and visited nodes differ by at most 4. Like the serial merger's, these graphs are cheaper to search at the same fanout but slightly less accurate than the old concurrent full rebuild. Float32, recall@100 / visited nodes per query: | fanout | before | after | serial merger | |---|---|---|---| | 0 | 0.884 / 2103 | 0.869 / 1941 | 0.869 / 1944 | | 50 | 0.921 / 2883 | 0.911 / 2666 | 0.911 / 2668 | | 100 | 0.942 / 3624 | 0.932 / 3353 | 0.932 / 3357 | | 400 | 0.979 / 7569 | 0.975 / 7025 | 0.975 / 7029 | Interpolated at the same visited count, the old graph is 0.0004-0.0023 ahead for float32 (0.913 against 0.911 at 2666) and 0-0.0021 for 7-bit, which is the trade-off #14331 made for the serial path. Latency follows visited nodes (fanout 50: 1.95 ms before, 1.78 ms after). -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: [email protected] For queries about this service, please contact Infrastructure at: [email protected] --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
