Efficiently creates embedding vectors by batching them in requests using the embeddings/create API
const lib = require('lib')({token: process.env.STDLIB_SECRET_TOKEN});
// Array of input
let inputs = context.params.inputs || [];
let embeddings = [];
// batch inputs so we don’t exceed token limits
// tokens aren’t exactly words, so we’ll limit tokenCount to 4096
// in case of weird characters, this should handle most input variatons
while (inputs.length) {
let tokenCount = 0;
let batchedInputs = [];
while (inputs.length && tokenCount < 4096) {
let input = inputs.shift();
batchedInputs.push(input);
tokenCount += input.split(' ').length;
}
let embeddingResult = await lib.openai.playground['@0.0.4'].embeddings.create({
model: `text-embedding-ada-002`,
input: batchedInputs
});
embeddings = embeddings.concat(
embeddingResult.data.map(entry => entry.embedding)
);
}
return embeddings;