Skip to content

Commit 67ea3ce

Browse files
committed
[Go] plugins/googlai: use batch embed RPC
Use the BatchEmbedContents RPC so a single call can handle multiple documents.
1 parent 6ab8141 commit 67ea3ce

File tree

1 file changed

+11
-7
lines changed

1 file changed

+11
-7
lines changed

go/plugins/googleai/googleai.go

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -163,19 +163,23 @@ func DefineEmbedder(name string) *ai.Embedder {
163163
// requires state.mu
164164
func defineEmbedder(name string) *ai.Embedder {
165165
return ai.DefineEmbedder(provider, name, func(ctx context.Context, input *ai.EmbedRequest) (*ai.EmbedResponse, error) {
166-
// TODO: use the batch embedding API.
167166
em := state.client.EmbeddingModel(name)
168-
var res ai.EmbedResponse
167+
// TODO: set em.TaskType from EmbedRequest.Options?
168+
batch := em.NewBatch()
169169
for _, doc := range input.Documents {
170170
parts, err := convertParts(doc.Content)
171171
if err != nil {
172172
return nil, err
173173
}
174-
eres, err := em.EmbedContent(ctx, parts...)
175-
if err != nil {
176-
return nil, err
177-
}
178-
res.Embeddings = append(res.Embeddings, &ai.DocumentEmbedding{Embedding: eres.Embedding.Values})
174+
batch.AddContent(parts...)
175+
}
176+
bres, err := em.BatchEmbedContents(ctx, batch)
177+
if err != nil {
178+
return nil, err
179+
}
180+
var res ai.EmbedResponse
181+
for _, emb := range bres.Embeddings {
182+
res.Embeddings = append(res.Embeddings, &ai.DocumentEmbedding{Embedding: emb.Values})
179183
}
180184
return &res, nil
181185
})

0 commit comments

Comments
 (0)