Skip to content

Commit 651fede

Browse files
committed
Cleanup
1 parent 216f8bc commit 651fede

File tree

7 files changed

+36
-26
lines changed

7 files changed

+36
-26
lines changed

docs/reference/mapping/types/semantic-text.asciidoc

Whitespace-only changes.

server/src/main/java/org/elasticsearch/cluster/metadata/SemanticTextIndexOptions.java

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,15 @@
2626
import java.util.Locale;
2727
import java.util.Map;
2828

29+
/**
30+
* Represents index options for a semantic_text field.
31+
* We represent semantic_text index_options as nested within their respective type. For example:
32+
* "index_options": {
33+
* "dense_vector": {
34+
* "type": "bbq_hnsw
35+
* }
36+
* }
37+
*/
2938
public class SemanticTextIndexOptions implements ToXContent, Writeable {
3039

3140
private static final String TYPE_FIELD = "type";
@@ -103,11 +112,11 @@ private static DenseVectorFieldMapper.DenseVectorIndexOptions parseDenseVectorIn
103112
try {
104113
Object type = map.remove(TYPE_FIELD);
105114
if (type == null) {
106-
throw new IllegalArgumentException("Required [" + TYPE_FIELD + "]");
115+
throw new IllegalArgumentException("Required " + TYPE_FIELD);
107116
}
108117
DenseVectorFieldMapper.VectorIndexType vectorIndexType = DenseVectorFieldMapper.VectorIndexType.fromString(
109-
XContentMapValues.nodeStringValue(type.toString(), null)
110-
).orElseThrow(() -> new IllegalArgumentException("Unsupported index options " + TYPE_FIELD + " [" + type + "]"));
118+
XContentMapValues.nodeStringValue(type, null)
119+
).orElseThrow(() -> new IllegalArgumentException("Unsupported index options " + TYPE_FIELD + type));
111120

112121
return vectorIndexType.parseIndexOptions(fieldName, map, indexVersion);
113122
} catch (Exception exc) {

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

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,9 @@
1616

1717
import java.io.IOException;
1818

19+
/**
20+
* Represents general index options that can be attached to a semantic or vector field.
21+
*/
1922
public abstract class IndexOptions implements ToXContent, Writeable {
2023

2124
public IndexOptions() {}

server/src/test/java/org/elasticsearch/cluster/metadata/IndexMetadataTests.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,6 @@
3838
import org.elasticsearch.index.shard.ShardId;
3939
import org.elasticsearch.index.shard.ShardLongFieldRange;
4040
import org.elasticsearch.indices.IndicesModule;
41-
import org.elasticsearch.inference.TaskType;
4241
import org.elasticsearch.test.ESTestCase;
4342
import org.elasticsearch.test.index.IndexVersionUtils;
4443
import org.elasticsearch.xcontent.NamedXContentRegistry;
@@ -730,7 +729,7 @@ private static InferenceFieldMetadata randomInferenceFieldMetadata(String name)
730729
randomIdentifier(),
731730
randomSet(1, 5, ESTestCase::randomIdentifier).toArray(String[]::new),
732731
InferenceFieldMetadataTests.generateRandomChunkingSettings(),
733-
InferenceFieldMetadataTests.randomSemanticTextIndexOptions(TaskType.TEXT_EMBEDDING)
732+
InferenceFieldMetadataTests.randomSemanticTextIndexOptions()
734733
);
735734
}
736735

server/src/test/java/org/elasticsearch/cluster/metadata/InferenceFieldMetadataTests.java

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,7 @@ private static InferenceFieldMetadata createTestItem() {
7070
String searchInferenceId = randomIdentifier();
7171
String[] inputFields = generateRandomStringArray(5, 10, false, false);
7272
Map<String, Object> chunkingSettings = generateRandomChunkingSettings();
73-
SemanticTextIndexOptions indexOptions = randomSemanticTextIndexOptions(TaskType.TEXT_EMBEDDING);
73+
SemanticTextIndexOptions indexOptions = randomSemanticTextIndexOptions();
7474
return new InferenceFieldMetadata(name, inferenceId, searchInferenceId, inputFields, chunkingSettings, indexOptions);
7575
}
7676

@@ -81,6 +81,11 @@ public static Map<String, Object> generateRandomChunkingSettings() {
8181
return randomBoolean() ? generateRandomWordBoundaryChunkingSettings() : generateRandomSentenceBoundaryChunkingSettings();
8282
}
8383

84+
public static SemanticTextIndexOptions randomSemanticTextIndexOptions() {
85+
TaskType taskType = randomFrom(TaskType.SPARSE_EMBEDDING, TaskType.TEXT_EMBEDDING);
86+
return randomSemanticTextIndexOptions(taskType);
87+
}
88+
8489
public static SemanticTextIndexOptions randomSemanticTextIndexOptions(TaskType taskType) {
8590

8691
if (taskType == TaskType.TEXT_EMBEDDING) {
@@ -89,7 +94,6 @@ public static SemanticTextIndexOptions randomSemanticTextIndexOptions(TaskType t
8994
: new SemanticTextIndexOptions(SemanticTextIndexOptions.SupportedIndexOptions.DENSE_VECTOR, randomIndexOptionsAll());
9095
}
9196

92-
// No other supported task types
9397
return null;
9498
}
9599

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

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1135,6 +1135,20 @@ private static Mapper.Builder createEmbeddingsField(
11351135
}
11361136
}
11371137

1138+
boolean hasUserSpecifiedIndexOptions = indexOptions != null;
1139+
DenseVectorFieldMapper.DenseVectorIndexOptions denseVectorIndexOptions = hasUserSpecifiedIndexOptions
1140+
? (DenseVectorFieldMapper.DenseVectorIndexOptions) indexOptions.indexOptions()
1141+
: (indexVersionCreated.onOrAfter(SEMANTIC_TEXT_DEFAULTS_TO_BBQ) ? defaultSemanticDenseIndexOptions() : null);
1142+
1143+
if (denseVectorIndexOptions != null
1144+
&& denseVectorIndexOptions.validate(
1145+
modelSettings.elementType(),
1146+
modelSettings.dimensions(),
1147+
hasUserSpecifiedIndexOptions
1148+
)) {
1149+
denseVectorMapperBuilder.indexOptions(denseVectorIndexOptions);
1150+
}
1151+
11381152
yield denseVectorMapperBuilder;
11391153
}
11401154
default -> throw new IllegalArgumentException("Invalid task_type in model_settings [" + modelSettings.taskType().name() + "]");

x-pack/plugin/inference/src/test/java/org/elasticsearch/xpack/inference/mapper/SemanticInferenceMetadataFieldsMapperTests.java

Lines changed: 0 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -137,23 +137,4 @@ static IndexVersion getRandomCompatibleIndexVersion(boolean useLegacyFormat, Ind
137137
);
138138
}
139139
}
140-
141-
static IndexVersion getRandomCompatibleIndexVersion(boolean useLegacyFormat, IndexVersion minVersion, IndexVersion maxVersion) {
142-
if (useLegacyFormat) {
143-
if (randomBoolean()) {
144-
return IndexVersionUtils.randomVersionBetween(random(), IndexVersions.UPGRADE_TO_LUCENE_10_0_0, maxVersion);
145-
}
146-
return IndexVersionUtils.randomPreviousCompatibleVersion(random(), IndexVersions.INFERENCE_METADATA_FIELDS_BACKPORT);
147-
} else {
148-
if (randomBoolean()) {
149-
return IndexVersionUtils.randomVersionBetween(random(), IndexVersions.INFERENCE_METADATA_FIELDS, maxVersion);
150-
}
151-
return IndexVersionUtils.randomVersionBetween(
152-
random(),
153-
IndexVersions.INFERENCE_METADATA_FIELDS_BACKPORT,
154-
IndexVersionUtils.getPreviousVersion(IndexVersions.UPGRADE_TO_LUCENE_10_0_0)
155-
);
156-
}
157-
}
158-
159140
}

0 commit comments

Comments
 (0)