Providers
Overview

Providers Overview

Remina uses a pluggable provider architecture. Each component can be swapped independently.

Provider Categories

CategoryPurposeOptions
StoragePersistent L2 storageSQLite, PostgreSQL, MongoDB
Vector StoreSemantic searchChroma, Qdrant, Pinecone, pgvector
EmbeddingsText vectorizationOpenAI, Gemini, Cohere, Ollama, HuggingFace
LLMFact extractionOpenAI, Gemini, Anthropic, Ollama
CacheL1 hot cacheRedis (fixed)

Selection Guide

Local Development

config = {
    "storage": {"provider": "sqlite"},
    "vector_store": {"provider": "chroma"},
    "embedder": {"provider": "openai"},
    "llm": {"provider": "openai"},
}

Production (Managed)

config = {
    "storage": {"provider": "postgres"},
    "vector_store": {"provider": "pinecone"},
    "embedder": {"provider": "openai"},
    "llm": {"provider": "openai"},
}

Production (Self-Hosted)

config = {
    "storage": {"provider": "postgres"},
    "vector_store": {"provider": "qdrant"},
    "embedder": {"provider": "gemini"},
    "llm": {"provider": "gemini"},
}

Fully Local (No API Keys)

config = {
    "storage": {"provider": "sqlite"},
    "vector_store": {"provider": "chroma"},
    "embedder": {"provider": "huggingface"},
    "llm": {"provider": "ollama"},
}

Provider Comparison

Storage

ProviderUse CaseScalingSetup
SQLiteDevelopment, single-userSingle nodeZero config
PostgreSQLProduction, multi-userHorizontalModerate
MongoDBDocument workloadsHorizontalModerate

Vector Stores

ProviderUse CaseScalingCost
ChromaDevelopmentSingle nodeFree
QdrantSelf-hosted productionHorizontalFree (self-hosted)
PineconeManaged productionServerlessPay-per-use
pgvectorPostgreSQL usersWith PostgreSQLFree

Embeddings

ProviderQualitySpeedCost
OpenAIExcellentFast$0.02/1M tokens
GeminiExcellentFastFree tier
CohereExcellentFast$0.10/1M tokens
HuggingFaceGoodVariesFree (local)
OllamaGoodVariesFree (local)

LLMs

ProviderQualitySpeedCost
OpenAI GPT-4o-miniExcellentFast$0.15/1M tokens
Gemini FlashExcellentVery fastFree tier
Claude 3.5 SonnetExcellentFast$3/1M tokens
OllamaGoodVariesFree (local)

Custom Providers

Extend base classes to implement custom providers:

from remina.storage.base import StorageBase
from remina.models import Memory
 
class MyCustomStorage(StorageBase):
    async def save(self, memories: List[Memory]) -> None:
        pass
    
    async def get(self, ids: List[str]) -> List[Memory]:
        pass
    
    # Implement remaining methods

See individual provider pages for detailed documentation.