RushDB vs Pinecone: relationships vs flat vectors.
Pinecone stores records as an ID, a vector, and flat JSON metadata — there is no native relationship or traversal primitive; linking records is done in application code. RushDB stores records with typed properties and graph relationships, so the connections between memories are queryable, not something your application reconstructs after retrieval.
2 → 1
Systems in the retrieval path
Pinecone stores vectors and flat metadata; business records need a second database. RushDB keeps both in one write path.
0
Sync jobs between stores
No pipeline keeping a vector store consistent with the database of record — indexed properties embed on write.
5
Perspectives from one query
The same SearchQuery returns records, labels, properties, relationships, or property values — not only nearest neighbors.
Side by side
The same task in both: store searchable order notes with business context.
Both snippets make order text semantically searchable. The difference is where the customer, order, and plan context lives — inside the same query, or in a second system your application reconciles.
from pinecone import Pinecone
pc = Pinecone(api_key='YOUR_API_KEY')
# Index config is fixed at creation: model, cloud, region
pc.create_index_for_model(
name='orders',
cloud='aws', region='us-east-1',
embed={'model': 'llama-text-embed-v2',
'field_map': {'text': 'chunk_text'}},
)
index = pc.Index('orders')
index.upsert_records('ns1', [
{'_id': 'ord-1', 'chunk_text': 'Annual plan upgrade',
'category': 'billing'},
])
# The customer, order, and plan records live in another
# database — your app joins them after retrieval.Excellent at what it stores — but relationships and business records live in a second system your application reconciles.
from rushdb import RushDB
db = RushDB('RUSHDB_API_KEY')
db.ai.indexes.create({'label': 'ORDER', 'propertyName': 'summary'})
# Records, relationships, and searchable text in one write
db.records.import_json(
label='CUSTOMER',
data={
'name': 'Acme',
'tier': 'enterprise',
'ORDER': [{'summary': 'Annual plan upgrade',
'category': 'billing'}],
},
)
results = db.ai.search({
'labels': ['ORDER'],
'propertyName': 'summary',
'query': 'plan changes',
'where': {'CUSTOMER': {'tier': 'enterprise'}},
})The business context is part of the same query — the relationship filter runs beside the semantic match, no second system.
Switching
Moving from Pinecone: collapse the vector store + database pair.
Teams rarely leave Pinecone because similarity search fails — they leave because the architecture around it grows: a vector store, a database of record, and application code joining the two after every retrieval. The migration is mostly consolidation: metadata becomes typed, filterable properties, and the joins your app maintained become relationships.
01
Bring vectors or re-embed
External embedding indexes accept the vectors you already computed; managed indexes re-embed chosen text on write if you would rather retire the embedding pipeline entirely.
02
Turn metadata into typed properties
Flat filter metadata becomes real typed fields — exactly filterable, visible in the live schema, no field-map contract fixed at index creation.
03
Restore joins as relationships
The records your app joined after retrieval become connected records: nested imports link parent-child automatically, and suggested patterns propose cross-source links for review.
Who this is for
Pick the right tool for the job.
Choose RushDB if
- You need relationships between memories to be queryable, not reconstructed by application-side joins after retrieval.
- You want records, semantic search, and relationships in one write path instead of a flat vector store plus a separate metadata database.
- You want a genuine self-hosting option, not only managed cloud with a gated BYOC preview.
Choose Pinecone if
- Your workload is pure similarity ranking at large scale — Pinecone publishes concrete numbers: sub-100ms write acknowledgment and query latency that "stays low from millions to billions of vectors."
- You want hosted embedding and reranking models (Pinecone Inference) directly in the same API as your vector upserts and queries.
- You want a fully managed serverless vector store with no infrastructure to operate at all, including no self-hosted option to maintain.
If your workload is purely similarity ranking over a large, flat vector set — recommendations, document search, dedup — Pinecone’s serverless infrastructure and published scale numbers are a strong, proven choice. If your agent memory needs connections between records (a decision linked to an account, a document linked to its citations), RushDB avoids rebuilding those joins in application code.
Comparison table
Data model, deployment, and pricing
Pinecone rows below are sourced from Pinecone’s own docs and pricing page, checked on the date shown. Two rows are absence findings (nothing found in Pinecone’s docs) rather than an explicit denial from Pinecone — flagged as such.
Records with typed properties and graph relationships (LMPG); connections are queryable through SearchQuery traversal.
Records are an ID, one or more vectors, and flat JSON metadata. No native relationship/graph-traversal primitive between records — linking is done manually in application code.
Source· checked 2026-07-01Managed cloud, BYOC on your own Neo4j/Aura instance, or full self-hosting with Docker Compose.
Managed cloud only (serverless indexes by default; legacy pod-based indexes closed to new customers as of Aug 2025). An Enterprise-only "Bring Your Own Cloud" option runs the data plane in your own AWS/GCP/Azure account, but there is no true on-prem/bare-metal self-hosting.
Source· checked 2026-07-01Exact where-filters and semantic search combined in one SearchQuery, alongside relationship traversal.
Exact metadata filtering ($eq, $gt, $in, $and) alongside vector queries; native hybrid search combining sparse (BM25-style) and dense vectors in one index.
Source· checked 2026-07-01Create an index policy on a label + string property; RushDB generates vectors server-side or accepts vectors you supply.
"Pinecone Inference" offers hosted embedding and reranking models via an /embed API or integrated upsert/query on raw text; bringing your own precomputed vectors is also supported.
Source· checked 2026-07-01Positioned specifically as a graph memory layer for AI agents, with a native MCP server and Schema API.
No dedicated "AI agent memory" product found on Pinecone’s official pages; its tagline covers "agents, search, and recommendation systems," with a "For Agents" section on MCP servers/tooling rather than a distinct memory product. This is an absence finding, not a stated denial by Pinecone.
Source· checked 2026-07-01Free plan includes 100K Knowledge Units per month, no credit card required.
Free "Starter" tier: 5 indexes, 2GB storage, 2M write units/month, 1M read units/month, us-east-1 only, indexes pause after 3 weeks idle. Cheapest paid tier ("Builder") is $20/month flat.
Source· checked 2026-07-01Pinecone facts sourced from pinecone.io and docs.pinecone.io as of the dates shown above; the Pinecone snippet follows its documented quickstart shape. Two rows above are absence findings (nothing found in Pinecone’s docs), flagged as such rather than treated as a denial. RushDB facts are drawn from RushDB’s own docs and feature pages linked throughout this site. Report a stale claim to hi@rushdb.com.
Implementation example
Store connected memory and recall it by meaning
The relationship between records comes from the write path — no separate join step after retrieval.
from rushdb import RushDB
db = RushDB("RUSHDB_API_KEY")
db.ai.indexes.create({
"label": "MEMORY",
"propertyName": "output",
})
db.records.create(
label="MEMORY",
data={
"agent_id": "agent-42",
"kind": "decision",
"output": "Keep the free plan, but increase Pro onboarding limits after launch feedback.",
"status": "approved",
},
)
recall = db.ai.search({
"labels": ["MEMORY"],
"propertyName": "output",
"query": "What did we decide about Pro onboarding?",
"where": {"agent_id": "agent-42", "status": "approved"},
"limit": 5,
})
print(recall.data)Questions developers ask.
Related
Go deeper on the workflow.
Use case
AI Agent Memory Database
Store agent state, decisions, and tool output across sessions. Recall context by meaning and agent ID without a separate vector store or sync pipeline.
Open use caseUse case
Graph-Aware RAG Database
Combine semantic retrieval with explicit relationships and filters. Build a RAG knowledge base that can retrieve connected context.
Open use caseGuide
Vector Database vs Memory Layer
Compare vector databases and memory layers for AI agents. Learn when semantic search is enough and when records, relationships, and schema are needed.
Read guideGuide
AI Agent Memory
Learn how persistent AI agent memory stores decisions, tool output, entities, and relationships outside a single model session.
Read guideNext step