Skip to content
Merged
Show file tree
Hide file tree
Changes from 4 commits
Commits
Show all changes
99 commits
Select commit Hold shift + click to select a range
9f4e2ad
test
kderusso Feb 12, 2025
a561017
Revert "test"
kderusso Feb 12, 2025
acb14a2
Refactor InferenceService to allow passing in chunking settings
kderusso Jan 24, 2025
933c74d
Add chunking config to inference field metadata and store in semantic…
kderusso Jan 24, 2025
6b11f01
Fix test compilation errors
kderusso Jan 27, 2025
7c4ba49
Hacking around trying to get ingest to work
kderusso Jan 27, 2025
edbfde3
Debugging
kderusso Jan 27, 2025
c255745
[CI] Auto commit changes from spotless
Jan 28, 2025
889875f
POC works and update TODO to fix this
kderusso Jan 28, 2025
c87753e
[CI] Auto commit changes from spotless
Jan 28, 2025
c2c9a52
Refactor chunking settings from model settings to field inference req…
kderusso Feb 12, 2025
c9bfa32
A bit of cleanup
kderusso Feb 12, 2025
122aeee
Revert a bunch of changes to try to narrow down what broke CI
kderusso Feb 14, 2025
b42f262
test
kderusso Feb 12, 2025
75404b5
Revert "test"
kderusso Feb 12, 2025
0dcadfa
Merge from main
kderusso Feb 14, 2025
a54804e
Fix InferenceFieldMetadataTest
kderusso Feb 14, 2025
675819c
[CI] Auto commit changes from spotless
Feb 14, 2025
ccef5cc
Add chunking settings back in
kderusso Feb 14, 2025
70ac065
Update builder to use new map
kderusso Mar 4, 2025
4ac2460
Merge from main
kderusso Mar 4, 2025
20d596c
Fix compilation errors after merge
kderusso Mar 4, 2025
178a9db
Debugging tests
kderusso Mar 4, 2025
7f1e99d
debugging
kderusso Mar 4, 2025
f74c803
Merge branch 'main' into kderusso/support-configurable-chunking
kderusso Mar 4, 2025
65acf8f
Cleanup
kderusso Mar 4, 2025
51d9aae
Add yaml test
kderusso Mar 4, 2025
7aaaee8
Update tests
kderusso Mar 4, 2025
d306eae
Add chunking to test inference service
kderusso Mar 4, 2025
7cf7589
Trying to get tests to work
kderusso Mar 5, 2025
89e040d
Shard bulk inference test never specifies chunking settings
kderusso Mar 5, 2025
233defd
Fix test
kderusso Mar 5, 2025
0b2ebf6
Always process batches in order
kderusso Mar 5, 2025
a807ab5
Fix chunking in test inference service and yaml tests
kderusso Mar 5, 2025
dc48c28
[CI] Auto commit changes from spotless
Mar 5, 2025
3ed5631
Refactor - remove convenience method with default chunking settings
kderusso Mar 6, 2025
c95789d
Fix ShardBulkInferenceActionFilterTests
kderusso Mar 6, 2025
75031e1
Fix ElasticsearchInternalServiceTests
kderusso Mar 6, 2025
d051cd2
Fix SemanticTextFieldMapperTests
kderusso Mar 6, 2025
8913177
[CI] Auto commit changes from spotless
Mar 6, 2025
2ab5aec
Fix test data to fit within bounds
kderusso Mar 6, 2025
92d70dc
Add additional yaml test cases
kderusso Mar 6, 2025
1106671
Playing with xcontent parsing
kderusso Mar 6, 2025
11ab0f9
Merge from main
kderusso Mar 6, 2025
fb2cc28
A little cleanup
kderusso Mar 7, 2025
1745dc9
Update docs/changelog/121041.yaml
kderusso Mar 7, 2025
a2cdc42
Merge from main
kderusso Mar 10, 2025
525eed2
Fix failures introduced by merge
kderusso Mar 10, 2025
45ab0eb
[CI] Auto commit changes from spotless
Mar 10, 2025
42c8449
Address PR feedback
kderusso Mar 13, 2025
71edec2
[CI] Auto commit changes from spotless
Mar 13, 2025
6a37449
Fix predicate in updated test
kderusso Mar 13, 2025
c076f92
Better handling of null/empty ChunkingSettings
kderusso Mar 13, 2025
2ef235c
Update parsing settings
kderusso Mar 13, 2025
f739639
Merge from main
kderusso Mar 13, 2025
311d840
Fix errors post merge
kderusso Mar 13, 2025
e3e15d2
PR feedback
kderusso Mar 19, 2025
4224159
[CI] Auto commit changes from spotless
Mar 19, 2025
ad090d7
PR feedback and fix Xcontent parsing for SemanticTextField
kderusso Mar 19, 2025
a8ef9a1
Remove chunking settings check to use what's passed in from sender se…
kderusso Mar 19, 2025
db06fd9
Fix some tests
kderusso Mar 20, 2025
b5f2929
Cleanup
kderusso Mar 20, 2025
fccbd61
Test failure whack-a-mole
kderusso Mar 20, 2025
aab16e7
Cleanup
kderusso Mar 20, 2025
1d54066
Merge from main
kderusso Mar 20, 2025
023c227
Refactor to handle memory optimized bulk shard inference actions - th…
kderusso Mar 21, 2025
b26b9a2
[CI] Auto commit changes from spotless
Mar 21, 2025
1c84cc2
Minor cleanup
kderusso Mar 24, 2025
165c19e
A bit more cleanup
kderusso Mar 24, 2025
735982a
Spotless
kderusso Mar 24, 2025
b2839fc
Revert change
kderusso Mar 24, 2025
ecc9bb3
Update chunking setting update logic
kderusso Mar 24, 2025
4c992d8
Go back to serializing maps
kderusso Mar 24, 2025
c807199
Revert change to model settings - source still errors on missing mode…
kderusso Mar 24, 2025
c152281
Fix updating chunking settings
kderusso Mar 25, 2025
561f583
Merge main into kderusso/support-configurable-chunking
kderusso Mar 25, 2025
9907a64
Look up model if null
kderusso Mar 26, 2025
688c637
Fix test
kderusso Mar 26, 2025
7693ef6
Merge main into kderusso/support-configurable-chunking
kderusso Mar 26, 2025
fa9247a
Work around https://github.com/elastic/elasticsearch/issues/125723 in…
kderusso Mar 27, 2025
1d8931c
Add BWC tests
kderusso Mar 27, 2025
ab7752e
Add chunking_settings to docs
kderusso Mar 27, 2025
d2ef735
Merge main into kderusso/support-configurable-chunking
kderusso Mar 27, 2025
cd4d32b
Refactor/rename
kderusso Mar 28, 2025
5db7ed4
Address minor PR feedback
kderusso Mar 28, 2025
e477639
Add test case for null update
kderusso Mar 28, 2025
7d85fd3
PR feedback - adjust refactor of chunked inputs
kderusso Mar 28, 2025
845a732
Refactored AbstractTestInferenceService to return offsets instead of …
kderusso Mar 28, 2025
2ed86d4
[CI] Auto commit changes from spotless
Mar 28, 2025
0a54972
Fix tests where chunk output was of size 3
kderusso Mar 28, 2025
8cf287b
Update mappings per PR feedback
kderusso Mar 28, 2025
a9c7512
PR Feedback
kderusso Apr 1, 2025
65b8893
Merge main into branch
kderusso Apr 3, 2025
546e333
Fix problems related to merge
kderusso Apr 3, 2025
612d2fb
PR optimization
kderusso Apr 3, 2025
9fb17a6
Fix test
kderusso Apr 3, 2025
bf8c460
Delete extra file
kderusso Apr 3, 2025
2b5589d
Merge main into branch
kderusso Apr 3, 2025
1e3fc22
Merge from main
kderusso Apr 3, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -208,7 +208,10 @@ static TransportVersion def(int id) {
public static final TransportVersion RESCORE_VECTOR_ALLOW_ZERO = def(9_039_0_00);
public static final TransportVersion PROJECT_ID_IN_SNAPSHOT = def(9_040_0_00);
public static final TransportVersion INDEX_STATS_AND_METADATA_INCLUDE_PEAK_WRITE_LOAD = def(9_041_0_00);
public static final TransportVersion SEMANTIC_TEXT_CHUNKING_CONFIG = def(9_042_00_0);
public static final TransportVersion REPOSITORIES_METADATA_AS_PROJECT_CUSTOM = def(9_042_0_00);
public static final TransportVersion BATCHED_QUERY_PHASE_VERSION = def(9_043_0_00);
public static final TransportVersion REMOTE_EXCEPTION = def(9_044_0_00);
public static final TransportVersion SEMANTIC_TEXT_CHUNKING_CONFIG = def(9_045_00_0);

/*
* STOP! READ THIS FIRST! No, really,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -180,16 +180,14 @@ private List<ChunkedInference> makeChunkedResults(List<ChunkInferenceInput> inpu
var results = new ArrayList<ChunkedInference>();
for (ChunkInferenceInput input : inputs) {
List<ChunkedInput> chunkedInput = chunkInputs(input);
List<TextEmbeddingFloatResults.Chunk> chunks = new ArrayList<>(
chunkedInput.stream()
.map(
c -> new TextEmbeddingFloatResults.Chunk(
makeResults(List.of(c.input()), serviceSettings).embeddings().get(0),
new ChunkedInference.TextOffset(c.startOffset(), c.endOffset())
)
List<TextEmbeddingFloatResults.Chunk> chunks = chunkedInput.stream()
.map(
c -> new TextEmbeddingFloatResults.Chunk(
makeResults(List.of(c.input()), serviceSettings).embeddings().get(0),
new ChunkedInference.TextOffset(c.startOffset(), c.endOffset())
)
.toList()
);
)
.toList();
ChunkedInferenceEmbedding chunkedInferenceEmbedding = new ChunkedInferenceEmbedding(chunks);
results.add(chunkedInferenceEmbedding);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -170,16 +170,15 @@ private SparseEmbeddingResults makeResults(List<String> input) {
private List<ChunkedInference> makeChunkedResults(List<ChunkInferenceInput> inputs) {
List<ChunkedInference> results = new ArrayList<>();
for (ChunkInferenceInput chunkInferenceInput : inputs) {
String input = chunkInferenceInput.input();
List<ChunkedInput> chunkedInput = chunkInputs(chunkInferenceInput);
List<SparseEmbeddingResults.Chunk> chunks = new ArrayList<>(chunkedInput.stream().map(c -> {
List<SparseEmbeddingResults.Chunk> chunks = chunkedInput.stream().map(c -> {
var tokens = new ArrayList<WeightedToken>();
for (int i = 0; i < 5; i++) {
tokens.add(new WeightedToken("feature_" + i, generateEmbedding(c.input(), i)));
}
var embeddings = new SparseEmbeddingResults.Embedding(tokens, false);
return new SparseEmbeddingResults.Chunk(embeddings, new ChunkedInference.TextOffset(c.startOffset(), c.endOffset()));
}).toList());
}).toList();
ChunkedInferenceEmbedding chunkedInferenceEmbedding = new ChunkedInferenceEmbedding(chunks);
results.add(chunkedInferenceEmbedding);
}
Expand Down
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I noticed a completely unrelated bug in SentenceBoundaryChunkingSettings while reviewing this: equals does not consider sentenceOverlap

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We can spin up a quick and dirty followup PR for that, not addressing it here.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@
import org.elasticsearch.inference.ChunkInferenceInput;
import org.elasticsearch.inference.ChunkedInference;
import org.elasticsearch.inference.ChunkingSettings;
import org.elasticsearch.inference.ChunkingStrategy;
import org.elasticsearch.inference.InferenceServiceResults;
import org.elasticsearch.rest.RestStatus;
import org.elasticsearch.xpack.core.inference.results.ChunkedInferenceEmbedding;
Expand All @@ -22,6 +23,8 @@

import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.concurrent.atomic.AtomicReferenceArray;
import java.util.function.Supplier;
Expand All @@ -48,11 +51,8 @@ public String chunkText() {
}

public record BatchRequest(List<Request> requests) {
public List<String> inputs() {
return requests.stream()
.map(r -> new ChunkInferenceInput(r.chunkText(), r.inputs().getFirst().chunkingSettings()))
.map(ChunkInferenceInput::input)
.collect(Collectors.toList());
public Supplier<List<String>> inputs() {
return () -> requests.stream().map(Request::chunkText).collect(Collectors.toList());
}
}

Expand Down Expand Up @@ -97,13 +97,20 @@ public EmbeddingRequestChunker(
defaultChunkingSettings = DEFAULT_CHUNKING_SETTINGS;
}

Map<ChunkingStrategy, Chunker> chunkers = inputs.stream()
.map(ChunkInferenceInput::chunkingSettings)
.filter(Objects::nonNull)
.map(ChunkingSettings::getChunkingStrategy)
.distinct()
.collect(Collectors.toMap(chunkingStrategy -> chunkingStrategy, ChunkerBuilder::fromChunkingStrategy));

List<Request> allRequests = new ArrayList<>();
for (int inputIndex = 0; inputIndex < inputs.size(); inputIndex++) {
ChunkingSettings chunkingSettings = inputs.get(inputIndex).chunkingSettings();
if (chunkingSettings == null) {
chunkingSettings = defaultChunkingSettings;
}
Chunker chunker = ChunkerBuilder.fromChunkingStrategy(chunkingSettings.getChunkingStrategy());
Chunker chunker = chunkers.get(chunkingSettings.getChunkingStrategy());
List<ChunkOffset> chunks = chunker.chunk(inputs.get(inputIndex).input(), chunkingSettings);
int resultCount = Math.min(chunks.size(), MAX_CHUNKS);
resultEmbeddings.add(new AtomicReferenceArray<>(resultCount));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@

import java.util.List;
import java.util.Objects;
import java.util.function.Supplier;
import java.util.stream.Collectors;

public class EmbeddingsInput extends InferenceInputs {
Expand All @@ -26,14 +27,19 @@ public static EmbeddingsInput of(InferenceInputs inferenceInputs) {
return (EmbeddingsInput) inferenceInputs;
}

private final List<ChunkInferenceInput> input;

private final Supplier<List<ChunkInferenceInput>> listSupplier;
private final InputType inputType;

public EmbeddingsInput(List<ChunkInferenceInput> input, @Nullable InputType inputType) {
this(input, inputType, false);
}

public EmbeddingsInput(Supplier<List<ChunkInferenceInput>> inputSupplier, @Nullable InputType inputType) {
super(false);
this.listSupplier = Objects.requireNonNull(inputSupplier);
this.inputType = inputType;
}

public EmbeddingsInput(List<String> input, @Nullable ChunkingSettings chunkingSettings, @Nullable InputType inputType) {
this(input.stream().map(i -> new ChunkInferenceInput(i, chunkingSettings)).collect(Collectors.toList()), inputType, false);
}
Expand All @@ -45,16 +51,16 @@ public EmbeddingsInput(List<ChunkInferenceInput> input, @Nullable InputType inpu
this.inputType = inputType;
}

public static EmbeddingsInput fromStrings(List<String> input, @Nullable InputType inputType) {
return new EmbeddingsInput(input, null, inputType);
public List<ChunkInferenceInput> getInputs() {
return this.listSupplier.get();
}

public List<ChunkInferenceInput> getInputs() {
return this.input;
public static EmbeddingsInput fromStrings(List<String> input, @Nullable InputType inputType) {
return new EmbeddingsInput(input, null, inputType);
}

public List<String> getStringInputs() {
return this.input.stream().map(ChunkInferenceInput::input).collect(Collectors.toList());
return getInputs().stream().map(ChunkInferenceInput::input).collect(Collectors.toList());
}

public InputType getInputType() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -317,13 +317,14 @@ private void validateServiceSettings(MinimalServiceSettings settings) {
* @return A mapper with the copied settings applied
*/
private SemanticTextFieldMapper copySettings(SemanticTextFieldMapper mapper, MapperMergeContext mapperMergeContext) {
SemanticTextFieldMapper returnedMapper;
Builder builder = from(mapper);
SemanticTextFieldMapper returnedMapper = mapper;
if (mapper.fieldType().getModelSettings() == null) {
Builder builder = from(mapper);
builder.setModelSettings(modelSettings.getValue());
returnedMapper = builder.build(mapperMergeContext.getMapperBuilderContext());
}
builder.setChunkingSettings(mapper.fieldType().getChunkingSettings());
return builder.build(mapperMergeContext.getMapperBuilderContext());

return returnedMapper;
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -344,7 +344,7 @@ protected void doChunkedInfer(

for (var request : batchedRequests) {
var action = alibabaCloudSearchModel.accept(actionCreator, taskSettings);
action.execute(EmbeddingsInput.fromStrings(request.batch().inputs(), inputType), timeout, request.listener());
action.execute(EmbeddingsInput.fromStrings(request.batch().inputs().get(), inputType), timeout, request.listener());
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -170,7 +170,7 @@ protected void doChunkedInfer(

for (var request : batchedRequests) {
var action = baseAmazonBedrockModel.accept(actionCreator, taskSettings);
action.execute(EmbeddingsInput.fromStrings(request.batch().inputs(), inputType), timeout, request.listener());
action.execute(EmbeddingsInput.fromStrings(request.batch().inputs().get(), inputType), timeout, request.listener());
}
} else {
listener.onFailure(createInvalidModelException(model));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -141,7 +141,7 @@ protected void doChunkedInfer(

for (var request : batchedRequests) {
var action = baseAzureAiStudioModel.accept(actionCreator, taskSettings);
action.execute(EmbeddingsInput.fromStrings(request.batch().inputs(), inputType), timeout, request.listener());
action.execute(EmbeddingsInput.fromStrings(request.batch().inputs().get(), inputType), timeout, request.listener());
}
} else {
listener.onFailure(createInvalidModelException(model));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -294,7 +294,7 @@ protected void doChunkedInfer(

for (var request : batchedRequests) {
var action = azureOpenAiModel.accept(actionCreator, taskSettings);
action.execute(EmbeddingsInput.fromStrings(request.batch().inputs(), inputType), timeout, request.listener());
action.execute(EmbeddingsInput.fromStrings(request.batch().inputs().get(), inputType), timeout, request.listener());
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -307,7 +307,7 @@ protected void doChunkedInfer(

for (var request : batchedRequests) {
var action = cohereModel.accept(actionCreator, taskSettings);
action.execute(EmbeddingsInput.fromStrings(request.batch().inputs(), inputType), timeout, request.listener());
action.execute(EmbeddingsInput.fromStrings(request.batch().inputs().get(), inputType), timeout, request.listener());
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -364,7 +364,13 @@ protected void doChunkedInfer(
).batchRequestsWithListeners(listener);

for (var request : batchedRequests) {
doInfer(model, EmbeddingsInput.fromStrings(request.batch().inputs(), inputType), taskSettings, timeout, request.listener());
doInfer(
model,
EmbeddingsInput.fromStrings(request.batch().inputs().get(), inputType),
taskSettings,
timeout,
request.listener()
);
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -250,7 +250,7 @@ protected void doChunkedInfer(

for (var request : batchedRequests) {
var action = googleVertexAiModel.accept(actionCreator, taskSettings);
action.execute(EmbeddingsInput.fromStrings(request.batch().inputs(), inputType), timeout, request.listener());
action.execute(EmbeddingsInput.fromStrings(request.batch().inputs().get(), inputType), timeout, request.listener());
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -135,7 +135,7 @@ protected void doChunkedInfer(

for (var request : batchedRequests) {
var action = huggingFaceModel.accept(actionCreator);
action.execute(EmbeddingsInput.fromStrings(request.batch().inputs(), inputType), timeout, request.listener());
action.execute(EmbeddingsInput.fromStrings(request.batch().inputs().get(), inputType), timeout, request.listener());
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -319,7 +319,7 @@ protected void doChunkedInfer(
).batchRequestsWithListeners(listener);
for (var request : batchedRequests) {
var action = ibmWatsonxModel.accept(getActionCreator(getSender(), getServiceComponents()), taskSettings);
action.execute(EmbeddingsInput.fromStrings(request.batch().inputs(), inputType), timeout, request.listener());
action.execute(EmbeddingsInput.fromStrings(request.batch().inputs().get(), inputType), timeout, request.listener());
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -288,7 +288,7 @@ protected void doChunkedInfer(

for (var request : batchedRequests) {
var action = jinaaiModel.accept(actionCreator, taskSettings);
action.execute(EmbeddingsInput.fromStrings(request.batch().inputs(), inputType), timeout, request.listener());
action.execute(EmbeddingsInput.fromStrings(request.batch().inputs().get(), inputType), timeout, request.listener());
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -123,7 +123,7 @@ protected void doChunkedInfer(

for (var request : batchedRequests) {
var action = mistralEmbeddingsModel.accept(actionCreator, taskSettings);
action.execute(EmbeddingsInput.fromStrings(request.batch().inputs(), inputType), timeout, request.listener());
action.execute(EmbeddingsInput.fromStrings(request.batch().inputs().get(), inputType), timeout, request.listener());
}
} else {
listener.onFailure(createInvalidModelException(model));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -347,7 +347,7 @@ protected void doChunkedInfer(

for (var request : batchedRequests) {
var action = openAiModel.accept(actionCreator, taskSettings);
action.execute(EmbeddingsInput.fromStrings(request.batch().inputs(), inputType), timeout, request.listener());
action.execute(EmbeddingsInput.fromStrings(request.batch().inputs().get(), inputType), timeout, request.listener());
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -308,7 +308,7 @@ protected void doChunkedInfer(

for (var request : batchedRequests) {
var action = voyageaiModel.accept(actionCreator, taskSettings);
action.execute(EmbeddingsInput.fromStrings(request.batch().inputs(), inputType), timeout, request.listener());
action.execute(EmbeddingsInput.fromStrings(request.batch().inputs().get(), inputType), timeout, request.listener());
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -98,7 +98,7 @@ public void testShortInputsAreSingleBatch() {
ChunkInferenceInput input = new ChunkInferenceInput("one chunk");
var batches = new EmbeddingRequestChunker<>(List.of(input), 100, 100, 10).batchRequestsWithListeners(testListener());
assertThat(batches, hasSize(1));
assertThat(batches.get(0).batch().inputs(), contains(input.input()));
assertThat(batches.get(0).batch().inputs().get(), contains(input.input()));
}

public void testMultipleShortInputsAreSingleBatch() {
Expand All @@ -110,7 +110,7 @@ public void testMultipleShortInputsAreSingleBatch() {
var batches = new EmbeddingRequestChunker<>(inputs, 100, 100, 10).batchRequestsWithListeners(testListener());
assertThat(batches, hasSize(1));
EmbeddingRequestChunker.BatchRequest batch = batches.getFirst().batch();
assertEquals(batch.inputs(), ChunkInferenceInput.inputs(inputs));
assertEquals(batch.inputs().get(), ChunkInferenceInput.inputs(inputs));
for (int i = 0; i < inputs.size(); i++) {
var request = batch.requests().get(i);
assertThat(request.chunkText(), equalTo(inputs.get(i).input()));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,7 @@ public void testOneInputIsValid() {

public void testMoreThanOneInput() {
var badInput = mock(EmbeddingsInput.class);
var input = List.of(new ChunkInferenceInput("one", null), new ChunkInferenceInput("two", null));
var input = List.of(new ChunkInferenceInput("one"), new ChunkInferenceInput("two"));
when(badInput.getInputs()).thenReturn(input);
when(badInput.isSingleInput()).thenReturn(false);
var actualException = new AtomicReference<Exception>();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,6 @@
import org.elasticsearch.xpack.core.ml.search.WeightedToken;
import org.elasticsearch.xpack.inference.InferencePlugin;
import org.elasticsearch.xpack.inference.mapper.SemanticTextField;
import org.elasticsearch.xpack.inference.mapper.SemanticTextFieldTests;
import org.junit.Before;
import org.junit.BeforeClass;

Expand Down Expand Up @@ -370,12 +369,7 @@ private static SourceToParse buildSemanticTextFieldWithInferenceResults(
useLegacyFormat,
SEMANTIC_TEXT_FIELD,
null,
new SemanticTextField.InferenceResult(
INFERENCE_ID,
modelSettings,
SemanticTextFieldTests.generateRandomChunkingSettings(),
Map.of(SEMANTIC_TEXT_FIELD, List.of())
),
new SemanticTextField.InferenceResult(INFERENCE_ID, modelSettings, null, Map.of(SEMANTIC_TEXT_FIELD, List.of())),
XContentType.JSON
);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -274,13 +274,14 @@ setup:
fields:
inference_field:
type: "semantic"
number_of_fragments: 2
number_of_fragments: 3

- match: { hits.total.value: 1 }
- match: { hits.hits.0._id: "doc_4" }
- length: { hits.hits.0.highlight.inference_field: 2 }
- length: { hits.hits.0.highlight.inference_field: 3 }
- match: { hits.hits.0.highlight.inference_field.0: "Elasticsearch is an open source, distributed, RESTful, search engine which" }
- match: { hits.hits.0.highlight.inference_field.1: " which is built on top of Lucene internally and enjoys" }
- match: { hits.hits.0.highlight.inference_field.2: " enjoys all the features it provides." }

---
"We respect multiple semantic_text fields with different chunking configurations":
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -286,13 +286,14 @@ setup:
fields:
inference_field:
type: "semantic"
number_of_fragments: 2
number_of_fragments: 3

- match: { hits.total.value: 1 }
- match: { hits.hits.0._id: "doc_4" }
- length: { hits.hits.0.highlight.inference_field: 2 }
- length: { hits.hits.0.highlight.inference_field: 3 }
- match: { hits.hits.0.highlight.inference_field.0: "Elasticsearch is an open source, distributed, RESTful, search engine which" }
- match: { hits.hits.0.highlight.inference_field.1: " which is built on top of Lucene internally and enjoys" }
- match: { hits.hits.0.highlight.inference_field.2: " enjoys all the features it provides." }

---
"We respect multiple semantic_text fields with different chunking configurations":
Expand Down
Loading