The HerokuEmbeddingModel instance to use for embedding generation
A function that can embed single strings or arrays of strings
Basic usage:
import { createEmbedFunction, HerokuEmbeddingModel } from "heroku-ai-provider";
const model = new HerokuEmbeddingModel(
"cohere-embed-multilingual",
process.env.EMBEDDING_KEY!,
"https://us.inference.heroku.com/v1/embeddings"
);
const embedText = createEmbedFunction(model);
// Single embedding
const singleResult = await embedText("Hello, world!");
console.log(singleResult.embedding); // [0.1, 0.2, -0.3, ...]
// Multiple embeddings
const multiResult = await embedText(["First text", "Second text"]);
console.log(multiResult.embeddings.length); // 2
With error handling:
const embedText = createEmbedFunction(model);
try {
const result = await embedText("Text to embed");
console.log("Embedding generated:", result.embedding.length, "dimensions");
console.log("Tokens used:", result.usage?.tokens);
} catch (error) {
console.error("Embedding failed:", error.message);
}
Batch processing:
const embedText = createEmbedFunction(model);
const documents = [
"First document content",
"Second document content",
"Third document content"
];
const result = await embedText(documents);
console.log(`Generated ${result.embeddings.length} embeddings`);
// Use embeddings for similarity search, clustering, etc.
const similarities = result.embeddings.map((emb, i) => ({
document: documents[i],
embedding: emb
}));
Creates a reusable embedding function from a HerokuEmbeddingModel instance.
This helper function provides a convenient way to create a reusable embedding function that can handle both single strings and arrays of strings, returning the appropriate format for each case.