Overview
Graphiti’s embedder architecture provides a unified interface for generating vector embeddings from text. All embedders extend the baseEmbedderClient 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 fromEmbedderClient (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
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
list[list[float]] - List of embedding vectors
Configuration
All embedders useEmbedderConfig 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 theGraphiti client:
Custom Embedder Implementation
Create custom embedders by extendingEmbedderClient:
Performance Tips
- Use batch processing: Always prefer
create_batch()for multiple inputs - Set appropriate dimensions: Lower dimensions = faster similarity search
- Consider costs: Different providers have different pricing
- Cache embeddings: Store embeddings in your graph database
- Monitor API limits: Implement rate limiting for large batches
Error Handling
All embedders may raise exceptions:- 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.