Skip to main content

Overview

Graphiti’s embedder architecture provides a unified interface for generating vector embeddings from text. All embedders extend the base EmbedderClient class and support both single and batch embedding generation.

Key Features

  • Unified Interface: Single API across OpenAI, Voyage, Gemini, and other providers
  • Batch Processing: Efficient batch embedding generation
  • Configurable Dimensions: Control embedding dimensionality
  • Provider Flexibility: Easy switching between embedding providers
  • Type Safety: Full type hints and Pydantic configuration

Base Client Architecture

All embedders inherit from EmbedderClient (defined in graphiti_core/embedder/client.py) which provides:

Core Methods

create() Generate a single embedding vector.
str | list[str] | Iterable[int] | Iterable[Iterable[int]]
required
Input text or token sequence to embed
Returns: list[float] - Embedding vector of length embedding_dim create_batch() Generate embeddings for multiple inputs efficiently.
list[str]
required
List of text strings to embed
Returns: list[list[float]] - List of embedding vectors

Configuration

All embedders use EmbedderConfig or provider-specific config classes:
int
default:"1024"
Output embedding dimensionality. Can be set via EMBEDDING_DIM environment variable.

Available Embedders

OpenAI

text-embedding-3-small/large models

Voyage AI

voyage-3 and other Voyage models

Gemini

Google’s text-embedding models

Azure OpenAI

OpenAI embeddings via Azure

Basic Usage Pattern

All embedders follow this pattern:

Embedding Dimensions

Control output dimensionality across all providers:

Environment Variable (Global Default)

Configuration (Per-Instance)

Dimension Truncation

Embedders truncate to the configured dimension:

Batch Processing

All embedders support efficient batch processing:

Batch Size Limits

Some providers have batch size limits:
  • OpenAI: No strict limit, but recommend < 2048 inputs
  • Voyage AI: Provider-specific limits
  • Gemini: Configurable batch size (default 100, some models limited to 1)

Provider Comparison

Use with Graphiti

Embedders are typically passed to the Graphiti client:

Custom Embedder Implementation

Create custom embedders by extending EmbedderClient:

Performance Tips

  1. Use batch processing: Always prefer create_batch() for multiple inputs
  2. Set appropriate dimensions: Lower dimensions = faster similarity search
  3. Consider costs: Different providers have different pricing
  4. Cache embeddings: Store embeddings in your graph database
  5. Monitor API limits: Implement rate limiting for large batches

Error Handling

All embedders may raise exceptions:
Common errors:
  • Authentication errors: Invalid API key
  • Rate limit errors: Too many requests
  • Input validation errors: Empty or invalid input
  • Network errors: Connection issues

Type Support

Embedders accept multiple input types:
Not all providers support all input types. Consult provider-specific documentation.