1616import org .elasticsearch .xcontent .XContentParser ;
1717import org .elasticsearch .xcontent .XContentParserConfiguration ;
1818import org .elasticsearch .xcontent .XContentType ;
19+ import org .elasticsearch .xpack .core .inference .results .InferenceByteEmbedding ;
20+ import org .elasticsearch .xpack .core .inference .results .InferenceTextEmbeddingBitResults ;
1921import org .elasticsearch .xpack .core .inference .results .InferenceTextEmbeddingByteResults ;
2022import org .elasticsearch .xpack .core .inference .results .InferenceTextEmbeddingFloatResults ;
2123import org .elasticsearch .xpack .inference .external .http .HttpResult ;
@@ -43,7 +45,9 @@ public class VoyageAIEmbeddingsResponseEntity {
4345 toLowerCase (VoyageAIEmbeddingType .FLOAT ),
4446 VoyageAIEmbeddingsResponseEntity ::parseFloatEmbeddingsArray ,
4547 toLowerCase (VoyageAIEmbeddingType .INT8 ),
46- VoyageAIEmbeddingsResponseEntity ::parseByteEmbeddingsArray
48+ VoyageAIEmbeddingsResponseEntity ::parseByteEmbeddingsArray ,
49+ toLowerCase (VoyageAIEmbeddingType .BINARY ),
50+ VoyageAIEmbeddingsResponseEntity ::parseBitEmbeddingsArray
4751 );
4852
4953 private static final String VALID_EMBEDDING_TYPES_STRING = supportedEmbeddingTypes ();
@@ -119,7 +123,7 @@ public static InferenceServiceResults fromResponse(Request request, HttpResult r
119123
120124 return new InferenceTextEmbeddingFloatResults (embeddingList );
121125 } else if (embeddingType == VoyageAIEmbeddingType .INT8 ) {
122- List <InferenceTextEmbeddingByteResults . InferenceByteEmbedding > embeddingList = parseList (
126+ List <InferenceByteEmbedding > embeddingList = parseList (
123127 jsonParser ,
124128 VoyageAIEmbeddingsResponseEntity ::parseEmbeddingObjectByte
125129 );
@@ -144,7 +148,7 @@ private static InferenceTextEmbeddingFloatResults.InferenceFloatEmbedding parseE
144148 return InferenceTextEmbeddingFloatResults .InferenceFloatEmbedding .of (embeddingValuesList );
145149 }
146150
147- private static InferenceTextEmbeddingByteResults . InferenceByteEmbedding parseEmbeddingObjectByte (XContentParser parser )
151+ private static InferenceByteEmbedding parseEmbeddingObjectByte (XContentParser parser )
148152 throws IOException {
149153 ensureExpectedToken (XContentParser .Token .START_OBJECT , parser .currentToken (), parser );
150154
@@ -154,7 +158,13 @@ private static InferenceTextEmbeddingByteResults.InferenceByteEmbedding parseEmb
154158 // parse and discard the rest of the object
155159 consumeUntilObjectEnd (parser );
156160
157- return InferenceTextEmbeddingByteResults .InferenceByteEmbedding .of (embeddingValuesList );
161+ return InferenceByteEmbedding .of (embeddingValuesList );
162+ }
163+
164+ private static InferenceServiceResults parseBitEmbeddingsArray (XContentParser parser ) throws IOException {
165+ var embeddingList = parseList (parser , VoyageAIEmbeddingsResponseEntity ::parseByteArrayEntry );
166+
167+ return new InferenceTextEmbeddingBitResults (embeddingList );
158168 }
159169
160170 private static InferenceServiceResults parseByteEmbeddingsArray (XContentParser parser ) throws IOException {
@@ -163,11 +173,11 @@ private static InferenceServiceResults parseByteEmbeddingsArray(XContentParser p
163173 return new InferenceTextEmbeddingByteResults (embeddingList );
164174 }
165175
166- private static InferenceTextEmbeddingByteResults . InferenceByteEmbedding parseByteArrayEntry (XContentParser parser ) throws IOException {
176+ private static InferenceByteEmbedding parseByteArrayEntry (XContentParser parser ) throws IOException {
167177 ensureExpectedToken (XContentParser .Token .START_ARRAY , parser .currentToken (), parser );
168178 List <Byte > embeddingValuesList = parseList (parser , VoyageAIEmbeddingsResponseEntity ::parseEmbeddingInt8Entry );
169179
170- return InferenceTextEmbeddingByteResults . InferenceByteEmbedding .of (embeddingValuesList );
180+ return InferenceByteEmbedding .of (embeddingValuesList );
171181 }
172182
173183 private static Byte parseEmbeddingInt8Entry (XContentParser parser ) throws IOException {
0 commit comments