Skip to content
reaatechREAATECH

@reaatech/hybrid-rag-embedding

npm v0.1.0

Generates vector embeddings through a unified interface for OpenAI, Vertex AI, and local models, featuring built-in batching, rate limiting, and cost tracking. It provides an `EmbeddingService` class that returns standardized objects containing the vector, token usage, and calculated cost.

@reaatech/hybrid-rag-embedding

npm version License: MIT CI

Status: Pre-1.0 — APIs may change in minor versions. Pin to a specific version in production.

Provider-agnostic embedding generation for hybrid RAG systems. Currently supports OpenAI embeddings with extension points for Vertex AI and local models.

Installation

terminal
npm install @reaatech/hybrid-rag-embedding
# or
pnpm add @reaatech/hybrid-rag-embedding

Feature Overview

  • Provider abstraction — single interface across OpenAI, Vertex AI, and local models
  • Batch processing — configurable batch size with automatic rate limiting
  • Cost tracking — per-request cost calculation based on model pricing
  • Dimension lookup — static method to get the embedding dimension for known models
  • OpenAI integration — full text-embedding-3-small and text-embedding-3-large support

Quick Start

typescript
import { EmbeddingService } from '@reaatech/hybrid-rag-embedding';
 
const embedder = new EmbeddingService({
  provider: 'openai',
  model: 'text-embedding-3-small',
  apiKey: process.env.OPENAI_API_KEY,
  batchSize: 100,
  rateLimit: 3500, // requests per minute
});
 
// Single text
const { embedding, tokens, cost } = await embedder.embed('Hello world');
console.log(`Vector dimension: ${embedding.length}, Cost: $${cost}`);
 
// Batch
const texts = ['Document one...', 'Document two...', 'Document three...'];
const results = await embedder.embedBatch(texts);
const totalCost = results.reduce((sum, r) => sum + r.cost, 0);

API Reference

EmbeddingService

Constructor

typescript
new EmbeddingService(config: EmbeddingConfig)

EmbeddingConfig

PropertyTypeDefaultDescription
provideropenai' | 'vertex' | 'local(required)Embedding provider
modelstring(required)Model name (e.g. text-embedding-3-small)
apiKeystringAPI key for cloud providers
dimensionnumberEmbedding dimension (auto-detected for known models)
batchSizenumber100Max texts per batch request
rateLimitnumberRequests per minute throttle

Methods

MethodReturnsDescription
embed(text)Promise<EmbeddingResult>Generate embedding for a single text
embedBatch(texts)Promise<EmbeddingResult[]>Generate embeddings for multiple texts with batching and rate limiting

Static Methods

MethodReturnsDescription
getDimension(model)numberGet the dimension for a known model (1536 for text-embedding-3-small, 3072 for text-embedding-3-large)

EmbeddingResult

PropertyTypeDescription
embeddingnumber[]The embedding vector
tokensnumberNumber of tokens consumed
costnumberCost in USD

Cost Calculation

Pricing is built-in for known models:

ModelCost per 1M tokens
text-embedding-3-small$0.02
text-embedding-3-large$0.13

Provider Extensibility

The Vertex AI and local providers are extension points. To add a new provider:

typescript
class CustomEmbedder extends EmbeddingService {
  private async embedCustom(text: string): Promise<EmbeddingResult> {
    // Your implementation here
    return { embedding: [/* ... */], tokens: 0, cost: 0 };
  }
}

License

MIT