Skip to content

Commit 291d4bd

Browse files
committed
adjusting vector reclal testing
1 parent 672cb1e commit 291d4bd

File tree

7 files changed

+41
-31
lines changed

7 files changed

+41
-31
lines changed

test/external-modules/vector/build.gradle renamed to qa/vector/build.gradle

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -26,10 +26,16 @@ tasks.register("checkVec", JavaExec) {
2626
mainClass.set("org.elasticsearch.test.knn.KnnIndexTester")
2727
// TODO REGISTER ARGS
2828
args = [
29-
"--docVectors=<path>",
29+
"--docVectors=/some/path",
3030
"--numDocs=100000",
31-
"--reindex",
32-
"--queryVectors=<path>",
31+
//"--reindex",
32+
//"--forceMerge",
33+
"--queryVectors=/some/other/path",
3334
"--dimensions=768",
35+
"--overSamplingFactor=3",
36+
"--nProbe=5"
3437
]
38+
if (buildParams.getRuntimeJavaVersion().map { it.majorVersion.toInteger() }.get() >= 21) {
39+
jvmArgs '--add-modules=jdk.incubator.vector', '--enable-native-access=ALL-UNNAMED', '-Djava.util.concurrent.ForkJoinPool.common.parallelism=8'
40+
}
3541
}
Lines changed: 19 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -135,7 +135,7 @@ static CmdLineArgs parse(String[] args) {
135135
int hnswEfConstruction = 100;
136136
int searchThreads = 1;
137137
int indexThreads = 1;
138-
boolean reindex = true;
138+
boolean reindex = false;
139139
boolean forceMerge = false;
140140
VectorSimilarityFunction vectorSpace = VectorSimilarityFunction.EUCLIDEAN;
141141
// 32 means no quantization
@@ -205,10 +205,10 @@ public static void main(String[] args) throws Exception {
205205
StringBuilder resultHeaders = new StringBuilder();
206206
StringBuilder resultValues = new StringBuilder();
207207
// indicate params used for index creation
208-
resultHeaders.append("index_type,");
209-
resultValues.append(cmdLineArgs.indexType).append(",");
210-
resultHeaders.append("num_docs,");
211-
resultValues.append(cmdLineArgs.numDocs).append(",");
208+
resultHeaders.append("index_type\t");
209+
resultValues.append(cmdLineArgs.indexType).append("\t");
210+
resultHeaders.append("num_docs\t");
211+
resultValues.append(cmdLineArgs.numDocs).append("\t");
212212
if (cmdLineArgs.reindex || cmdLineArgs.forceMerge) {
213213
KnnIndexer knnIndexer = new KnnIndexer(
214214
cmdLineArgs.docVectors,
@@ -230,28 +230,27 @@ public static void main(String[] args) throws Exception {
230230
}
231231
}
232232
if (indexCreationTimeMS > 0) {
233-
resultHeaders.append("index_time(ms)").append(",");
234-
resultValues.append(indexCreationTimeMS).append(",");
233+
resultHeaders.append("index_time(ms)").append("\t");
234+
resultValues.append(indexCreationTimeMS).append("\t");
235235
}
236236
if (forceMergeTimeMS > 0) {
237-
resultHeaders.append("force_merge_time(ms)").append(",");
238-
resultValues.append(forceMergeTimeMS).append(",");
237+
resultHeaders.append("force_merge_time(ms)").append("\t");
238+
resultValues.append(forceMergeTimeMS).append("\t");
239239
}
240-
resultHeaders.append("num_segments,");
241-
resultValues.append(numSegments).append(",");
240+
resultHeaders.append("num_segments\t");
241+
resultValues.append(numSegments).append("\t");
242242

243243
if (cmdLineArgs.queryVectors != null) {
244244
KnnSearcher knnSearcher = new KnnSearcher(indexPath, cmdLineArgs);
245245
KnnSearcher.SearcherResults results = knnSearcher.runSearch();
246-
resultHeaders.append("latency(ms),");
247-
resultValues.append(results.avgLatency()).append(",");
248-
resultHeaders.append("qps,");
249-
resultValues.append(results.qps()).append(",");
250-
resultHeaders.append("recall,");
251-
resultValues.append(results.avgRecall()).append(",");
252-
resultHeaders.append("visited,");
253-
resultValues.append(results.averageVisited()).append(",");
254-
return;
246+
resultHeaders.append("latency(ms)\t");
247+
resultValues.append(results.avgLatency()).append("\t");
248+
resultHeaders.append("qps\t");
249+
resultValues.append(results.qps()).append("\t");
250+
resultHeaders.append("recall\t");
251+
resultValues.append(results.avgRecall()).append("\t");
252+
resultHeaders.append("visited\t");
253+
resultValues.append(results.averageVisited()).append("\t");
255254
}
256255
System.out.println(resultHeaders);
257256
System.out.println(resultValues);
Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -213,7 +213,7 @@ private int[][] getOrCalculateExactNN() throws IOException {
213213
36
214214
);
215215
String nnFileName = "nn-" + hash + ".bin";
216-
Path nnPath = Paths.get(nnFileName);
216+
Path nnPath = Paths.get("target/" + nnFileName);
217217
if (Files.exists(nnPath)) {
218218
logger.info("read pre-cached exact match vectors from cache file \"" + nnPath + "\"");
219219
return readExactNN(nnPath);
@@ -352,7 +352,7 @@ private int[][] computeExactNN(Path queryPath) throws IOException {
352352
for (int i = 0; i < numQueryVectors; i++) {
353353
float[] queryVector = new float[dim];
354354
queryReader.next(queryVector);
355-
tasks.add(new ComputeNNFloatTask(i, queryVector, result, reader, similarityFunction));
355+
tasks.add(new ComputeNNFloatTask(i, topK, queryVector, result, reader, similarityFunction));
356356
}
357357
ForkJoinPool.commonPool().invokeAll(tasks);
358358
}
@@ -384,19 +384,27 @@ static class ComputeNNFloatTask implements Callable<Void> {
384384
private final int[][] result;
385385
private final IndexReader reader;
386386
private final VectorSimilarityFunction similarityFunction;
387+
private final int topK;
387388

388-
ComputeNNFloatTask(int queryOrd, float[] query, int[][] result, IndexReader reader, VectorSimilarityFunction similarityFunction) {
389+
ComputeNNFloatTask(
390+
int queryOrd,
391+
int topK,
392+
float[] query,
393+
int[][] result,
394+
IndexReader reader,
395+
VectorSimilarityFunction similarityFunction
396+
) {
389397
this.queryOrd = queryOrd;
390398
this.query = query;
391399
this.result = result;
392400
this.reader = reader;
393401
this.similarityFunction = similarityFunction;
402+
this.topK = topK;
394403
}
395404

396405
@Override
397406
public Void call() {
398407
IndexSearcher searcher = new IndexSearcher(reader);
399-
int topK = result[0].length;
400408
try {
401409
var queryVector = new ConstKnnFloatValueSource(query);
402410
var docVectors = new FloatKnnVectorFieldSource(VECTOR_FIELD);

settings.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -172,4 +172,4 @@ if (extraProjects.exists()) {
172172
}
173173
}
174174

175-
include 'test:external-modules:vector'
175+
include 'qa:vector'

test/external-modules/build.gradle

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,14 +8,11 @@
88
*/
99

1010
subprojects {
11-
if (project.name != 'vector') {
12-
1311
apply plugin: 'elasticsearch.base-internal-es-plugin'
1412

1513
esplugin {
1614
name = it.name
1715
licenseFile = layout.settingsDirectory.file('licenses/AGPL-3.0+SSPL-1.0+ELASTIC-LICENSE-2.0.txt').asFile
1816
noticeFile = layout.settingsDirectory.file('NOTICE.txt').asFile
1917
}
20-
}
2118
}

0 commit comments

Comments
 (0)