import{ createEmbeddingService, getEmbedding }from'@claude-flow/embeddings';// Create a service instanceconst service =createEmbeddingService({
provider:'openai',
apiKey:'your-api-key',
model:'text-embedding-3-small',
cacheSize:1000,});// Quick one-off embeddingconst embedding =awaitgetEmbedding('Hello world',{
provider:'mock',
dimensions:384,});
OpenAI Provider
import{ OpenAIEmbeddingService }from'@claude-flow/embeddings';const service =newOpenAIEmbeddingService({
provider:'openai',
apiKey: process.env.OPENAI_API_KEY!,
model:'text-embedding-3-small',// or 'text-embedding-3-large'
dimensions:1536,// Adjustable for v3 models
baseURL:'https://api.openai.com/v1/embeddings',
timeout:30000,
maxRetries:3,
cacheSize:1000,});const result =await service.embed('Your text here');console.log('Tokens used:', result.usage?.totalTokens);
Transformers.js Provider (Local)
import{ TransformersEmbeddingService }from'@claude-flow/embeddings';const service =newTransformersEmbeddingService({
provider:'transformers',
model:'Xenova/all-MiniLM-L6-v2',// Any HuggingFace model
cacheSize:1000,});// First call downloads the modelconst result =await service.embed('Your text here');console.log(`Local embedding generated in ${result.latencyMs}ms`);
Mock Provider (Testing)
import{ MockEmbeddingService }from'@claude-flow/embeddings';const service =newMockEmbeddingService({
provider:'mock',
dimensions:384,
simulatedLatency:10,// Optional delay
cacheSize:100,});// Deterministic embeddings based on text hashconst result =await service.embed('Your text here');
Batch Processing
const result =await service.embedBatch(['Document 1: Introduction to machine learning','Document 2: Deep learning fundamentals','Document 3: Natural language processing','Document 4: Computer vision basics',]);console.log('Batch Results:',{
count: result.embeddings.length,
totalLatency:`${result.totalLatencyMs}ms`,
avgLatency:`${result.avgLatencyMs}ms`,
cacheHits: result.cacheStats?.hits,
cacheMisses: result.cacheStats?.misses,
tokensUsed: result.usage?.totalTokens,});
Similarity Functions
import{
cosineSimilarity,
euclideanDistance,
dotProduct,
computeSimilarity,}from'@claude-flow/embeddings';// Cosine similarity (most common for embeddings)const cosine =cosineSimilarity(embedding1, embedding2);// Returns: 0.0 to 1.0 (higher = more similar)// Euclidean distanceconst distance =euclideanDistance(embedding1, embedding2);// Returns: 0.0 to infinity (lower = more similar)// Dot productconst dot =dotProduct(embedding1, embedding2);// Returns: unbounded (higher = more similar for normalized vectors)// Generic similarity with metric selectionconst result =computeSimilarity(embedding1, embedding2,'cosine');// Returns: { score: 0.95, metric: 'cosine' }