Skip to content

Commit cc04a5a

Browse files
committed
support chunking for text embedding bits
1 parent fc5d1ee commit cc04a5a

File tree

6 files changed

+11
-14
lines changed

6 files changed

+11
-14
lines changed

x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/inference/results/TextEmbeddingBitResults.java

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,6 @@
1313
import org.elasticsearch.common.io.stream.StreamOutput;
1414
import org.elasticsearch.common.xcontent.ChunkedToXContentHelper;
1515
import org.elasticsearch.inference.InferenceResults;
16-
import org.elasticsearch.inference.InferenceServiceResults;
1716
import org.elasticsearch.xcontent.ToXContent;
1817
import org.elasticsearch.xpack.core.ml.inference.results.MlTextEmbeddingResults;
1918

@@ -41,11 +40,9 @@
4140
* ]
4241
* }
4342
*/
44-
// TODO: let this implement EmbeddingResults, so that this also supports chunking.
4543
public record TextEmbeddingBitResults(List<TextEmbeddingByteResults.Embedding> embeddings)
4644
implements
47-
InferenceServiceResults,
48-
TextEmbedding {
45+
TextEmbeddingResults<TextEmbeddingByteResults.Chunk, TextEmbeddingByteResults.Embedding> {
4946
public static final String NAME = "text_embedding_service_bit_results";
5047
public static final String TEXT_EMBEDDING_BITS = "text_embedding_bits";
5148

x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/inference/results/TextEmbeddingByteResults.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -50,8 +50,7 @@
5050
*/
5151
public record TextEmbeddingByteResults(List<Embedding> embeddings)
5252
implements
53-
EmbeddingResults<TextEmbeddingByteResults.Chunk, TextEmbeddingByteResults.Embedding>,
54-
TextEmbedding {
53+
TextEmbeddingResults<TextEmbeddingByteResults.Chunk, TextEmbeddingByteResults.Embedding> {
5554
public static final String NAME = "text_embedding_service_byte_results";
5655
public static final String TEXT_EMBEDDING_BYTES = "text_embedding_bytes";
5756

x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/inference/results/TextEmbeddingFloatResults.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -55,8 +55,7 @@
5555
*/
5656
public record TextEmbeddingFloatResults(List<Embedding> embeddings)
5757
implements
58-
EmbeddingResults<TextEmbeddingFloatResults.Chunk, TextEmbeddingFloatResults.Embedding>,
59-
TextEmbedding {
58+
TextEmbeddingResults<TextEmbeddingFloatResults.Chunk, TextEmbeddingFloatResults.Embedding> {
6059
public static final String NAME = "text_embedding_service_results";
6160
public static final String TEXT_EMBEDDING = TaskType.TEXT_EMBEDDING.toString();
6261

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,9 @@
77

88
package org.elasticsearch.xpack.core.inference.results;
99

10-
public interface TextEmbedding {
10+
public interface TextEmbeddingResults<C extends EmbeddingResults.Chunk, E extends EmbeddingResults.Embedding<C>>
11+
extends
12+
EmbeddingResults<C, E> {
1113

1214
/**
1315
* Returns the first text embedding entry in the result list's array size.

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,8 @@
2222
import org.elasticsearch.inference.TaskType;
2323
import org.elasticsearch.rest.RestStatus;
2424
import org.elasticsearch.xpack.core.inference.action.InferenceAction;
25-
import org.elasticsearch.xpack.core.inference.results.TextEmbedding;
2625
import org.elasticsearch.xpack.core.inference.results.TextEmbeddingFloatResults;
26+
import org.elasticsearch.xpack.core.inference.results.TextEmbeddingResults;
2727
import org.elasticsearch.xpack.core.ml.inference.assignment.AdaptiveAllocationsSettings;
2828
import org.elasticsearch.xpack.inference.services.settings.ApiKeySecrets;
2929

@@ -741,7 +741,7 @@ public static void getEmbeddingSize(Model model, InferenceService service, Actio
741741
InputType.INGEST,
742742
InferenceAction.Request.DEFAULT_TIMEOUT,
743743
listener.delegateFailureAndWrap((delegate, r) -> {
744-
if (r instanceof TextEmbedding embeddingResults) {
744+
if (r instanceof TextEmbeddingResults<?, ?> embeddingResults) {
745745
try {
746746
delegate.onResponse(embeddingResults.getFirstEmbeddingSize());
747747
} catch (Exception e) {

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

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,8 @@
1414
import org.elasticsearch.inference.InferenceServiceResults;
1515
import org.elasticsearch.inference.Model;
1616
import org.elasticsearch.rest.RestStatus;
17-
import org.elasticsearch.xpack.core.inference.results.TextEmbedding;
1817
import org.elasticsearch.xpack.core.inference.results.TextEmbeddingFloatResults;
18+
import org.elasticsearch.xpack.core.inference.results.TextEmbeddingResults;
1919

2020
public class TextEmbeddingModelValidator implements ModelValidator {
2121

@@ -33,7 +33,7 @@ public void validate(InferenceService service, Model model, ActionListener<Model
3333
}
3434

3535
private Model postValidate(InferenceService service, Model model, InferenceServiceResults results) {
36-
if (results instanceof TextEmbedding embeddingResults) {
36+
if (results instanceof TextEmbeddingResults<?, ?> embeddingResults) {
3737
var serviceSettings = model.getServiceSettings();
3838
var dimensions = serviceSettings.dimensions();
3939
int embeddingSize = getEmbeddingSize(embeddingResults);
@@ -67,7 +67,7 @@ private Model postValidate(InferenceService service, Model model, InferenceServi
6767
}
6868
}
6969

70-
private int getEmbeddingSize(TextEmbedding embeddingResults) {
70+
private int getEmbeddingSize(TextEmbeddingResults<?, ?> embeddingResults) {
7171
int embeddingSize;
7272
try {
7373
embeddingSize = embeddingResults.getFirstEmbeddingSize();

0 commit comments

Comments
 (0)