Embeddings
Examples for generating embeddings with the Gateway.Basic Embeddings
Copy
Ask AI
import { Gateway } from "@adaline/gateway";
import { OpenAI } from "@adaline/openai";
import { Config } from "@adaline/types";
const gateway = new Gateway();
const openai = new OpenAI();
const embeddingModel = openai.embeddingModel({
modelName: "text-embedding-3-large",
apiKey: process.env.OPENAI_API_KEY,
});
const response = await gateway.getEmbeddings({
model: embeddingModel,
config: Config().parse({ encodingFormat: "float", dimensions: 256 }),
embeddingRequests: {
modality: "text",
requests: ["Hello world"],
},
});
console.log("Embedding dimensions:", response.embeddings[0].length);
console.log("Tokens used:", response.usage.totalTokens);
Batch Embeddings
Embed multiple texts in a single request:Copy
Ask AI
const documents = [
"Machine learning is a subset of AI",
"Natural language processing deals with text",
"Computer vision processes images and video",
"Reinforcement learning uses reward signals",
];
const response = await gateway.getEmbeddings({
model: embeddingModel,
config: Config().parse({ encodingFormat: "float", dimensions: 256 }),
embeddingRequests: {
modality: "text",
requests: documents,
},
});
// response.embeddings is an array of vectors, one per document
console.log(`Generated ${response.embeddings.length} embeddings`);
Cosine Similarity
Use embeddings for semantic similarity:Copy
Ask AI
function cosineSimilarity(a: number[], b: number[]): number {
const dot = a.reduce((sum, ai, i) => sum + ai * b[i], 0);
const magA = Math.sqrt(a.reduce((sum, ai) => sum + ai * ai, 0));
const magB = Math.sqrt(b.reduce((sum, bi) => sum + bi * bi, 0));
return dot / (magA * magB);
}
const texts = ["I love dogs", "I love cats", "The weather is nice"];
const response = await gateway.getEmbeddings({
model: embeddingModel,
config: Config().parse({ encodingFormat: "float", dimensions: 256 }),
embeddingRequests: { modality: "text", requests: texts },
});
const similarity01 = cosineSimilarity(response.embeddings[0], response.embeddings[1]);
const similarity02 = cosineSimilarity(response.embeddings[0], response.embeddings[2]);
console.log(`"dogs" vs "cats": ${similarity01.toFixed(3)}`); // High similarity
console.log(`"dogs" vs "weather": ${similarity02.toFixed(3)}`); // Lower similarity