A Fastify + TigerGraph system that maps a 158M-token synthetic CRM into a knowledge graph, walks entity relationships via GSQL, and feeds the LLM only what matters — 96.7% accuracy at 86% fewer tokens than flat vector search.
One synthetic CRM. Three pipelines. Same Gemini 2.5 Flash brain. TigerGraph answered 87/90 — BasicRAG managed 71.1%.
Every query you send to an LLM is a bill. The bigger the context, the bigger the invoice. Classic RAG — vector search over a flat document store — can't tell the difference between a needle and a haystack. It grabs whatever looks similar and dumps it all in the prompt. At enterprise scale, that's thousands of wasted tokens, per query, per second, forever.
You ask: "Who owns the Acme Corp deal?" Your LLM needs maybe 3 sentences of CRM data to answer. But your RAG system doesn't know that — so it retrieves chunks by similarity, burns 10,867 tokens, and costs you $0.0076 per question.
Every CRM entity has relationships: Deals connect to Contacts, Contacts belong to Accounts, Accounts sit in Territories. That's not a flat list — it's a knowledge graph waiting to be traversed. TigerGraph can walk those edges in milliseconds.
GSQL multi-hop query: Customer → Vendor → Outage → Region. Returns exactly the entity context. ~1,483 tokens. $0.000074 per question. Same LLM. Same accuracy. 86% cheaper.
Ring fill = cost proportion relative to BasicRAG's baseline spend.
CRM Nexus costs 86% less per query — 1,483 input tokens via TigerGraph graph traversal vs 10,867 from flat vector search. Same Gemini 2.5 Flash output.
Same LLM (Gemini 2.5 Flash). Same 90 questions. Only the retrieval layer changes.
Percentage of the 90 evaluation questions each pipeline answered correctly.
GraphRAG answered 87/90 (96.7%); BasicRAG managed 71.1% — a 25-point gap on the same data, with the same LLM. Flat search can't follow relationships.
Prompt tokens, questions 1 → 90.
86% fewer tokens — every single question
Questions each pipeline answered correctly out of 90.
GraphRAG correctly answered 87 of 90 questions. BasicRAG — with the same data available — answered only 64. The gap is structural: flat similarity cannot traverse entity relationships.
Average end-to-end response time across all answered questions.
bert_score · rescale_with_baseline=True| Pipeline | F1 rescaled (bar ≥ 0.55) | F1 raw (bar ≥ 0.88) |
|---|---|---|
| GraphRAG | 0.599 ✓ | 0.932 ✓ |
| BasicRAG | 0.454 | 0.908 |
| LLM Only | 0.089 | 0.846 |
GraphRAG clears both bonus thresholds — rescaled ≥ 0.55 ✓ and raw ≥ 0.88 ✓ — maximum accuracy bonus secured.
From question to verified answer — every layer is decoupled, swappable, and instrumented.
multi-hop GSQL traversal — the engine behind 96.7% accuracy
5,000 customers with health scores, ARR & renewal dates. 25,000 support tickets linked to outages and vendors. 5,000 compliance cases. 500 employees across regions. 100 outages with severity & impact data. 50 vendors with SLA tiers. 150 active projects. Every entity linked — built specifically to make flat vector search fail and graph traversal win.
100,820 documents · 158M tokens · JSONL format, one document per line
Pick one of the CRM questions below and watch all three pipelines race to answer — with TigerGraph traversing the graph in real time.
It isn't just better numbers — it's a fundamentally different retrieval shape.
A question like "What competitors does Acme Corp face?" requires traversing Customer → Product → Competitor. Vector search returns the 15 most similar Wikipedia chunks. TigerGraph returns 3 exact nodes via GSQL traversal.
BasicRAG: flat similarity retrieval = ~10,867 tokens. GraphRAG: direct entity fetch = ~1,483 tokens. TigerGraph's graph structure IS the filter. 86% token reduction is a side-effect of getting retrieval right.
BasicRAG had the documents and still answered only 71.1%. Multi-hop questions like "which customers share a vendor and region with this outage?" require graph traversal — cosine similarity has no concept of edges. TigerGraph does.
Three real benchmark questions. Same LLM. Different retrieval. Different worlds.