Text embedding functionality for semantic search, similarity comparisons, and vector operations using Azure OpenAI embedding models. Embeddings convert text into high-dimensional vectors that capture semantic meaning.
Creates Azure OpenAI text embedding models for generating vector representations of text.
/**
* Creates an Azure OpenAI model for text embeddings
* @param deploymentId - Azure OpenAI embedding deployment name (e.g., "text-embedding-ada-002")
* @param settings - Optional embedding model settings
* @returns Embedding model instance for generating text vectors
*/
textEmbeddingModel(deploymentId: string, settings?: OpenAIEmbeddingSettings): EmbeddingModelV1<string>;Usage Example:
import { azure } from "@ai-sdk/azure";
import { embed, embedMany } from "ai";
const embeddingModel = azure.textEmbeddingModel("text-embedding-ada-002");
// Embed single text
const { embedding } = await embed({
model: embeddingModel,
value: "The quick brown fox jumps over the lazy dog",
});
console.log("Embedding dimensions:", embedding.length);
console.log("First few values:", embedding.slice(0, 5));
// Embed multiple texts
const { embeddings } = await embedMany({
model: embeddingModel,
values: [
"Machine learning is a subset of artificial intelligence",
"Deep learning uses neural networks with multiple layers",
"Natural language processing enables computers to understand text",
],
});
console.log("Generated", embeddings.length, "embeddings");These methods are deprecated and will be removed in future versions. Use textEmbeddingModel instead.
/**
* @deprecated Use textEmbeddingModel instead
*/
embedding(deploymentId: string, settings?: OpenAIEmbeddingSettings): EmbeddingModelV1<string>;
/**
* @deprecated Use textEmbeddingModel instead
*/
textEmbedding(deploymentId: string, settings?: OpenAIEmbeddingSettings): EmbeddingModelV1<string>;interface OpenAIEmbeddingSettings {
maxEmbeddingsPerCall?: number;
supportsParallelCalls?: boolean;
dimensions?: number;
user?: string;
}import { azure } from "@ai-sdk/azure";
import { embedMany } from "ai";
const embeddingModel = azure.textEmbeddingModel("text-embedding-ada-002");
// Create embeddings for a knowledge base
const documents = [
"Photosynthesis is the process by which plants convert sunlight into energy",
"The mitochondria is known as the powerhouse of the cell",
"DNA contains the genetic instructions for all living organisms",
"Climate change refers to long-term shifts in global temperatures",
];
const { embeddings: documentEmbeddings } = await embedMany({
model: embeddingModel,
values: documents,
});
// Search query
const query = "How do plants generate energy?";
const { embedding: queryEmbedding } = await embed({
model: embeddingModel,
value: query,
});
// Calculate similarity (cosine similarity)
function cosineSimilarity(a: number[], b: number[]): number {
const dotProduct = a.reduce((sum, val, i) => sum + val * b[i], 0);
const magnitudeA = Math.sqrt(a.reduce((sum, val) => sum + val * val, 0));
const magnitudeB = Math.sqrt(b.reduce((sum, val) => sum + val * val, 0));
return dotProduct / (magnitudeA * magnitudeB);
}
// Find most similar document
const similarities = documentEmbeddings.map((docEmb, index) => ({
index,
document: documents[index],
similarity: cosineSimilarity(queryEmbedding, docEmb),
}));
const bestMatch = similarities.sort((a, b) => b.similarity - a.similarity)[0];
console.log("Best match:", bestMatch.document);
console.log("Similarity score:", bestMatch.similarity);import { azure } from "@ai-sdk/azure";
import { embedMany } from "ai";
const embeddingModel = azure.textEmbeddingModel("text-embedding-ada-002");
// Create category embeddings
const categories = {
technology: "Software development, programming, computers, artificial intelligence",
health: "Medicine, healthcare, fitness, nutrition, medical research",
finance: "Banking, investing, economics, cryptocurrency, financial markets",
sports: "Athletes, games, competitions, fitness, teams, tournaments",
};
const { embeddings: categoryEmbeddings } = await embedMany({
model: embeddingModel,
values: Object.values(categories),
});
// Classify new text
async function classifyText(text: string) {
const { embedding: textEmbedding } = await embed({
model: embeddingModel,
value: text,
});
const scores = categoryEmbeddings.map((catEmb, index) => ({
category: Object.keys(categories)[index],
score: cosineSimilarity(textEmbedding, catEmb),
}));
return scores.sort((a, b) => b.score - a.score)[0];
}
// Example classification
const result = await classifyText("The new iPhone features improved camera capabilities and faster processing");
console.log("Category:", result.category); // "technology"
console.log("Confidence:", result.score);Text embedding models implement the EmbeddingModelV1<string> interface and are compatible with all AI SDK embedding functions:
embed() - Generate embedding for single textembedMany() - Generate embeddings for multiple textsThe embeddings are returned as arrays of numbers representing the high-dimensional vector space coordinates for the input text.