typescriptbeginner

Generate Text Embeddings with OpenAI

Create vector embeddings for semantic search and similarity matching using text-embedding-3-small.

typescript
import OpenAI from "openai";

const client = new OpenAI({ apiKey: process.env.OPENAI_API_KEY });

export async function getEmbedding(text: string): Promise<number[]> {
  const res = await client.embeddings.create({
    model: "text-embedding-3-small",
    input: text.replace(/\n/g, " "),
  });
  return res.data[0].embedding;
}

// Cosine similarity between two vectors
export function cosineSimilarity(a: number[], b: number[]): number {
  const dot = a.reduce((sum, v, i) => sum + v * b[i], 0);
  const magA = Math.sqrt(a.reduce((sum, v) => sum + v * v, 0));
  const magB = Math.sqrt(b.reduce((sum, v) => sum + v * v, 0));
  return dot / (magA * magB);
}

Use Cases

  • semantic search
  • document similarity
  • RAG retrieval

Tags

Related Snippets

Similar patterns you can reuse in the same workflow.