Skip to content

Commit e893304

Browse files
committed
wrap ES knn queries with patience query
1 parent 75ddd8b commit e893304

File tree

1 file changed

+7
-6
lines changed

1 file changed

+7
-6
lines changed

server/src/main/java/org/elasticsearch/index/mapper/vectors/DenseVectorFieldMapper.java

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@
3131
import org.apache.lucene.index.VectorEncoding;
3232
import org.apache.lucene.index.VectorSimilarityFunction;
3333
import org.apache.lucene.search.FieldExistsQuery;
34+
import org.apache.lucene.search.PatienceKnnVectorQuery;
3435
import org.apache.lucene.search.Query;
3536
import org.apache.lucene.search.join.BitSetProducer;
3637
import org.apache.lucene.util.BitUtil;
@@ -2198,9 +2199,9 @@ private Query createKnnBitQuery(
21982199
BitSetProducer parentFilter
21992200
) {
22002201
elementType.checkDimensions(dims, queryVector.length);
2201-
Query knnQuery = parentFilter != null
2202+
Query knnQuery = PatienceKnnVectorQuery.fromByteQuery(parentFilter != null
22022203
? new ESDiversifyingChildrenByteKnnVectorQuery(name(), queryVector, filter, k, numCands, parentFilter)
2203-
: new ESKnnByteVectorQuery(name(), queryVector, k, numCands, filter);
2204+
: new ESKnnByteVectorQuery(name(), queryVector, k, numCands, filter));
22042205
if (similarityThreshold != null) {
22052206
knnQuery = new VectorSimilarityQuery(
22062207
knnQuery,
@@ -2225,9 +2226,9 @@ private Query createKnnByteQuery(
22252226
float squaredMagnitude = VectorUtil.dotProduct(queryVector, queryVector);
22262227
elementType.checkVectorMagnitude(similarity, ElementType.errorByteElementsAppender(queryVector), squaredMagnitude);
22272228
}
2228-
Query knnQuery = parentFilter != null
2229+
Query knnQuery = PatienceKnnVectorQuery.fromByteQuery(parentFilter != null
22292230
? new ESDiversifyingChildrenByteKnnVectorQuery(name(), queryVector, filter, k, numCands, parentFilter)
2230-
: new ESKnnByteVectorQuery(name(), queryVector, k, numCands, filter);
2231+
: new ESKnnByteVectorQuery(name(), queryVector, k, numCands, filter));
22312232
if (similarityThreshold != null) {
22322233
knnQuery = new VectorSimilarityQuery(
22332234
knnQuery,
@@ -2278,9 +2279,9 @@ && isNotUnitVector(squaredMagnitude)) {
22782279
adjustedK = Math.min((int) Math.ceil(k * oversample), OVERSAMPLE_LIMIT);
22792280
numCands = Math.max(adjustedK, numCands);
22802281
}
2281-
Query knnQuery = parentFilter != null
2282+
Query knnQuery = PatienceKnnVectorQuery.fromFloatQuery(parentFilter != null
22822283
? new ESDiversifyingChildrenFloatKnnVectorQuery(name(), queryVector, filter, adjustedK, numCands, parentFilter)
2283-
: new ESKnnFloatVectorQuery(name(), queryVector, adjustedK, numCands, filter);
2284+
: new ESKnnFloatVectorQuery(name(), queryVector, adjustedK, numCands, filter));
22842285
if (rescore) {
22852286
knnQuery = new RescoreKnnVectorQuery(
22862287
name(),

0 commit comments

Comments
 (0)