Creative Genius Creative Genius
Lesson 3 of 5 · 22 min read

Picking the Right Embedding Model

OpenAI's text-embedding-3-large isn't always the right pick. Here's how to choose.

An embedding model converts text → a high-dimensional vector. Good embeddings mean similar meaning → similar vectors.

2025 picks by use case

Use caseRecommendedWhy
General English prosetext-embedding-3-smallCheap, fast, 1536 dims, good enough for 90% of cases
Multilingual contentcohere-embed-multilingual-v3Native support for 100+ languages
Code searchvoyage-code-3Trained on code, dramatically better than general models
Highest quality, cost no objecttext-embedding-3-large or voyage-3-large3072 dims, top-of-leaderboard

Code

import OpenAI from "openai";
const openai = new OpenAI();

async function embed(text: string): Promise<number[]> {
  const r = await openai.embeddings.create({
    model: "text-embedding-3-small",
    input: text,
  });
  return r.data[0].embedding; // 1536-dim vector
}

// Cosine similarity
function similarity(a: number[], b: number[]): number {
  let dot = 0, na = 0, nb = 0;
  for (let i = 0; i < a.length; i++) {
    dot += a[i] * b[i]; na += a[i] * a[i]; nb += b[i] * b[i];
  }
  return dot / (Math.sqrt(na) * Math.sqrt(nb));
}
← Chunking Strategies Vector Databases: When to Actually Use One →