Skip to main content
Generate vector embeddings for semantic search, similarity matching, and RAG applications.

Quick Start

1

Generate Single Embedding

import { embed } from 'praisonai';

const result = embed("Hello, world!");

console.log(result.embedding);    // number[]
console.log(result.dimensions);   // 1536
console.log(result.model);        // 'text-embedding-3-small'
2

Generate Batch Embeddings

import { embeddings } from 'praisonai';

const result = embeddings([
  "First document",
  "Second document",
  "Third document"
]);

console.log(result.embeddings.length);  // 3

Embedding Functions

Sync Functions

import { embed, embedding, embeddings } from 'praisonai';

// Single text
const single = embed("Hello world");

// Alias for embed
const single2 = embedding("Hello world");

// Multiple texts
const batch = embeddings(["Text 1", "Text 2", "Text 3"]);

Async Functions

import { aembed, aembedding, aembeddings } from 'praisonai';

// Single text (async)
const single = await aembed("Hello world");

// Alias for aembed
const single2 = await aembedding("Hello world");

// Multiple texts (async)
const batch = await aembeddings(["Text 1", "Text 2", "Text 3"]);

Configuration

import { setEmbeddingConfig, getDimensions } from 'praisonai';

// Set global config
setEmbeddingConfig({
  model: 'text-embedding-3-large',
  dimensions: 3072,
  apiKey: process.env.OPENAI_API_KEY
});

// Get dimensions for a model
const dims = getDimensions('text-embedding-3-small');  // 1536

Configuration Options

OptionTypeDefaultDescription
modelstring'text-embedding-3-small'Embedding model
dimensionsnumber1536Vector dimensions
apiKeystringundefinedAPI key (uses env var if not set)
baseUrlstringundefinedCustom API base URL

Supported Models

ModelDimensionsProvider
text-embedding-3-small1536OpenAI
text-embedding-3-large3072OpenAI
text-embedding-ada-0021536OpenAI
embed-english-v3.01024Cohere
embed-multilingual-v3.01024Cohere

Similarity Functions

import { cosineSimilarity, euclideanDistance, normalize } from 'praisonai';

const vec1 = [0.1, 0.2, 0.3];
const vec2 = [0.2, 0.3, 0.4];

// Cosine similarity (0-1, higher = more similar)
const similarity = cosineSimilarity(vec1, vec2);
console.log(similarity);  // ~0.99

// Euclidean distance (lower = more similar)
const distance = euclideanDistance(vec1, vec2);
console.log(distance);  // ~0.17

// Normalize vector to unit length
const normalized = normalize(vec1);

Result Types

EmbeddingResult

interface EmbeddingResult {
  embedding: number[];      // Vector array
  model: string;            // Model used
  dimensions: number;       // Vector dimensions
  usage?: {
    promptTokens: number;
    totalTokens: number;
  };
}

BatchEmbeddingResult

interface BatchEmbeddingResult {
  embeddings: number[][];   // Array of vectors
  model: string;            // Model used
  dimensions: number;       // Vector dimensions
  usage?: {
    promptTokens: number;
    totalTokens: number;
  };
}

Common Patterns


Best Practices

Call embeddings() once with an array instead of calling embed() multiple times.
Store embeddings in a database to avoid regenerating them for unchanged content.
Use text-embedding-3-small for speed, text-embedding-3-large for accuracy.