Early accessDemo coming soon

Every graph can be represented as a matrix.

The taxonomy-first graph database. Your records become a knowledge graph, with ranked, explained matches in milliseconds.

  • Taxonomy first
  • ETL built in
  • No LLM calls
  • No data copy
  • Every match explained
  • Built for agents
  • 244×faster than Neo4j Community
  • 1.9×faster than Elasticsearch
  • 17 sto write 1M records
  • 1.0 GBmemory for 1M records

Typical search, the same 1M records and limits for every engine. How we tested

AI models and the capabilities that describe them form a graph.

Speed

Same searches. Same answers. Milliseconds, not seconds.

2.9 ms for a typical search at 1M records

The median: half of all searches finish faster.

  1. Matrie2.87 ms
  2. Elasticsearch5.36 ms1.9×
  3. Neo4j Community701 ms244×
  4. FalkorDB2,493 ms868×

All four engines ran the same searches on the same 1M records and returned their top 10. Bars are to scale. See every result.

Why Matrie

Your knowledge graph, at matrix speed

The usual way
  1. Your database
  2. ETL scriptsYou build them
  3. LLM extractionA bill per record
  4. Graph or vector DBA second copy to sync
  5. Your app
With Matrie
  1. Your database
  2. MatrieExtracts, indexes and ranks. No LLM, no copy
  3. Your app

Taxonomy first

Your own categories and terms define the graph.

Hierarchical buckets

Nest terms as deep as you like, with weights and must-haves per group.

ETL built in

Connect, extract, clean and stay in sync. No pipeline to build.

Auto Enhancer

Finds the phrases your taxonomy is missing, and rates each one.

No LLM calls

No model bill per search, and the same input always ranks the same.

No data copy

Records stay in your database. The index is 164 MB for 1M records.

Every match explained

What matched, what's missing, the score and the distance.

Built for agents

12 tools for AI agents over MCP, plus a JSON API for apps.

  • Also included
  • Must-have rules
  • Location radius
  • Matching in both directions
  • Background syncs
  • Web console with user roles
How it works

From your records to a ranked answer

  1. Your records

  2. Your taxonomy

    Free text becomes the terms you defined

  3. The matrix

    Each term a record has becomes one lit cell

  4. Ranked matches

    Filtered, weighted, ordered and explained

1M records, from source database to searchable, in about 8.5 minutes. Projected from a measured run of the full pipeline: 358,452 records in 183 seconds.

Agents

A matching tool your agents can trust

  • Answers the same way every time
  • Gives reasons your agent can quote
  • Returns short lists, so prompts stay small

userFind an open-weight coding model we can host in the EU.

toolsearch("code generation, open weights, EU hosting")

3 ranked matches~1.1 ms
  1. M-1042code generation, open weights, EU3 of 3
  2. M-0771code generation, open weights, EU3 of 3
  3. M-2310open weights, EU2 of 3

agentM-1042 is the best fit. It matches all three terms and ranks first.

Illustrative session. Model ids and results are made up. The time shown is a short search at 1M records.
Use cases

Built for the large datasets you already have

Large record sets, and clear rules for what counts as a match.

Who it's for

AI and agent teams

Facts your agents can quote, with no model bill per lookup.

Data platform teams

A knowledge graph over the database you already run.

Marketplaces

Match each request to providers with the right skills, licence and distance.

Regulated data owners

A reason for every result, and source text that stays with you.

Search and ML teams

A fast rule-based first pass before your re-ranker or LLM.

Search

    Start from

    Made-up data, real logic.

    Also a good fit Each starts from a taxonomy that already exists

    • Insurance claimsDiagnosis and procedure codesICD-10, CPT
    • Product catalogsStandard product categoriesGS1 GPC
    • Patents and researchPatent classes and medical subjectsCPC, MeSH
    • Threat intelligenceAttacker tactics and techniquesMITRE ATT&CK
    • Provider directoriesHealthcare provider specialtiesNUCC
    • Legal and complianceYour approved contract clausesYour clause library

    Choose something else for

    • Multi-hop analysis, such as fraud rings
    • Similarity search with no taxonomy
    Benchmarks

    1M records, four engines, every answer checked

    • Same data1,000,000 records, 12.47M links
    • Same searches957, in the same order
    • Same processor4 cores, 8 threads
    • Same memory limit4.5 GB each
    • One worker eachOne search at a time
    • Same answerTop 10: 3,146 checked, none wrong
    Median milliseconds per search at 1M records, by engine and search type, plus searches a second one at a time. Brighter is better.
    EngineMedian time per searchBrighter is betterBest in its column lower or higher is betterShortms, lower is betterAbout 4 keywordsTypicalms, lower is betterA real record's 6 keywordsWith radiusms, lower is betterTypical, within 50 kmWith required termms, lower is betterTypical, plus a must-haveBroadms, lower is better6 common keywordsSearches/sper s, higher is betterA mix of all five
    Matrie1.122.871.271.2532.293.4
    Elasticsearch4.955.365.638.1539.756.8
    Neo4j Community44.670184923.71,1831.62
    FalkorDB56.02,4932,94218.63,2870.42
    Coming soon1B-scale benchmarks

    Hover a cell for the slower searches.

    Where Matrie wins
    • Fastest median on all five search types, by 10% or more
    • Most searches a second: 93.4
    • Fastest to write 1M records into a running database: 17 s
    • Quickest to take a new record and return its 10 most similar: 23.9 ms
    • Least memory: 1.0 GB at peak
    Where it's close
    • Nearest rival on a typical search: Elasticsearch, 1.9× slower
    Where Matrie loses
    • No vector search. Similar records are found through the taxonomy terms they share, and Auto Enhancer suggests the terms your taxonomy is missing
    • Elasticsearch's index is smaller on disk: 119 MB to Matrie's 164 MB

    Writing 1M records time, lower is better

    Into a running database, 1,000 per request.

    1. Matrie17 s59.9k records a second
    2. Elasticsearch33 s30.4k records a second
    3. FalkorDB109 s9.2k records a second
    4. Neo4j Community2.6 min6.3k records a second

    New record, then its 10 most similar ms, lower is better

    What an app waits for with each new record.

    1. Matrie23.9 mswrite 0.76 ms, similar 23.2 ms
    2. Elasticsearch45.8 mswrite 3.38 ms, similar 42.3 ms
    3. Neo4j Community3,014 mswrite 4.13 ms, similar 3,007 ms
    4. FalkorDB5,841 mswrite 0.59 ms, similar 5,840 ms

    Memory while searching GB, lower is better

    Peak, with the typical level marked, under the same 4.5 GB limit.

    1. Matrie1.0 GBtypical 0.9 GB
    2. FalkorDB2.8 GBtypical 2.0 GB
    3. Elasticsearch3.1 GBtypical 3.0 GB
    4. Neo4j Community3.4 GBtypical 3.3 GB

    Saving writes: Neo4j and Elasticsearch save each one to disk before confirming it. Matrie saves on demand, and its time includes the final save. FalkorDB kept writes in memory only, with saving off as in the search tests. Neo4j's offline importer loaded the same 1M records in 19 s, but it only works on an empty, stopped database.

    Evidence: every number, and how we got it
    1. 957 searches built from real records, in 5 types
    2. 4 engines, one at a time, in the same order
    3. Top 10 scores compared with the known answer
    4. 3,146 answers checked, none wrong

    Setup

    When
    3 November 2026, one laptop
    Machine
    Ryzen 9 5900HX, 16 threads, 31 GB, other programs running
    Per engine
    8 threads, 4.5 GB, 1 worker
    Data
    2 copies of our 358,452 real records, plus 283,096 sampled
    Source
    9,876 keywords, 4,468,219 links. Private, so not published

    Fair to every engine

    • A warm-up before timing
    • The same keyword weights for all
    • A hand-written query plan for Neo4j and FalkorDB
    • Elasticsearch merged to one segment, its fastest
    • 2.5 GB Java heap for Elasticsearch and Neo4j

    Before you quote it

    • A speed test, not a test of match quality
    • A synthetic mix of real records
    • The full pipeline time, about 8.5 minutes, is projected
    • Matrie's default tie-break sort, off here, makes searches 1.5 to 1.9 times slower
    What we ran, and how many answers we checked
    EngineVersionHow it ranSearches runcountAnswers checkedcountWrongcount, lower is better
    MatrieDevelopment buildService on a saved snapshot9579570
    Elasticsearch8.19.0Server in Docker9579570
    Neo4j Community5.26.30 CommunityServer in Docker8388380
    FalkorDB4.22.3Server in Docker3943940
    Slower searches: 95th percentile
    EngineShortms, lower is betterTypicalms, lower is betterWith radiusms, lower is betterWith required termms, lower is betterBroadms, lower is better
    Matrie6.1952.53.9418.046.6
    Elasticsearch15.110217.772.460.4
    Neo4j Community1,0091,5881,7752,4861,384
    FalkorDB3,4003,5863,9355,0913,578

    95 of every 100 searches finished within this time.

    Searches per second, one at a time, on a mix of all five types
    EngineSearches a secondper s, higher is betterSearches in one minuteper min, higher is better
    Matrie93.45,604
    Elasticsearch56.83,409
    Neo4j Community1.6297
    FalkorDB0.4225
    Writing, memory and disk
    EngineWrite 1M, runningtime, lower is betterOne at a timeper s, higher is betterNew + similarms, lower is betterInitial bulk loads, lower is betterPeak memoryMB, lower is betterDiskMB, lower is better
    Matrie17 s2,22323.920996164
    Elasticsearch33 s31945.8273,149119
    FalkorDB109 s1,0295,841262,892RAM only
    Neo4j Community2.6 min4473,014193,4731,071

    "Write 1M, running" and "New + similar" are the charts above. "One at a time" is one record per request, for a minute. The bulk load uses each engine's own bulk tool. None of these includes reading free text, which the full pipeline does. Memory was read every 2 seconds.

    Compare

    Head to head, in numbers

    Same test, same 1M records, same limits. A tick marks the better result, ↓ means lower is better and ↑ higher, and bars are to scale.

    Matrie vs Neo4j Community

    244× faster on a typical search

    • Typical search2.87 ms701 ms
    • Broad search32.2 ms1,183 ms
    • Searches a second93.41.62
    • Write 1M records17 s2.6 min
    • New record + similar23.9 ms3,014 ms
    • Peak memory1.0 GB3.4 GB
    • Disk164 MB1,071 MB

    Choose Neo4j for multi-hop queries, Cypher and graph algorithms.

    Matrie vs FalkorDB

    868× faster on a typical search

    • Typical search2.87 ms2,493 ms
    • Broad search32.2 ms3,287 ms
    • Searches a second93.40.42
    • Write 1M records17 s109 s
    • New record + similar23.9 ms5,841 ms
    • Peak memory1.0 GB2.8 GB

    Choose FalkorDB for multi-hop traversal with Cypher, and GraphRAG tooling.

    Matrie vs Elasticsearch

    1.9× faster on a typical search

    • Typical search2.87 ms5.36 ms
    • Broad search32.2 ms39.7 ms
    • Searches a second93.456.8
    • Write 1M records17 s33 s
    • New record + similar23.9 ms45.8 ms
    • Peak memory1.0 GB3.1 GB
    • Disk164 MB119 MB

    Choose Elasticsearch for full-text relevance, vector search and scale-out today.

    Run this test on your own data

    The same engines and conditions, on your records, as part of a pilot.

    Start a pilot

    Feature by feature

    CapabilityMatrieNeo4jFalkorDBElasticsearch
    Best suited forOne-hop matching and rankingMulti-hop graph queriesFast graph traversalFull-text search and analytics
    Records stay in your databaseAn index onlyCopied into Neo4jCopied, in memoryCopied into indices
    Text to facts, with no LLMBuilt in, from your taxonomyYours to buildYours to buildText analysis; the mapping is yours
    Pipeline and sync built inConnectors, extraction, syncImport tools, LOAD CSVCSV bulk loaderConnectors, ingest pipelines
    Must-have rules, no codeSet in configurationWritten into each queryWritten into each queryFilters in each query
    Weighted ranking, no codeWeights per group of termsCoded into each queryCoded into each queryScoring in each query
    Location radiusBuilt inpoint.distancedistance()geo_distance
    Graph traversalOne hop, plus two-hop similarityAny depthAny depthNone
    Query languageopenCypher, coming soon. API and MCP tools todayCypherA subset of openCypherQuery DSL, ES|QL
    Vector searchNot built inVector indexesVector indexeskNN on dense vectors
    MCP for agentsBuilt in, 12 toolsOfficial serverAvailableAgent Builder server
    Durability and scale-outSnapshots; one machine todayACID; clusters in EnterpriseRDB and AOF, replicationShards and replicas

    From vendor documentation read on 2 November 2026, in our words: Neo4j, FalkorDB, Elasticsearch.

    Pricing

    Contact us for pricing

    Pricing depends on your workload. Tell us how many records you have and how many searches you expect, and we'll send you a quote.

    Ask for a price
    FAQ

    Questions a careful buyer asks

    What does "taxonomy-first" mean?

    You describe what matters in your domain: its categories, its terms, other words for those terms, and which ones are must-haves. Matrie builds the graph from that description, so results follow rules you can read and change.

    Is Matrie really a graph database?

    Yes, with a narrow focus. It holds a knowledge graph of your records and the terms that describe them, stored as a matrix. It answers one-hop matches and two-hop similarity. It doesn't run arbitrary paths or graph algorithms, so if you need those, choose Neo4j or FalkorDB. Support for openCypher, the open graph query language, is coming soon.

    Does it use an LLM?

    Not when data loads or when someone searches. The optional Auto Enhancer uses a small model on your own hardware to rate the key phrases it suggests.

    Can it work with RAG and AI agents?

    Yes, as the retrieval step. Rules narrow millions of documents to the few worth sending to your model, and agents call it over MCP. Matrie finds and ranks. It doesn't write answers, and it has no vector search.

    How is this different from "no ETL" graph tools?

    They run graph queries over tables you've already structured. Matrie also reads the free text in your records and maps it to your taxonomy. In both cases the source data stays where it is.

    Where does my data live?

    Source text stays in your databases. Matrie reads it to build the index and when someone opens a record, and doesn't keep it. The index holds ids, coded keywords and coordinates, and connection passwords are stored encrypted. Coded keywords can still be sensitive, so protect the index as you would any internal data store.

    Which data sources does the ETL support?

    MongoDB and PostgreSQL today, with support for other databases on the way. Tell us what you use, and we'll tell you when it's ready.

    What does "1M records" mean here?

    1,000,000 records built from our real dataset of 358,452. Every engine handles that size on one machine, so the comparison is about the engines rather than how much memory each was given. 1B-scale benchmarks are coming soon. The evidence section shows how we built them.

    What happens if the service crashes?

    Matrie saves snapshots, which are saved copies of the index, so a crash loses changes made since the last one. A re-sync restores them from your databases, which stay the source of truth. Today Matrie runs on a single machine.

    When is the demo?

    Soon. Leave your details and we'll let you know when it opens. We can also run the benchmark on your own data.

    Demo coming soon

    Be first to try Matrie

    Leave your details and we'll tell you when the demo opens. Ask about pricing or a pilot on your own data any time.

    We use what you send here only to reply to you. Prefer email? Write to emmanuel.d@eintrix.com.