Comparison · Vector DB vs Memory API
Weaviate vs Kronvex
Vector DB vs Memory API
Weaviate is a general-purpose vector database — it stores objects with vectors, you build the memory logic. Kronvex is a purpose-built memory API: confidence scoring, recency weighting, and inject-context are already done for you. Different tools, different jobs.
TL;DR
Side-by-side in 30 seconds
| Feature / Question | Weaviate | Kronvex |
|---|---|---|
| Purpose | General-purpose vector database | Purpose-built memory API for AI agents |
| Setup to first memory | Hours (schema design, collections, config, embed) | 5 min (POST /remember) |
| Confidence scoring | ✗ Raw vector distance only | ✓ similarity × 0.6 + recency × 0.2 + frequency × 0.2 |
| Recency weighting | ✗ Build it yourself | ✓ Sigmoid with 30-day inflection, built-in |
| inject-context endpoint | ✗ You format the prompt yourself | ✓ Returns ranked, formatted context block |
| Agent / session model | ✗ Manual multi-tenancy configuration | ✓ First-class agent concept, isolation by design |
| GDPR / EU hosting | ~ EU region on Weaviate Cloud; self-hosted = your compliance | ✓ Supabase Frankfurt, EU-native by default |
| Pricing model | Usage-based (Weaviate Cloud) or self-hosted infra costs | Flat from €29/mo (Builder) |
| Free tier | Sandbox clusters (limited, expire) | ✓ Demo key, 1 agent, 100 memories, EU, no expiry |
| Python & Node SDK | ✓ Official SDKs | ✓ Official SDKs (pip & npm) |
Data accurate as of March 2026. Sources: weaviate.io, kronvex.io/docs.
Honest comparison
Which one should you use?
You need raw vector infrastructure
- You're building a custom semantic search engine (products, documents, knowledge bases)
- You want multi-modal vectors (text + images + structured data)
- You need fine-grained schema control and metadata filtering
- You're building recommendation systems where you own all ranking logic
- Your team has the infra bandwidth to self-host and maintain a vector DB
- Memory is not your core use case — you're doing document RAG
You're building agent memory
- Your AI agent must remember past interactions across sessions
- You want recency and frequency to influence which memories surface
- You need inject-context to build the system prompt automatically
- You serve EU users and GDPR compliance is non-negotiable
- You want a flat monthly cost rather than usage-based billing
- You need multi-tenant isolation where each customer's agent is separate
Code comparison
Same task, two approaches
Goal: when an agent starts a conversation, inject the 5 most relevant memories into the system prompt. Here's how much code each approach requires.
import weaviate import openai from datetime import datetime # Step 1: Connect and define schema client = weaviate.connect_to_weaviate_cloud( cluster_url="...", auth_credentials=weaviate.Auth.api_key("...") ) # Must define collection schema first client.collections.create( "Memory", properties=[ weaviate.Property(name="content", ...), weaviate.Property(name="agent_id", ...), weaviate.Property(name="created_at", ...), weaviate.Property(name="access_count", ...) ] ) # Step 2: Embed the query manually oai = openai.OpenAI() def embed(text): r = oai.embeddings.create( model="text-embedding-3-small", input=text ) return r.data[0].embedding # Step 3: Query with filters query_vec = embed("What does the user like?") collection = client.collections.get("Memory") results = collection.query.near_vector( near_vector=query_vec, filters=weaviate.Filter.by_property("agent_id").equal("user-123"), limit=10 ) # Step 4: Manual recency + frequency scoring def confidence(obj, sim): age_days = (datetime.now() - obj.properties['created_at']).days recency = 1 / (1 + 0.023 * age_days) freq = min(obj.properties['access_count'], 10) / 10 return sim * 0.6 + recency * 0.2 + freq * 0.2 scored = sorted([ (obj, confidence(obj, obj.metadata.certainty)) for obj in results.objects ], key=lambda x: x[1], reverse=True)[:5] # Step 5: Format as prompt block manually context = "Memory context:\n" + "\n".join( f"- {o.properties['content']} (confidence: {s:.2f})" for o, s in scored ) # ~45 lines just to inject context
import requests HEADERS = {"X-API-Key": "kv-your-key"} BASE = "https://api.kronvex.io/api/v1" AGENT = "user-123" # Get ranked context, formatted for your prompt context = requests.get( f"{BASE}/agents/{AGENT}/inject-context", headers=HEADERS ).json()["context"] # Returns ready-to-use prompt block: # "Memory context: # - User prefers Python (confidence: 0.94) # - User dislikes boilerplate (confidence: 0.71) # ..." # Confidence scoring is automatic: # similarity×0.6 + recency×0.2 + frequency×0.2 # EU-hosted, GDPR-native, no infra to manage. # 7 lines. That's it.
What Kronvex adds on top of raw vectors
Memory ≠ Vector storage
Confidence scoring
Raw vector distance ignores time. A memory from 6 months ago ranks the same as one from yesterday. Kronvex weights by recency (sigmoid, 30-day inflection) and frequency (log-scaled access count) — so the most relevant AND recent memories win.
similarity · recency · frequencyinject-context
Vector DBs return object matches. You still need to rank them, format them, and inject them into your system prompt. Kronvex's inject-context does all of this in one API call — returning a prompt-ready block of the top N ranked memories, sorted by confidence score.
one API call → ready promptEU-native by design
Self-hosted Weaviate means you manage GDPR compliance yourself. Weaviate Cloud has EU regions but at an extra cost. Kronvex stores all data in Supabase Frankfurt by default. GDPR compliance — right to erasure, data export, TTL — is built into the API.
Frankfurt · GDPR · right to erasureQuestions
Frequently asked
text-embedding-3-small from OpenAI for 1536-dimension embeddings and cosine similarity for retrieval. There is no dependency on Weaviate or any other external vector service. All data stays in the EU.
inject-context is a Kronvex endpoint that does three things in a single API call: (1) retrieves the most semantically similar memories for a query, (2) ranks them using the confidence formula (similarity×0.6 + recency×0.2 + frequency×0.2), and (3) returns them formatted as a ready-to-inject system prompt block. With Weaviate alone, you get raw object matches — you still need to add the ranking logic, format the output, and handle edge cases. inject-context collapses all of that into one call.
DELETE /memories, per-agent memory TTL configuration, and full data export from the dashboard. While Weaviate Cloud offers EU region options, self-hosted Weaviate deployments require you to manage your own GDPR compliance — a significant overhead for most teams.
Start with a free demo key
EU-hosted. No credit card. Skip the boilerplate — your first memory in under 5 minutes.
Get your demo key →Demo key · 1 agent · 100 memories · No expiry