Providers Overview
Remina uses a pluggable provider architecture. Each component can be swapped independently.
Provider Categories
| Category | Purpose | Options |
|---|---|---|
| Storage | Persistent L2 storage | SQLite, PostgreSQL, MongoDB |
| Vector Store | Semantic search | Chroma, Qdrant, Pinecone, pgvector |
| Embeddings | Text vectorization | OpenAI, Gemini, Cohere, Ollama, HuggingFace |
| LLM | Fact extraction | OpenAI, Gemini, Anthropic, Ollama |
| Cache | L1 hot cache | Redis (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
| Provider | Use Case | Scaling | Setup |
|---|---|---|---|
| SQLite | Development, single-user | Single node | Zero config |
| PostgreSQL | Production, multi-user | Horizontal | Moderate |
| MongoDB | Document workloads | Horizontal | Moderate |
Vector Stores
| Provider | Use Case | Scaling | Cost |
|---|---|---|---|
| Chroma | Development | Single node | Free |
| Qdrant | Self-hosted production | Horizontal | Free (self-hosted) |
| Pinecone | Managed production | Serverless | Pay-per-use |
| pgvector | PostgreSQL users | With PostgreSQL | Free |
Embeddings
| Provider | Quality | Speed | Cost |
|---|---|---|---|
| OpenAI | Excellent | Fast | $0.02/1M tokens |
| Gemini | Excellent | Fast | Free tier |
| Cohere | Excellent | Fast | $0.10/1M tokens |
| HuggingFace | Good | Varies | Free (local) |
| Ollama | Good | Varies | Free (local) |
LLMs
| Provider | Quality | Speed | Cost |
|---|---|---|---|
| OpenAI GPT-4o-mini | Excellent | Fast | $0.15/1M tokens |
| Gemini Flash | Excellent | Very fast | Free tier |
| Claude 3.5 Sonnet | Excellent | Fast | $3/1M tokens |
| Ollama | Good | Varies | Free (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 methodsSee individual provider pages for detailed documentation.