Skip to content

Commit 3b08e12

Browse files
committed
Add feature flag for snippet reranking
1 parent f88d678 commit 3b08e12

File tree

8 files changed

+49
-32
lines changed

8 files changed

+49
-32
lines changed

qa/ccs-common-rest/src/yamlRestTest/java/org/elasticsearch/test/rest/yaml/CcsCommonYamlTestSuiteIT.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -92,7 +92,8 @@ public class CcsCommonYamlTestSuiteIT extends ESClientYamlSuiteTestCase {
9292
.feature(FeatureFlag.TIME_SERIES_MODE)
9393
.feature(FeatureFlag.SUB_OBJECTS_AUTO_ENABLED)
9494
.feature(FeatureFlag.IVF_FORMAT)
95-
.feature(FeatureFlag.SYNTHETIC_VECTORS);
95+
.feature(FeatureFlag.SYNTHETIC_VECTORS)
96+
.feature(FeatureFlag.RERANK_SNIPPETS);
9697

9798
private static ElasticsearchCluster remoteCluster = ElasticsearchCluster.local()
9899
.name(REMOTE_CLUSTER_NAME)

qa/ccs-common-rest/src/yamlRestTest/java/org/elasticsearch/test/rest/yaml/RcsCcsCommonYamlTestSuiteIT.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -94,6 +94,7 @@ public class RcsCcsCommonYamlTestSuiteIT extends ESClientYamlSuiteTestCase {
9494
.feature(FeatureFlag.SUB_OBJECTS_AUTO_ENABLED)
9595
.feature(FeatureFlag.IVF_FORMAT)
9696
.feature(FeatureFlag.SYNTHETIC_VECTORS)
97+
.feature(FeatureFlag.RERANK_SNIPPETS)
9798
.user("test_admin", "x-pack-test-password");
9899

99100
private static ElasticsearchCluster fulfillingCluster = ElasticsearchCluster.local()

qa/smoke-test-multinode/src/yamlRestTest/java/org/elasticsearch/smoketest/SmokeTestMultiNodeClientYamlTestSuiteIT.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@ public class SmokeTestMultiNodeClientYamlTestSuiteIT extends ESClientYamlSuiteTe
4040
.feature(FeatureFlag.USE_LUCENE101_POSTINGS_FORMAT)
4141
.feature(FeatureFlag.IVF_FORMAT)
4242
.feature(FeatureFlag.SYNTHETIC_VECTORS)
43+
.feature(FeatureFlag.RERANK_SNIPPETS)
4344
.build();
4445

4546
public SmokeTestMultiNodeClientYamlTestSuiteIT(@Name("yaml") ClientYamlTestCandidate testCandidate) {

rest-api-spec/src/yamlRestTest/java/org/elasticsearch/test/rest/ClientYamlTestSuiteIT.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@ public class ClientYamlTestSuiteIT extends ESClientYamlSuiteTestCase {
4040
.feature(FeatureFlag.USE_LUCENE101_POSTINGS_FORMAT)
4141
.feature(FeatureFlag.IVF_FORMAT)
4242
.feature(FeatureFlag.SYNTHETIC_VECTORS)
43+
.feature(FeatureFlag.RERANK_SNIPPETS)
4344
.build();
4445

4546
public ClientYamlTestSuiteIT(@Name("yaml") ClientYamlTestCandidate testCandidate) {

test/test-clusters/src/main/java/org/elasticsearch/test/cluster/FeatureFlag.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,8 @@ public enum FeatureFlag {
2323
IVF_FORMAT("es.ivf_format_feature_flag_enabled=true", Version.fromString("9.1.0"), null),
2424
LOGS_STREAM("es.logs_stream_feature_flag_enabled=true", Version.fromString("9.1.0"), null),
2525
PATTERNED_TEXT("es.patterned_text_feature_flag_enabled=true", Version.fromString("9.1.0"), null),
26-
SYNTHETIC_VECTORS("es.mapping_synthetic_vectors=true", Version.fromString("9.2.0"), null);
26+
SYNTHETIC_VECTORS("es.mapping_synthetic_vectors=true", Version.fromString("9.2.0"), null),
27+
RERANK_SNIPPETS("es.text_similarity_reranker_snippets=true", Version.fromString("9.2.0"), null);
2728

2829
public final String systemProperty;
2930
public final Version from;

x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/InferenceFeatures.java

Lines changed: 36 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
import org.elasticsearch.xpack.inference.mapper.SemanticTextFieldMapper;
1414
import org.elasticsearch.xpack.inference.rank.textsimilarity.TextSimilarityRankRetrieverBuilder;
1515

16+
import java.util.HashSet;
1617
import java.util.Set;
1718

1819
import static org.elasticsearch.xpack.inference.mapper.SemanticTextFieldMapper.SEMANTIC_TEXT_EXCLUDE_SUB_FIELDS_FROM_FIELD_CAPS;
@@ -23,6 +24,7 @@
2324
import static org.elasticsearch.xpack.inference.queries.SemanticKnnVectorQueryRewriteInterceptor.SEMANTIC_KNN_VECTOR_QUERY_REWRITE_INTERCEPTION_SUPPORTED;
2425
import static org.elasticsearch.xpack.inference.queries.SemanticMatchQueryRewriteInterceptor.SEMANTIC_MATCH_QUERY_REWRITE_INTERCEPTION_SUPPORTED;
2526
import static org.elasticsearch.xpack.inference.queries.SemanticSparseVectorQueryRewriteInterceptor.SEMANTIC_SPARSE_VECTOR_QUERY_REWRITE_INTERCEPTION_SUPPORTED;
27+
import static org.elasticsearch.xpack.inference.rank.textsimilarity.TextSimilarityRankRetrieverBuilder.RERANK_SNIPPETS;
2628
import static org.elasticsearch.xpack.inference.rank.textsimilarity.TextSimilarityRankRetrieverBuilder.TEXT_SIMILARITY_RERANKER_SNIPPETS;
2729

2830
/**
@@ -46,35 +48,40 @@ public class InferenceFeatures implements FeatureSpecification {
4648

4749
@Override
4850
public Set<NodeFeature> getTestFeatures() {
49-
return Set.of(
50-
SemanticTextFieldMapper.SEMANTIC_TEXT_IN_OBJECT_FIELD_FIX,
51-
SemanticTextFieldMapper.SEMANTIC_TEXT_SINGLE_FIELD_UPDATE_FIX,
52-
SemanticTextFieldMapper.SEMANTIC_TEXT_DELETE_FIX,
53-
SemanticTextFieldMapper.SEMANTIC_TEXT_ZERO_SIZE_FIX,
54-
SemanticTextFieldMapper.SEMANTIC_TEXT_ALWAYS_EMIT_INFERENCE_ID_FIX,
55-
SemanticTextFieldMapper.SEMANTIC_TEXT_SKIP_INFERENCE_FIELDS,
56-
SEMANTIC_TEXT_HIGHLIGHTER,
57-
SEMANTIC_MATCH_QUERY_REWRITE_INTERCEPTION_SUPPORTED,
58-
SEMANTIC_SPARSE_VECTOR_QUERY_REWRITE_INTERCEPTION_SUPPORTED,
59-
SemanticInferenceMetadataFieldsMapper.EXPLICIT_NULL_FIXES,
60-
SEMANTIC_KNN_VECTOR_QUERY_REWRITE_INTERCEPTION_SUPPORTED,
61-
TextSimilarityRankRetrieverBuilder.TEXT_SIMILARITY_RERANKER_ALIAS_HANDLING_FIX,
62-
TextSimilarityRankRetrieverBuilder.TEXT_SIMILARITY_RERANKER_MINSCORE_FIX,
63-
SemanticInferenceMetadataFieldsMapper.INFERENCE_METADATA_FIELDS_ENABLED_BY_DEFAULT,
64-
SEMANTIC_TEXT_HIGHLIGHTER_DEFAULT,
65-
SEMANTIC_KNN_FILTER_FIX,
66-
TEST_RERANKING_SERVICE_PARSE_TEXT_AS_SCORE,
67-
SemanticTextFieldMapper.SEMANTIC_TEXT_BIT_VECTOR_SUPPORT,
68-
SemanticTextFieldMapper.SEMANTIC_TEXT_HANDLE_EMPTY_INPUT,
69-
TEST_RULE_RETRIEVER_WITH_INDICES_THAT_DONT_RETURN_RANK_DOCS,
70-
SEMANTIC_TEXT_SUPPORT_CHUNKING_CONFIG,
71-
SEMANTIC_TEXT_MATCH_ALL_HIGHLIGHTER,
72-
SEMANTIC_TEXT_EXCLUDE_SUB_FIELDS_FROM_FIELD_CAPS,
73-
SEMANTIC_TEXT_INDEX_OPTIONS,
74-
COHERE_V2_API,
75-
SEMANTIC_TEXT_INDEX_OPTIONS_WITH_DEFAULTS,
76-
SEMANTIC_QUERY_REWRITE_INTERCEPTORS_PROPAGATE_BOOST_AND_QUERY_NAME_FIX,
77-
TEXT_SIMILARITY_RERANKER_SNIPPETS
51+
var testFeatures = new HashSet<>(
52+
Set.of(
53+
SemanticTextFieldMapper.SEMANTIC_TEXT_IN_OBJECT_FIELD_FIX,
54+
SemanticTextFieldMapper.SEMANTIC_TEXT_SINGLE_FIELD_UPDATE_FIX,
55+
SemanticTextFieldMapper.SEMANTIC_TEXT_DELETE_FIX,
56+
SemanticTextFieldMapper.SEMANTIC_TEXT_ZERO_SIZE_FIX,
57+
SemanticTextFieldMapper.SEMANTIC_TEXT_ALWAYS_EMIT_INFERENCE_ID_FIX,
58+
SemanticTextFieldMapper.SEMANTIC_TEXT_SKIP_INFERENCE_FIELDS,
59+
SEMANTIC_TEXT_HIGHLIGHTER,
60+
SEMANTIC_MATCH_QUERY_REWRITE_INTERCEPTION_SUPPORTED,
61+
SEMANTIC_SPARSE_VECTOR_QUERY_REWRITE_INTERCEPTION_SUPPORTED,
62+
SemanticInferenceMetadataFieldsMapper.EXPLICIT_NULL_FIXES,
63+
SEMANTIC_KNN_VECTOR_QUERY_REWRITE_INTERCEPTION_SUPPORTED,
64+
TextSimilarityRankRetrieverBuilder.TEXT_SIMILARITY_RERANKER_ALIAS_HANDLING_FIX,
65+
TextSimilarityRankRetrieverBuilder.TEXT_SIMILARITY_RERANKER_MINSCORE_FIX,
66+
SemanticInferenceMetadataFieldsMapper.INFERENCE_METADATA_FIELDS_ENABLED_BY_DEFAULT,
67+
SEMANTIC_TEXT_HIGHLIGHTER_DEFAULT,
68+
SEMANTIC_KNN_FILTER_FIX,
69+
TEST_RERANKING_SERVICE_PARSE_TEXT_AS_SCORE,
70+
SemanticTextFieldMapper.SEMANTIC_TEXT_BIT_VECTOR_SUPPORT,
71+
SemanticTextFieldMapper.SEMANTIC_TEXT_HANDLE_EMPTY_INPUT,
72+
TEST_RULE_RETRIEVER_WITH_INDICES_THAT_DONT_RETURN_RANK_DOCS,
73+
SEMANTIC_TEXT_SUPPORT_CHUNKING_CONFIG,
74+
SEMANTIC_TEXT_MATCH_ALL_HIGHLIGHTER,
75+
SEMANTIC_TEXT_EXCLUDE_SUB_FIELDS_FROM_FIELD_CAPS,
76+
SEMANTIC_TEXT_INDEX_OPTIONS,
77+
COHERE_V2_API,
78+
SEMANTIC_TEXT_INDEX_OPTIONS_WITH_DEFAULTS,
79+
SEMANTIC_QUERY_REWRITE_INTERCEPTORS_PROPAGATE_BOOST_AND_QUERY_NAME_FIX
80+
)
7881
);
82+
if (RERANK_SNIPPETS.isEnabled()) {
83+
testFeatures.add(TEXT_SIMILARITY_RERANKER_SNIPPETS);
84+
}
85+
return testFeatures;
7986
}
8087
}

x-pack/plugin/inference/src/main/java/org/elasticsearch/xpack/inference/rank/textsimilarity/TextSimilarityRankRetrieverBuilder.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
package org.elasticsearch.xpack.inference.rank.textsimilarity;
99

1010
import org.apache.lucene.search.ScoreDoc;
11+
import org.elasticsearch.common.util.FeatureFlag;
1112
import org.elasticsearch.features.NodeFeature;
1213
import org.elasticsearch.index.query.QueryBuilder;
1314
import org.elasticsearch.license.LicenseUtils;
@@ -44,6 +45,7 @@ public class TextSimilarityRankRetrieverBuilder extends CompoundRetrieverBuilder
4445
);
4546
public static final NodeFeature TEXT_SIMILARITY_RERANKER_MINSCORE_FIX = new NodeFeature("text_similarity_reranker_minscore_fix");
4647
public static final NodeFeature TEXT_SIMILARITY_RERANKER_SNIPPETS = new NodeFeature("text_similarity_reranker_snippets");
48+
public static final FeatureFlag RERANK_SNIPPETS = new FeatureFlag("text_similarity_reranker_snippets");
4749

4850
public static final ParseField RETRIEVER_FIELD = new ParseField("retriever");
4951
public static final ParseField INFERENCE_ID_FIELD = new ParseField("inference_id");
@@ -92,7 +94,9 @@ public class TextSimilarityRankRetrieverBuilder extends CompoundRetrieverBuilder
9294
PARSER.declareInt(optionalConstructorArg(), RANK_WINDOW_SIZE_FIELD);
9395
PARSER.declareBoolean(optionalConstructorArg(), FAILURES_ALLOWED_FIELD);
9496
PARSER.declareObject(optionalConstructorArg(), SNIPPETS_PARSER, SNIPPETS_FIELD);
95-
SNIPPETS_PARSER.declareInt(optionalConstructorArg(), NUM_SNIPPETS_FIELD);
97+
if (RERANK_SNIPPETS.isEnabled()) {
98+
SNIPPETS_PARSER.declareInt(optionalConstructorArg(), NUM_SNIPPETS_FIELD);
99+
}
96100

97101
RetrieverBuilder.declareBaseParserFields(PARSER);
98102
}

x-pack/qa/core-rest-tests-with-security/src/yamlRestTest/java/org/elasticsearch/xpack/security/CoreWithSecurityClientYamlTestSuiteIT.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,7 @@ public class CoreWithSecurityClientYamlTestSuiteIT extends ESClientYamlSuiteTest
5454
.feature(FeatureFlag.USE_LUCENE101_POSTINGS_FORMAT)
5555
.feature(FeatureFlag.IVF_FORMAT)
5656
.feature(FeatureFlag.SYNTHETIC_VECTORS)
57+
.feature(FeatureFlag.RERANK_SNIPPETS)
5758
.build();
5859

5960
public CoreWithSecurityClientYamlTestSuiteIT(@Name("yaml") ClientYamlTestCandidate testCandidate) {

0 commit comments

Comments
 (0)