Skip to content

Commit db949d6

Browse files
authored
[8.17][ML] Enable built-in Inference Endpoints and default for Semantic Text (#116952)
1 parent 9984f7a commit db949d6

File tree

13 files changed

+39
-98
lines changed

13 files changed

+39
-98
lines changed

docs/changelog/116931.yaml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
pr: 116931
2+
summary: Enable built-in Inference Endpoints and default for Semantic Text
3+
area: "Machine Learning"
4+
type: enhancement
5+
issues: []

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

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,7 @@
1818
public enum FeatureFlag {
1919
TIME_SERIES_MODE("es.index_mode_feature_flag_registered=true", Version.fromString("8.0.0"), null),
2020
FAILURE_STORE_ENABLED("es.failure_store_feature_flag_enabled=true", Version.fromString("8.12.0"), null),
21-
SUB_OBJECTS_AUTO_ENABLED("es.sub_objects_auto_feature_flag_enabled=true", Version.fromString("8.16.0"), null),
22-
INFERENCE_DEFAULT_ELSER("es.inference_default_elser_feature_flag_enabled=true", Version.fromString("8.16.0"), null);
21+
SUB_OBJECTS_AUTO_ENABLED("es.sub_objects_auto_feature_flag_enabled=true", Version.fromString("8.16.0"), null);
2322

2423
public final String systemProperty;
2524
public final Version from;

x-pack/plugin/inference/qa/inference-service-tests/src/javaRestTest/java/org/elasticsearch/xpack/inference/DefaultEndPointsIT.java

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,6 @@ public void tearDown() throws Exception {
3939

4040
@SuppressWarnings("unchecked")
4141
public void testInferDeploysDefaultElser() throws IOException {
42-
assumeTrue("Default config requires a feature flag", DefaultElserFeatureFlag.isEnabled());
4342
var model = getModel(ElasticsearchInternalService.DEFAULT_ELSER_ID);
4443
assertDefaultElserConfig(model);
4544

@@ -70,7 +69,6 @@ private static void assertDefaultElserConfig(Map<String, Object> modelConfig) {
7069

7170
@SuppressWarnings("unchecked")
7271
public void testInferDeploysDefaultE5() throws IOException {
73-
assumeTrue("Default config requires a feature flag", DefaultElserFeatureFlag.isEnabled());
7472
var model = getModel(ElasticsearchInternalService.DEFAULT_E5_ID);
7573
assertDefaultE5Config(model);
7674

x-pack/plugin/inference/qa/inference-service-tests/src/javaRestTest/java/org/elasticsearch/xpack/inference/InferenceCrudIT.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -44,18 +44,18 @@ public void testCRUD() throws IOException {
4444
}
4545

4646
var getAllModels = getAllModels();
47-
int numModels = DefaultElserFeatureFlag.isEnabled() ? 11 : 9;
47+
int numModels = 11;
4848
assertThat(getAllModels, hasSize(numModels));
4949

5050
var getSparseModels = getModels("_all", TaskType.SPARSE_EMBEDDING);
51-
int numSparseModels = DefaultElserFeatureFlag.isEnabled() ? 6 : 5;
51+
int numSparseModels = 6;
5252
assertThat(getSparseModels, hasSize(numSparseModels));
5353
for (var sparseModel : getSparseModels) {
5454
assertEquals("sparse_embedding", sparseModel.get("task_type"));
5555
}
5656

5757
var getDenseModels = getModels("_all", TaskType.TEXT_EMBEDDING);
58-
int numDenseModels = DefaultElserFeatureFlag.isEnabled() ? 5 : 4;
58+
int numDenseModels = 5;
5959
assertThat(getDenseModels, hasSize(numDenseModels));
6060
for (var denseModel : getDenseModels) {
6161
assertEquals("text_embedding", denseModel.get("task_type"));

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

Lines changed: 0 additions & 21 deletions
This file was deleted.

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

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

16-
import java.util.HashSet;
1716
import java.util.Set;
1817

1918
/**
@@ -23,15 +22,13 @@ public class InferenceFeatures implements FeatureSpecification {
2322

2423
@Override
2524
public Set<NodeFeature> getFeatures() {
26-
var features = new HashSet<NodeFeature>();
27-
features.add(TextSimilarityRankRetrieverBuilder.TEXT_SIMILARITY_RERANKER_RETRIEVER_SUPPORTED);
28-
features.add(RandomRankRetrieverBuilder.RANDOM_RERANKER_RETRIEVER_SUPPORTED);
29-
features.add(SemanticTextFieldMapper.SEMANTIC_TEXT_SEARCH_INFERENCE_ID);
30-
features.add(TextSimilarityRankRetrieverBuilder.TEXT_SIMILARITY_RERANKER_COMPOSITION_SUPPORTED);
31-
if (DefaultElserFeatureFlag.isEnabled()) {
32-
features.add(SemanticTextFieldMapper.SEMANTIC_TEXT_DEFAULT_ELSER_2);
33-
}
34-
return Set.copyOf(features);
25+
return Set.of(
26+
TextSimilarityRankRetrieverBuilder.TEXT_SIMILARITY_RERANKER_RETRIEVER_SUPPORTED,
27+
RandomRankRetrieverBuilder.RANDOM_RERANKER_RETRIEVER_SUPPORTED,
28+
SemanticTextFieldMapper.SEMANTIC_TEXT_SEARCH_INFERENCE_ID,
29+
TextSimilarityRankRetrieverBuilder.TEXT_SIMILARITY_RERANKER_COMPOSITION_SUPPORTED,
30+
SemanticTextFieldMapper.SEMANTIC_TEXT_DEFAULT_ELSER_2
31+
);
3532
}
3633

3734
@Override

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

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -228,10 +228,8 @@ public Collection<?> createComponents(PluginServices services) {
228228
// reference correctly
229229
var registry = new InferenceServiceRegistry(inferenceServices, factoryContext);
230230
registry.init(services.client());
231-
if (DefaultElserFeatureFlag.isEnabled()) {
232-
for (var service : registry.getServices().values()) {
233-
service.defaultConfigIds().forEach(modelRegistry::addDefaultIds);
234-
}
231+
for (var service : registry.getServices().values()) {
232+
service.defaultConfigIds().forEach(modelRegistry::addDefaultIds);
235233
}
236234
inferenceServiceRegistry.set(registry);
237235

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

Lines changed: 4 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,6 @@
5757
import org.elasticsearch.xcontent.XContentParserConfiguration;
5858
import org.elasticsearch.xpack.core.ml.inference.results.MlTextEmbeddingResults;
5959
import org.elasticsearch.xpack.core.ml.inference.results.TextExpansionResults;
60-
import org.elasticsearch.xpack.inference.DefaultElserFeatureFlag;
6160

6261
import java.io.IOException;
6362
import java.util.ArrayList;
@@ -111,16 +110,12 @@ public static class Builder extends FieldMapper.Builder {
111110
INFERENCE_ID_FIELD,
112111
false,
113112
mapper -> ((SemanticTextFieldType) mapper.fieldType()).inferenceId,
114-
DefaultElserFeatureFlag.isEnabled() ? DEFAULT_ELSER_2_INFERENCE_ID : null
113+
DEFAULT_ELSER_2_INFERENCE_ID
115114
).addValidator(v -> {
116115
if (Strings.isEmpty(v)) {
117-
// If the default ELSER feature flag is enabled, the only way we get here is if the user explicitly sets the param to an
118-
// empty value. However, if the feature flag is disabled, we can get here if the user didn't set the param.
119-
// Adjust the error message appropriately.
120-
String message = DefaultElserFeatureFlag.isEnabled()
121-
? "[" + INFERENCE_ID_FIELD + "] on mapper [" + leafName() + "] of type [" + CONTENT_TYPE + "] must not be empty"
122-
: "[" + INFERENCE_ID_FIELD + "] on mapper [" + leafName() + "] of type [" + CONTENT_TYPE + "] must be specified";
123-
throw new IllegalArgumentException(message);
116+
throw new IllegalArgumentException(
117+
"[" + INFERENCE_ID_FIELD + "] on mapper [" + leafName() + "] of type [" + CONTENT_TYPE + "] must not be empty"
118+
);
124119
}
125120
});
126121

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

Lines changed: 1 addition & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -15,10 +15,7 @@
1515
import org.elasticsearch.rest.ServerlessScope;
1616
import org.elasticsearch.rest.action.RestToXContentListener;
1717
import org.elasticsearch.xpack.core.inference.action.GetInferenceModelAction;
18-
import org.elasticsearch.xpack.inference.DefaultElserFeatureFlag;
1918

20-
import java.util.Collections;
21-
import java.util.HashSet;
2219
import java.util.List;
2320
import java.util.Set;
2421

@@ -69,11 +66,6 @@ protected RestChannelConsumer prepareRequest(RestRequest restRequest, NodeClient
6966

7067
@Override
7168
public Set<String> supportedCapabilities() {
72-
Set<String> capabilities = new HashSet<>();
73-
if (DefaultElserFeatureFlag.isEnabled()) {
74-
capabilities.add(DEFAULT_ELSER_2_CAPABILITY);
75-
}
76-
77-
return Collections.unmodifiableSet(capabilities);
69+
return Set.of(DEFAULT_ELSER_2_CAPABILITY);
7870
}
7971
}

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

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,6 @@
3535
import org.elasticsearch.xpack.core.ml.inference.TrainedModelPrefixStrings;
3636
import org.elasticsearch.xpack.core.ml.inference.trainedmodel.InferenceConfigUpdate;
3737
import org.elasticsearch.xpack.core.ml.utils.MlPlatformArchitecturesUtil;
38-
import org.elasticsearch.xpack.inference.DefaultElserFeatureFlag;
3938
import org.elasticsearch.xpack.inference.InferencePlugin;
4039

4140
import java.io.IOException;
@@ -296,11 +295,6 @@ protected void maybeStartDeployment(
296295
InferModelAction.Request request,
297296
ActionListener<InferModelAction.Response> listener
298297
) {
299-
if (DefaultElserFeatureFlag.isEnabled() == false) {
300-
listener.onFailure(e);
301-
return;
302-
}
303-
304298
if (isDefaultId(model.getInferenceEntityId()) && ExceptionsHelper.unwrapCause(e) instanceof ResourceNotFoundException) {
305299
this.start(model, request.getInferenceTimeout(), listener.delegateFailureAndWrap((l, started) -> {
306300
client.execute(InferModelAction.INSTANCE, request, listener);

0 commit comments

Comments
 (0)