Compare

RushDB vs Weaviate: graph relationships vs single-hop references.

Weaviate is a mature, open-source AI database built around class-based collections, single-hop cross-references, and hybrid (vector + keyword) search. RushDB is a graph-first memory layer: relationships are multi-hop by default, and the same JSON write path that creates a record also creates its connections.

0

Collection definitions required

Weaviate’s own docs advise disabling auto-schema in production; RushDB infers types on every write, in production.

Multi-hop

Relationship traversal

Cross-references in Weaviate are single-hop and uni-directional; SearchQuery traverses nested relationships natively.

1

Write path for data + links

Nested JSON creates records and their relationships together — no separate reference properties to define.

Side by side

The same task in both: define structure and write connected data.

Both snippets get connected, searchable order data into the database. The difference is how much structure you must declare before the first write.

Weaviate (Python client)
import weaviate
from weaviate.classes.config import Property, DataType

client = weaviate.connect_to_local()

# Production guidance from Weaviate's own docs:
# disable auto-schema and define collections manually
client.collections.create(
    'Order',
    properties=[
        Property(name='summary', data_type=DataType.TEXT),
        Property(name='status', data_type=DataType.TEXT),
    ],
)

# Plus: configure a vectorizer per collection, and model
# links as single-hop cross-reference properties —
# a bi-directional link needs two reference properties.

Schema declared per collection up front; links are single-hop cross-references Weaviate’s docs advise denormalizing at scale.

RushDB (Python SDK)
from rushdb import RushDB

db = RushDB('RUSHDB_API_KEY')

db.ai.indexes.create({'label': 'ORDER', 'propertyName': 'summary'})

# No collection definition — types are inferred on write,
# and nesting creates traversable relationships
db.records.import_json(
    label='CUSTOMER',
    data={
        'name': 'Acme',
        'ORDER': [
            {'summary': 'Annual plan upgrade', 'status': 'paid'},
            {'summary': 'Added 40 seats', 'status': 'pending'},
        ],
    },
)

Zero declarations before the first write — properties are typed on arrival and relationships come from the payload shape.

Switching

Moving from Weaviate: keep the hybrid-search habits, gain a real graph.

Teams usually hit the wall when retrieval needs connected context — the thing cross-references only approximate one hop at a time. Migration is straightforward because Weaviate objects are JSON: exports import directly as records, and the links you modeled as reference properties become traversable relationships.

01

Export collections as JSON

Weaviate objects map one-to-one to RushDB records — properties come across as typed fields without redefining a schema.

02

Bring vectors or re-embed

External embedding indexes accept the vectors you already have; managed indexes re-embed chosen text properties on write.

03

Upgrade cross-references to relationships

Nest related objects on import, attach explicit relationships, or let suggested patterns propose links across flat exports.

Who this is for

Pick the right tool for the job.

Choose RushDB if

  • You need multi-hop relationship traversal as a core query primitive, not something you denormalize around.
  • You want relationships created automatically from nested JSON structure, not modeled as explicit cross-reference properties.
  • You want one API surface across managed cloud, BYOC, and self-hosted.

Choose Weaviate if

  • Your retrieval pattern is mostly hybrid (vector + BM25 keyword) search within a collection, which Weaviate documents as a first-class native feature.
  • You want the largest available library of official model-provider and framework integrations (63 listed) and a mature open-source project (BSD-3-Clause).
  • You want Weaviate’s own agent products — Query Agent (natural-language-to-database-ops) and Engram (a dedicated memory server) — rather than building on a general-purpose graph API.

If your retrieval needs are mostly single-collection hybrid search, and you want the ecosystem depth of a long-established open-source vector database with 63 official integrations, Weaviate is a strong choice. If your product needs multi-hop relationships as a first-class query primitive (not a denormalization workaround) alongside semantic search, RushDB’s graph-first model fits better.

Comparison table

Data model, search, and agent tooling

Weaviate rows below are sourced from Weaviate’s own docs and pricing page, checked on the date shown. Note that "no multi-hop graph traversal" is an inference from the absence of such documentation, not an explicit statement by Weaviate.

Topic
RushDB
Weaviate
Data model

Records with typed properties and multi-hop graph relationships (LMPG), traversed natively in SearchQuery.

Objects within class-based collections, linked by single-hop, uni-directional cross-references (bi-directional requires two separate reference properties). Docs warn cross-reference queries can be slower at scale and recommend denormalizing instead.

Source· checked 2026-07-01
Search

Semantic search combined with exact where-filters and relationship traversal in one SearchQuery.

Native hybrid search (vector + BM25 keyword) via fusion algorithms (relativeScoreFusion, rankedFusion), plus structured property filters.

Source· checked 2026-07-01
Embeddings

Managed embedding indexes (server-side generation) or bring-your-own vectors.

Built-in vectorizer integrations (OpenAI, Cohere, Hugging Face, Anthropic, AWS, Google, Mistral, Ollama, and more) auto-generate embeddings on import/query; bringing your own precomputed vectors is optional.

Source· checked 2026-07-01
Schema model

Infers property types and structure from JSON as it arrives, with optional Model classes for validation.

Auto-schema can infer collections/properties from written data, but Weaviate’s own docs recommend disabling this in production and manually defining properties, citing performance and type-inference risk.

Source· checked 2026-07-01
Agent tooling

Native MCP server for discovery-first tool access, plus a Schema API giving agents a live structure snapshot.

Official Query Agent (natural-language-to-database-operations) and Engram, described as "a memory server for LLM agents and applications" providing persistent memory across conversations, users, and topics.

Source· checked 2026-07-01
Free tier

Free plan includes 100K Knowledge Units per month, no credit card required.

Weaviate Cloud free tier: 100k objects, 1GB memory, 10GB disk, 1 collection, 2,000 embedding requests/day, 1,000 Query Agent requests/month, no card required (self-hosting the open-source project is separately free).

Source· checked 2026-07-01

Weaviate facts sourced from weaviate.io, docs.weaviate.io, and Weaviate’s GitHub license file as of the dates shown above; the client snippet follows Weaviate’s documented collections.create shape. The "no multi-hop traversal" claim is an inference from documentation absence, flagged as such. 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 records and recall them by meaning

Relationships come from the write path itself — no separate cross-reference property to model.

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.

Next step

See it against your own data.

Start free