PageSourceSearch

https://www.ksturtzkopf.com/blog/anchored-subgraphrag

html ksturtzkopf.com collected 2026-10-02 01:33:41 UTC 79,248 bytes, 88 lines download raw bytes

1<!DOCTYPE html><!--LWtRETFfVLIF4X_kAEKGP--><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=5"/><link rel="preload" href="/_next/static/media/GeistMono_Variable.p.2f937313.woff2" as="font" crossorigin="" type="font/woff2"/><link rel="preload" href="/_next/static/media/figtree_400-s.p.64fb413e.ttf" as="font" crossorigin="" type="font/ttf"/><link rel="preload" href="/_next/static/media/figtree_500-s.p.c68b7f98.ttf" as="font" crossorigin="" type="font/ttf"/><link rel="preload" href="/_next/static/media/figtree_600-s.p.5b097e9c.ttf" as="font" crossorigin="" type="font/ttf"/><link rel="preload" href="/_next/static/media/figtree_700-s.p.85394880.ttf" as="font" crossorigin="" type="font/ttf"/><link rel="preload" href="/_next/static/media/instrument_serif_italic-s.p.2a46458b.ttf" as="font" crossorigin="" type="font/ttf"/><link rel="preload" href="/_next/static/media/instrument_serif_regular-s.p.f804c1d1.ttf" as="font" crossorigin="" type="font/ttf"/><link rel="stylesheet" href="/_next/static/chunks/3668e968db3071d6.css?dpl=dpl_EaHBW8xvd7C4wKEVS1RTJpnBrCD7" data-precedence="next"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/624605fa4abf45a9.js?dpl=dpl_EaHBW8xvd7C4wKEVS1RTJpnBrCD7"/>
1<script src="/_next/static/chunks/2fe478516b345e0e.js?dpl=dpl_EaHBW8xvd7C4wKEVS1RTJpnBrCD7" async=""></script>
1<script src="/_next/static/chunks/2c9d5cd67e457750.js?dpl=dpl_EaHBW8xvd7C4wKEVS1RTJpnBrCD7" async=""></script>
1<script src="/_next/static/chunks/1429cf6aa0145fc1.js?dpl=dpl_EaHBW8xvd7C4wKEVS1RTJpnBrCD7" async=""></script>
1<script src="/_next/static/chunks/turbopack-d6ac87c17dc04b39.js?dpl=dpl_EaHBW8xvd7C4wKEVS1RTJpnBrCD7" async=""></script>
1<script src="/_next/static/chunks/034f9e6917ad56df.js?dpl=dpl_EaHBW8xvd7C4wKEVS1RTJpnBrCD7" async=""></script>
1<script src="/_next/static/chunks/38f0c8c017ce8695.js?dpl=dpl_EaHBW8xvd7C4wKEVS1RTJpnBrCD7" async=""></script>
1<script src="/_next/static/chunks/bba395b96fbbe40e.js?dpl=dpl_EaHBW8xvd7C4wKEVS1RTJpnBrCD7" async=""></script>
1<script src="/_next/static/chunks/78108c5df4bd04f6.js?dpl=dpl_EaHBW8xvd7C4wKEVS1RTJpnBrCD7" async=""></script>
1<script src="/_next/static/chunks/ff5fcf549e00d838.js?dpl=dpl_EaHBW8xvd7C4wKEVS1RTJpnBrCD7" async=""></script>
1<meta name="next-size-adjust" content=""/><title>Less content for better RAG. - Konstantin Sturtzkopf</title><meta name="description" content="A small architectural win in graph-based retrieval that came from deliberately blinding part of the model."/><link rel="manifest" href="/manifest.json"/><link rel="alternate" type="application/json" href="https://ksturtzkopf.com/llms.json"/><link rel="alternate" type="text/plain" href="https://ksturtzkopf.com/llms.txt"/><link rel="icon" href="/favicon.ico?favicon.2a5022db.ico" sizes="48x48" type="image/x-icon"/><link rel="icon" href="/icon0.svg?icon0.21b3835b.svg" sizes="any" type="image/svg+xml"/><link rel="icon" href="/icon1.png?icon1.631b9a4e.png" sizes="96x96" type="image/png"/><link rel="apple-touch-icon" href="/apple-icon.png?apple-icon.fa1dda10.png" sizes="180x180" type="image/png"/>
1<script src="/_next/static/chunks/a6dad97d9634a72d.js?dpl=dpl_EaHBW8xvd7C4wKEVS1RTJpnBrCD7" noModule=""></script>
1</head><body class="figtree_c0996219-module__GoWgBq__variable instrumentserif_d0306952-module__SQgUga__variable geistmono_157ca88a-module__ZpfICG__variable antialiased"><div hidden=""><!--$--><!--/$--></div><a href="#main" class="skip-link">Skip to content</a><header class="fixed inset-x-0 top-0 z-50 border-b border-[#e3e3e5] bg-[#fafafa]/94"><div class="mx-auto flex max-w-[1376px] items-center justify-between gap-6 px-16 py-4 max-[760px]:gap-4 max-[760px]:px-6"><a aria-label="Konsti — home" class="font-serif text-[28px] leading-8 tracking-[-.04em] italic [&amp;_span]:not-italic" href="/">konsti<span>.</span></a><nav aria-label="Main navigation" class="flex items-center gap-6 text-[13px] max-[760px]:gap-4 max-[760px]:text-xs [&amp;_a]:text-[#727276] [&amp;_a[aria-current]]:text-[#151619] [&amp;_a:hover]:text-[#151619] [&amp;_a:hover]:underline [&amp;_a:hover]:underline-offset-4"><a href="/">Home</a><a aria-current="page" href="/blog">Thoughts</a><a href="/socials">Elsewhere</a></nav></div></header><main id="main" class="mx-auto w-[min(1280px,calc(100%-96px))] pt-40 pb-24 font-sans max-[800px]:w-[calc(100%-48px)] max-[800px]:pt-28 max-[800px]:pb-16 [&amp;_a:focus-visible]:outline-2 [&amp;_a:focus-visible]:outline-current [&amp;_a:focus-visible]:outline-offset-8"><div class="grid grid-cols-[minmax(0,480px)_minmax(0,1fr)] items-start gap-20 max-[1100px]:grid-cols-[minmax(0,360px)_minmax(0,1fr)] max-[1100px]:gap-12 max-[800px]:grid-cols-1"><div class="sticky top-28 max-[800px]:static"><header class="paper-grain relative flex min-h-[360px] flex-col gap-12 overflow-hidden rounded-3xl bg-[linear-gradient(145deg,#202124,#151619)] p-8 text-[#fafafa] shadow-[inset_0_1px_0_#ffffff12,0_16px_32px_-24px_#15161966] max-[800px]:min-h-80 max-[400px]:p-6 [&amp;&gt;*]:relative"><a class="inline-flex w-fit items-center gap-2 text-sm text-[#ffffffa8] no-underline hover:text-white leading-normal" href="/blog"><svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-arrow-left" aria-hidden="true"><path d="m12 19-7-7 7-7"></path><path d="M19 12H5"></path></svg> All thoughts</a><div class="mt-auto"><a href="https://openreview.net/pdf?id=z0c3PhkQht" target="_blank" rel="noreferrer" class="mb-6 flex items-center justify-between gap-4 rounded-3xl border border-[#ffffff26] p-4 text-[13px] hover:bg-[#ffffff08] [&amp;_small]:mt-2 [&amp;_small]:block [&amp;_small]:text-[#ffffff9e]" aria-label="Accepted to ICML 2026: Graph Foundation Models workshop. Read paper"><span>Accepted to ICML 2026<small>Graph Foundation Models workshop</small></span><svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-arrow-up-right shrink-0" aria-hidden="true"><path d="M7 7h10v10"></path><path d="M7 17 17 7"></path></svg></a><p class="text-xs tracking-[.08em] text-[#ffffff8f] uppercase leading-normal">Thoughts</p><h1 class="mt-4 mb-6 text-[clamp(32px,3vw,48px)] leading-[1.12] font-normal tracking-[-.035em] text-balance [overflow-wrap:anywhere] max-[800px]:text-[40px] max-[400px]:text-[32px]">Less content for better RAG.</h1><div class="flex flex-wrap gap-x-4 gap-y-2 text-[13px] leading-[1.6] text-[#ffffff9e] [&amp;_a:hover]:text-white"><time dateTime="2026-05-01">May 1, 2026</time><a href="https://github.com/ksturtzkopf/cambridge-l65" target="_blank" rel="noreferrer">Code on GitHub ↗</a></div></div><div class="border-t border-[#ffffff26] pt-4 text-[13px] text-[#ffffffa8]"><a class="flex items-center gap-2 [&amp;_span]:min-w-0 [&amp;_span]:[overflow-wrap:anywhere]" href="/blog/on-taste"><svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-arrow-left shrink-0" aria-hidden="true"><path d="m12 19-7-7 7-7"></path><path d="M19 12H5"></path></svg><span>Previous: <!-- -->On Taste.</span></a></div></header></div><div class="min-w-0 text-base [&amp;&gt;article&gt;div&gt;:first-child]:mt-0 leading-normal"><article class="blog-article"><div class="prose prose-blog max-w-none"><p>Most progress in AI looks like this: more data, more compute, more signal<sup><a href="#user-content-fn-bitter" id="user-content-fnref-bitter" data-footnote-ref="true" aria-describedby="footnote-label">1</a></sup>.
2This is a small story about the opposite.
3Over the past few months, I built a system that pulls facts out of a knowledge graph to ground an LLM&#x27;s answers.
4The architectural change that ended up mattering most was a deliberate subtraction.
5We cut a chunk of information out of one part of the model on purpose.</p>
6<h2 id="the-problem">The problem</h2>
7<p>If you have used an LLM, you have seen it confidently make things up.
8Retrieval-augmented generation, or RAG, addresses this by looking up real information before answering.
9Knowledge graphs are a particularly good source of facts.
10They store the world as a web of entities and relationships: structured, explicit, and inspectable.
11&quot;Christopher Nolan <em>directed</em> Inception&quot; is a graph fact.</p>
12<p>The hard case is multi-hop questions: the kind that need a chain of facts.
13&quot;Who designed the concert hall on top of an old cocoa warehouse in Hamburg?&quot;
14To answer that, a retriever has to find <em>the Elbphilharmonie</em>, then <em>Herzog &amp; de Meuron designed it</em>, and hold on to both.
15The current state of the art in graph-based RAG, SubgraphRAG, scores each candidate fact in the graph independently.
16That works for one-hop questions.
17For chains, it can keep individually high-scoring facts while quietly losing the chain that connects them.
18Recall on multi-hop questions sags.
19This project picks at exactly that gap.</p>
20<h2 id="the-pipeline-in-five-steps">The pipeline, in five steps</h2>
21<p>Concretely, here is what happens when our system gets a question like that one:</p>
22<ul>
23<li>
24<p><strong>Pick anchors.</strong> Out of the millions of facts in the graph, pull a couple of dozen that <em>look</em> semantically related to the question. Think of them as bookmarks: landmarks that orient the rest of the search. We pick them by cosine similarity between question and fact embeddings.</p>
25</li>
26<li>
27<p><strong>Expand the neighbourhood.</strong> Starting from the topic of the question (<em>Elbphilharmonie</em>) and from each anchor, walk outward across the graph for a hop or two and collect every fact you pass. You now have a candidate set of a few thousand triples.</p>
28</li>
29<li>
30<p><strong>Tag every entity with its position.</strong> For each entity in that neighbourhood, write down where it sits structurally: how far from the topic, how far from each anchor, whether it lies on a shortest path between them. Pure geometry. Nothing about meaning yet.</p>
31</li>
32<li>
33<p><strong>Refine, but blind the gate.</strong> A small graph neural network now updates each entity by listening to its neighbours. The catch: it is only allowed to read the structural tags when deciding <em>whose</em> messages to amplify. Content gets updated, but content cannot influence whose voice carries. <em>That</em> is the deliberate subtraction.</p>
34</li>
35<li>
36<p><strong>Score.</strong> A tiny scoring head rates each candidate fact for relevance, given the question and the refined entity embeddings. The top <em>k</em> go to the LLM.</p>
37</li>
38</ul>
39<h2 id="why-blinding-the-gate-matters">Why blinding the gate matters</h2>
40<p>The classic problem with stacking message-passing layers in a graph is <em>oversmoothing</em>.
41Each round, every node averages a little of itself toward its neighbours.
42After a few rounds, every entity in a connected region looks the same.</p>
43<p>The standard fix is to gate the messages: let each edge decide how much of its content gets through.
44The natural thing to gate on is similarity, &quot;listen more to neighbours that already look like me.&quot;
45That is exactly where the trouble starts.
46Similar nodes amplify each other faster than dissimilar ones.
47The soup forms quicker, not slower.
48The previous SubgraphRAG paper saw this and concluded that GNNs hurt graph retrieval.</p>
49<p>Our gate is forbidden from looking at content.
50It only reads the structural tags (distance from topic, distance from anchors, path indicators) when deciding whose voice carries.
51The feedback loop is severed.</p>
52<p>Watch the loop below.
53Same graph, same starting colours, two gates.
54The semantic panel collapses into a uniform soup; the structural panel barely moves.</p>
55<div class="not-prose my-8"><div class="grid grid-cols-1 sm:grid-cols-2 gap-3">
55<div class="border border-border rounded-md p-3 bg-foreground/[0.02]"><div class="font-mono text-[10px] uppercase tracking-wider text-foreground/55 mb-3">Semantic gate</div><svg viewBox="0 0 320 220" class="w-full h-auto" role="img" aria-label="Semantic gate graph: 11 nodes, current diversity 0.274"><line x1="160" y1="110" x2="160" y2="50" stroke="currentColor" stroke-opacity="0.18" stroke-width="1"></line><line x1="160" y1="110" x2="220" y2="110" stroke="currentColor" stroke-opacity="0.18" stroke-width="1"></line><line x1="160" y1="110" x2="160" y2="170" stroke="currentColor" stroke-opacity="0.18" stroke-width="1"></line><line x1="160" y1="110" x2="100" y2="110" stroke="currentColor" stroke-opacity="0.18" stroke-width="1"></line><line x1="160" y1="50" x2="220" y2="110" stroke="currentColor" stroke-opacity="0.18" stroke-width="1"></line><line x1="220" y1="110" x2="160" y2="170" stroke="currentColor" stroke-opacity="0.18" stroke-width="1"></line><line x1="160" y1="170" x2="100" y2="110" stroke="currentColor" stroke-opacity="0.18" stroke-width="1"></line><line x1="100" y1="110" x2="160" y2="50" stroke="currentColor" stroke-opacity="0.18" stroke-width="1"></line><line x1="160" y1="50" x2="230" y2="45" stroke="currentColor" stroke-opacity="0.18" stroke-width="1"></line><line x1="220" y1="110" x2="230" y2="45" stroke="currentColor" stroke-opacity="0.18" stroke-width="1"></line><line x1="220" y1="110" x2="230" y2="175" stroke="currentColor" stroke-opacity="0.18" stroke-width="1"></line><line x1="160" y1="170" x2="230" y2="175" stroke="currentColor" stroke-opacity="0.18" stroke-width="1"></line><line x1="160" y1="170" x2="90" y2="175" stroke="currentColor" stroke-opacity="0.18" stroke-width="1"></line><line x1="100" y1="110" x2="90" y2="175" stroke="currentColor" stroke-opacity="0.18" stroke-width="1"></line><line x1="100" y1="110" x2="90" y2="45" stroke="currentColor" stroke-opacity="0.18" stroke-width="1"></line><line x1="160" y1="50" x2="90" y2="45" stroke="currentColor" stroke-opacity="0.18" stroke-width="1"></line><line x1="230" y1="45" x2="285" y2="110" stroke="currentColor" stroke-opacity="0.18" stroke-width="1"></line><line x1="230" y1="175" x2="285" y2="110" stroke="currentColor" stroke-opacity="0.18" stroke-width="1"></line><line x1="90" y1="175" x2="35" y2="110" stroke="currentColor" stroke-opacity="0.18" stroke-width="1"></line><line x1="90" y1="45" x2="35" y2="110" stroke="currentColor" stroke-opacity="0.18" stroke-width="1"></line><circle cx="160" cy="110" r="9.5" fill="hsl(198.00000000000003, 18.189090909090904%, 69.08363636363636%)" stroke="currentColor" stroke-width="1.5" style="transition:fill 700ms ease"></circle><circle cx="160" cy="50" r="7.5" fill="hsl(18, 78%, 56%)" stroke="rgba(0,0,0,0.08)" stroke-width="0.75" style="transition:fill 700ms ease"></circle><circle cx="220" cy="110" r="7.5" fill="hsl(64.8, 78%, 56%)" stroke="rgba(0,0,0,0.08)" stroke-width="0.75" style="transition:fill 700ms ease"></circle><circle cx="160" cy="170" r="7.5" fill="hsl(251.99999999999997, 61.38909090909088%, 59.63363636363637%)" stroke="rgba(0,0,0,0.08)" stroke-width="0.75" style="transition:fill 700ms ease"></circle><circle cx="100" cy="110" r="7.5" fill="hsl(316.8, 78%, 56%)" stroke="rgba(0,0,0,0.08)" stroke-width="0.75" style="transition:fill 700ms ease"></circle><circle cx="230" cy="45" r="7.5" fill="hsl(108, 78%, 56%)" stroke="rgba(0,0,0,0.08)" stroke-width="0.75" style="transition:fill 700ms ease"></circle><circle cx="230" cy="175" r="7.5" fill="hsl(172.79999999999998, 29.970909090909114%, 66.50636363636363%)" stroke="rgba(0,0,0,0.08)" stroke-width="0.75" style="transition:fill 700ms ease"></circle><circle cx="90" cy="175" r="7.5" fill="hsl(280.8, 78%, 56%)" stroke="rgba(0,0,0,0.08)" stroke-width="0.75" style="transition:fill 700ms ease"></circle><circle cx="90" cy="45" r="7.5" fill="hsl(342, 78%, 56%)" stroke="rgba(0,0,0,0.08)" stroke-width="0.75" style="transition:fill 700ms ease"></circle><circle cx="285" cy="110" r="7.5" fill="hsl(144, 53.0109090909091%, 61.46636363636363%)" stroke="rgba(0,0,0,0.08)" stroke-width="0.75" style="transition:fill 700ms ease"></circle><circle cx="35" cy="110" r="7.5" fill="hsl(223.2, 38.34909090909089%, 64.67363636363636%)" stroke="rgba(0,0,0,0.08)" stroke-width="0.75" style="transition:fill 700ms ease"></circle><text x="160" y="94" text-anchor="middle" font-size="9" font-family="var(--font-geist-mono)" fill="currentColor" opacity="0.55">topic</text></svg><div class="mt-2 flex items-center justify-between font-mono text-[10px] text-foreground
55/55"><span>diversity</span><div class="flex items-center gap-2"><div class="h-1 w-20 rounded-full bg-foreground/10 overflow-hidden" aria-hidden="true"><div class="h-full bg-foreground/55" style="width:100%;transition:width 700ms ease"></div></div><span class="tabular-nums">0.27</span></div></div></div><div class="border border-border rounded-md p-3 bg-foreground/[0.02]"><div class="font-mono text-[10px] uppercase tracking-wider text-foreground/55 mb-3">Structural gate</div><svg viewBox="0 0 320 220" class="w-full h-auto" role="img" aria-label="Structural gate graph: 11 nodes, current diversity 0.274"><line x1="160" y1="110" x2="160" y2="50" stroke="currentColor" stroke-opacity="0.18" stroke-width="1"></line><line x1="160" y1="110" x2="220" y2="110" stroke="currentColor" stroke-opacity="0.18" stroke-width="1"></line><line x1="160" y1="110" x2="160" y2="170" stroke="currentColor" stroke-opacity="0.18" stroke-width="1"></line><line x1="160" y1="110" x2="100" y2="110" stroke="currentColor" stroke-opacity="0.18" stroke-width="1"></line><line x1="160" y1="50" x2="220" y2="110" stroke="currentColor" stroke-opacity="0.18" stroke-width="1"></line><line x1="220" y1="110" x2="160" y2="170" stroke="currentColor" stroke-opacity="0.18" stroke-width="1"></line><line x1="160" y1="170" x2="100" y2="110" stroke="currentColor" stroke-opacity="0.18" stroke-width="1"></line><line x1="100" y1="110" x2="160" y2="50" stroke="currentColor" stroke-opacity="0.18" stroke-width="1"></line><line x1="160" y1="50" x2="230" y2="45" stroke="currentColor" stroke-opacity="0.18" stroke-width="1"></line><line x1="220" y1="110" x2="230" y2="45" stroke="currentColor" stroke-opacity="0.18" stroke-width="1"></line><line x1="220" y1="110" x2="230" y2="175" stroke="currentColor" stroke-opacity="0.18" stroke-width="1"></line><line x1="160" y1="170" x2="230" y2="175" stroke="currentColor" stroke-opacity="0.18" stroke-width="1"></line><line x1="160" y1="170" x2="90" y2="175" stroke="currentColor" stroke-opacity="0.18" stroke-width="1"></line><line x1="100" y1="110" x2="90" y2="175" stroke="currentColor" stroke-opacity="0.18" stroke-width="1"></line><line x1="100" y1="110" x2="90" y2="45" stroke="currentColor" stroke-opacity="0.18" stroke-width="1"></line><line x1="160" y1="50" x2="90" y2="45" stroke="currentColor" stroke-opacity="0.18" stroke-width="1"></line><line x1="230" y1="45" x2="285" y2="110" stroke="currentColor" stroke-opacity="0.18" stroke-width="1"></line><line x1="230" y1="175" x2="285" y2="110" stroke="currentColor" stroke-opacity="0.18" stroke-width="1"></line><line x1="90" y1="175" x2="35" y2="110" stroke="currentColor" stroke-opacity="0.18" stroke-width="1"></line><line x1="90" y1="45" x2="35" y2="110" stroke="currentColor" stroke-opacity="0.18" stroke-width="1"></line><circle cx="160" cy="110" r="9.5" fill="hsl(198.00000000000003, 18.189090909090904%, 69.08363636363636%)" stroke="currentColor" stroke-width="1.5" style="transition:fill 700ms ease"></circle><circle cx="160" cy="50" r="7.5" fill="hsl(18, 78%, 56%)" stroke="rgba(0,0,0,0.08)" stroke-width="0.75" style="transition:fill 700ms ease"></circle><circle cx="220" cy="110" r="7.5" fill="hsl(64.8, 78%, 56%)" stroke="rgba(0,0,0,0.08)" stroke-width="0.75" style="transition:fill 700ms ease"></circle><circle cx="160" cy="170" r="7.5" fill="hsl(251.99999999999997, 61.38909090909088%, 59.63363636363637%)" stroke="rgba(0,0,0,0.08)" stroke-width="0.75" style="transition:fill 700ms ease"></circle><circle cx="100" cy="110" r="7.5" fill="hsl(316.8, 78%, 56%)" stroke="rgba(0,0,0,0.08)" stroke-width="0.75" style="transition:fill 700ms ease"></circle><circle cx="230" cy="45" r="7.5" fill="hsl(108, 78%, 56%)" stroke="rgba(0,0,0,0.08)" stroke-width="0.75" style="transition:fill 700ms ease"></circle><circle cx="230" cy="175" r="7.5" fill="hsl(172.79999999999998, 29.970909090909114%, 66.50636363636363%)" stroke="rgba(0,0,0,0.08)" stroke-width="0.75" style="transition:fill 700ms ease"></circle><circle cx="90" cy="175" r="7.5" fill="hsl(280.8, 78%, 56%)" stroke="rgba(0,0,0,0.08)" stroke-width="0.75" style="transition:fill 700ms ease"></circle><circle cx="90" cy="45" r="7.5" fill="hsl(342, 78%, 56%)" stroke="rgba(0,0,0,0.08)" stroke-width="0.75" style="transition:fill 700ms ease"></circle><circle cx="285" cy="110" r="7.5" fill="hsl(144, 53.0109090909091%, 61.46636363636363%)" stroke="rgba(0,0,0,0.08)" stroke-width="0.75" style="transition:fill 700ms ease"></circle><circle cx="35" cy="110" r="7.5" fill="hsl(223.2, 38.34909090909089%, 64.67363636363636%)" stroke="rgba(0,0,0,0.08)" stroke-width="0.75" style="transition:fill 700ms ease"></circle><text x="160" y="94" text-anchor="middle" font-size="9" font-family="var(--font-geist-mono)" fill="currentColor" opacity="0.55">topic</text></svg><div class="mt-2 flex items-center justify-between font-mono text-[10px] text-foreground
55/55"><span>diversity</span><div class="flex items-center gap-2"><div class="h-1 w-20 rounded-full bg-foreground/10 overflow-hidden" aria-hidden="true"><div class="h-full bg-foreground/55" style="width:100%;transition:width 700ms ease"></div></div><span class="tabular-nums">0.27</span></div></div></div></div><div class="mt-3 flex items-center gap-2"><button type="button" aria-label="Pause animation" class="w-9 h-9 flex items-center justify-center border border-border rounded-full bg-foreground/[0.04] hover:bg-foreground/[0.08] active:bg-foreground/[0.12] transition-colors"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-pause w-3.5 h-3.5 fill-current" aria-hidden="true"><rect x="14" y="3" width="5" height="18" rx="1"></rect><rect x="5" y="3" width="5" height="18" rx="1"></rect></svg></button><button type="button" aria-label="Advance one step" class="w-8 h-8 flex items-center justify-center border border-border rounded-full hover:bg-foreground
55/[0.06] transition-colors"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-skip-forward w-3 h-3" aria-hidden="true"><path d="M21 4v16"></path><path d="M6.029 4.285A2 2 0 0 0 3 6v12a2 2 0 0 0 3.029 1.715l9.997-5.998a2 2 0 0 0 .003-3.432z"></path></svg></button><button type="button" aria-label="Reset animation" class="w-8 h-8 flex items-center justify-center border border-border rounded-full hover:bg-foreground/[0.06] transition-colors"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-rotate-ccw w-3 h-3" aria-hidden="true"><path d="M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8"></path><path d="M3 3v5h5"></path></svg></button><div class="ml-3 flex-1 h-0.5 rounded-full bg-foreground/10 overflow-hidden" aria-hidden="true">
55<div class="h-full bg-foreground/45" style="width:0%;transition:width 700ms linear"></div></div><span class="font-mono text-[10px] text-foreground/55 tabular-nums">00<!-- --> / <!-- -->12</span></div></div>
56<h2 id="what-this-buys-us">What this buys us</h2>
57<p>Across all questions on the WebQSP benchmark, our retriever lifts triple recall by <strong>2.2 percentage points</strong> at <em>k</em> = 100, from 88.3 to 90.5 (averaged over three seeds).
58The bigger story is multi-hop.
59On chained questions, the kind that broke SubgraphRAG, we are roughly <strong>five points</strong> ahead at <em>k</em> = 100.</p>
60<div class="not-prose my-8"><div class="grid grid-cols-1 sm:grid-cols-2 gap-3"><div class="border border-border rounded-md p-3 bg-foreground/[0.02]"><div class="font-mono text-[10px] uppercase tracking-wider text-foreground/55 mb-3">Overall</div><svg viewBox="0 0 320 220" class="w-full h-auto" role="img" aria-label="Triple recall at k for Overall"><g><line x1="38" y1="190" x2="306" y2="190" stroke="currentColor" stroke-opacity="0.25" stroke-width="1"></line><text x="32" y="190" text-anchor="end" font-size="9" font-family="var(--font-geist-mono)" fill="currentColor" opacity="0.55" dominant-baseline="middle">80</text></g><g><line x1="38" y1="146" x2="306" y2="146" stroke="currentColor" stroke-opacity="0.08" stroke-width="1"></line><text x="32" y="146" text-anchor="end" font-size="9" font-family="var(--font-geist-mono)" fill="currentColor" opacity="0.55" dominant-baseline="middle">85</text></g><g><line x1="38" y1="102" x2="306" y2="102" stroke="currentColor" stroke-opacity="0.08" stroke-width="1"></line><text x="32" y="102" text-anchor="end" font-size="9" font-family="var(--font-geist-mono)" fill="currentColor" opacity="0.55" dominant-baseline="middle">90</text></g><g><line x1="38" y1="58" x2="306" y2="58" stroke="currentColor" stroke-opacity="0.08" stroke-width="1"></line><text x="32" y="58" text-anchor="end" font-size="9" font-family="var(--font-geist-mono)" fill="currentColor" opacity="0.55" dominant-baseline="middle">95</text></g><g><line x1="38" y1="14" x2="306" y2="14" stroke="currentColor" stroke-opacity="0.08" stroke-width="1"></line><text x="32" y="14" text-anchor="end" font-size="9" font-family="var(--font-geist-mono)" fill="currentColor" opacity="0.55" dominant-baseline="middle">100</text></g><g><line x1="38" y1="190" x2="38" y2="193" stroke="currentColor" stroke-opacity="0.35" stroke-width="1"></line><text x="38" y="204" text-anchor="middle" font-size="9" font-family="var(--font-geist-mono)" fill="currentColor" opacity="0.55">50</text></g><g><line x1="91.6" y1="190" x2="91.6" y2="193" stroke="currentColor" stroke-opacity="0.35" stroke-width="1"></line><text x="91.6" y="204" text-anchor="middle" font-size="9" font-family="var(--font-geist-mono)" fill="currentColor" opacity="0.55">100</text></g><g><line x1="145.2" y1="190" x2="145.2" y2="193" stroke="currentColor" stroke-opacity="0.35" stroke-width="1"></line><text x="145.2" y="204" text-anchor="middle" font-size="9" font-family="var(--font-geist-mono)" fill="currentColor" opacity="0.55">200</text></g><g><line x1="198.79999999999998" y1="190" x2="198.79999999999998" y2="193" stroke="currentColor" stroke-opacity="0.35" stroke-width="1"></line><text x="198.79999999999998" y="204" text-anchor="middle" font-size="9" font-family="var(--font-geist-mono)" fill="currentColor" opacity="0.55">300</text></g><g><line x1="252.4" y1="190" x2="252.4" y2="193" stroke="currentColor" stroke-opacity="0.35" stroke-width="1"></line><text x="252.4" y="204" text-anchor="middle" font-size="9" font-family="var(--font-geist-mono)" fill="currentColor" opacity="0.55">400</text></g><g><line x1="306" y1="190" x2="306" y2="193" stroke="currentColor" stroke-opacity="0.35" stroke-width="1"></line><text x="306" y="204" text-anchor="middle" font-size="9" font-family="var(--font-geist-mono)" fill="currentColor" opacity="0.55">500</text></g><text x="172" y="216" text-anchor="middle" font-size="9" font-family="var(--font-geist-mono)" fill="currentColor" opacity="0.4">k</text><g><path d="M 38 166.23999999999998 L 91.6 115.19999999999999 L 145.2 74.72000000000006 L 198.79999999999998 58 L 252.4 44.80000000000001 L 306 38.639999999999986" fill="none" stroke="currentColor" stroke-opacity="0.5" stroke-width="1" stroke-dasharray="3 3" stroke-linecap="round" stroke-linejoin="round"></path><circle cx="38" cy="166.23999999999998" r="2" fill="var(--background)" stroke="currentColor" stroke-opacity="0.5" stroke-width="1"></circle><circle cx="91.6" cy="115.19999999999999" r="2" fill="var(--background)" stroke="currentColor" stroke-opacity="0.5" stroke-width="1"></circle><circle cx="145.2" cy="74.72000000000006" r="2" fill="var(--background)" stroke="currentColor" stroke-opacity="0.5" stroke-width="1"></circle><circle cx="198.79999999999998" cy="58" r="2" fill="var(--background)" stroke="currentColor" stroke-opacity="0.5" stroke-width="1"></circle><circle cx="252.4" cy="44.80000000000001" r="2" fill="var(--background)" stroke="currentColor" stroke-opacity="0.5" stroke-width="1"></circle><circle cx="306" cy="38.639999999999986" r="2" fill="var(--background)" stroke="currentColor" stroke-opacity="0.5" stroke-width="1"></circle></g><g><path d="M 38 148.64 L 91.6 97.6 L 145.2 63.279999999999944 L 198.79999999999998 49.19999999999999 L 252.4 40.400000000000006 L 306 33.3
6060000000000014" fill="none" stroke="currentColor" stroke-opacity="0.9" stroke-width="1.75" stroke-dasharray="none" stroke-linecap="round" stroke-linejoin="round"></path><circle cx="38" cy="148.64" r="2.6" fill="currentColor" stroke="currentColor" stroke-opacity="0.9" stroke-width="1"></circle><circle cx="91.6" cy="97.6" r="2.6" fill="currentColor" stroke="currentColor" stroke-opacity="0.9" stroke-width="1"></circle><circle cx="145.2" cy="63.279999999999944" r="2.6" fill="currentColor" stroke="currentColor" stroke-opacity="0.9" stroke-width="1"></circle><circle cx="198.79999999999998" cy="49.19999999999999" r="2.6" fill="currentColor" stroke="currentColor" stroke-opacity="0.9" stroke-width="1"></circle><circle cx="252.4" cy="40.400000000000006" r="2.6" fill="currentColor" stroke="currentColor" stroke-opacity="0.9" stroke-width="1"></circle><circle cx="306" cy="33.360000000000014" r="2.6" fill="currentColor" stroke="currentColor" stroke-opacity="0.9" stroke-width="1"></circle></g></svg></div><div class="border border-border rounded-md p-3 bg-foreground
60/[0.02]"><div class="font-mono text-[10px] uppercase tracking-wider text-foreground/55 mb-3">Multi-hop</div><svg viewBox="0 0 320 220" class="w-full h-auto" role="img" aria-label="Triple recall at k for Multi-hop"><g><line x1="38" y1="190" x2="306" y2="190" stroke="currentColor" stroke-opacity="0.25" stroke-width="1"></line><text x="32" y="190" text-anchor="end" font-size="9" font-family="var(--font-geist-mono)" fill="currentColor" opacity="0.55" dominant-baseline="middle">60</text></g><g><line x1="38" y1="146" x2="306" y2="146" stroke="currentColor" stroke-opacity="0.08" stroke-width="1"></line><text x="32" y="146" text-anchor="end" font-size="9" font-family="var(--font-geist-mono)" fill="currentColor" opacity="0.55" dominant-baseline="middle">70</text></g><g><line x1="38" y1="102" x2="306" y2="102" stroke="currentColor" stroke-opacity="0.08" stroke-width="1"></line><text x="32" y="102" text-anchor="end" font-size="9" font-family="var(--font-geist-mono)" fill="currentColor" opacity="0.55" dominant-baseline="middle">80</text></g><g><line x1="38" y1="58" x2="306" y2="58" stroke="currentColor" stroke-opacity="0.08" stroke-width="1"></line><text x="32" y="58" text-anchor="end" font-size="9" font-family="var(--font-geist-mono)" fill="currentColor" opacity="0.55" dominant-baseline="middle">90</text></g><g><line x1="38" y1="14" x2="306" y2="14" stroke="currentColor" stroke-opacity="0.08" stroke-width="1"></line><text x="32" y="14" text-anchor="end" font-size="9" font-family="var(--font-geist-mono)" fill="currentColor" opacity="0.55" dominant-baseline="middle">100</text></g><g><line x1="38" y1="190" x2="38" y2="193" stroke="currentColor" stroke-opacity="0.35" stroke-width="1"></line><text x="38" y="204" text-anchor="middle" font-size="9" font-family="var(--font-geist-mono)" fill="currentColor" opacity="0.55">50</text></g><g><line x1="91.6" y1="190" x2="91.6" y2="193" stroke="currentColor" stroke-opacity="0.35" stroke-width="1"></line><text x="91.6" y="204" text-anchor="middle" font-size="9" font-family="var(--font-geist-mono)" fill="currentColor" opacity="0.55">100</text></g><g><line x1="145.2" y1="190" x2="145.2" y2="193" stroke="currentColor" stroke-opacity="0.35" stroke-width="1"></line><text x="145.2" y="204" text-anchor="middle" font-size="9" font-family="var(--font-geist-mono)" fill="currentColor" opacity="0.55">200</text></g><g><line x1="198.79999999999998" y1="190" x2="198.79999999999998" y2="193" stroke="currentColor" stroke-opacity="0.35" stroke-width="1"></line><text x="198.79999999999998" y="204" text-anchor="middle" font-size="9" font-family="var(--font-geist-mono)" fill="currentColor" opacity="0.55">300</text></g><g><line x1="252.4" y1="190" x2="252.4" y2="193" stroke="currentColor" stroke-opacity="0.35" stroke-width="1"></line><text x="252.4" y="204" text-anchor="middle" font-size="9" font-family="var(--font-geist-mono)" fill="currentColor" opacity="0.55">400</text></g><g><line x1="306" y1="190" x2="306" y2="193" stroke="currentColor" stroke-opacity="0.35" stroke-width="1"></line><text x="306" y="204" text-anchor="middle" font-size="9" font-family="var(--font-geist-mono)" fill="currentColor" opacity="0.55">500</text></g><text x="172" y="216" text-anchor="middle" font-size="9" font-family="var(--font-geist-mono)" fill="currentColor" opacity="0.4">k</text><g><path d="M 38 168 L 91.6 128.4 L 145.2 91 L 198.79999999999998 69 L 252.4 53.599999999999994 L 306 44.80000000000001" fill="none" stroke="currentColor" stroke-opacity="0.5" stroke-width="1" stroke-dasharray="3 3" stroke-linecap="round" stroke-linejoin="round"></path><circle cx="38" cy="168" r="2" fill="var(--background)" stroke="currentColor" stroke-opacity="0.5" stroke-width="1"></circle><circle cx="91.6" cy="128.4" r="2" fill="var(--background)" stroke="currentColor" stroke-opacity="0.5" stroke-width="1"></circle><circle cx="145.2" cy="91" r="2" fill="var(--background)" stroke="currentColor" stroke-opacity="0.5" stroke-width="1"></circle><circle cx="198.79999999999998" cy="69" r="2" fill="var(--background)" stroke="currentColor" stroke-opacity="0.5" stroke-width="1"></circle><circle cx="252.4" cy="53.599999999999994" r="2" fill="var(--background)" stroke="currentColor" stroke-opacity="0.5" stroke-width="1"></circle><circle cx="306" cy="44.80000000000001" r="2" fill="var(--background)" stroke="currentColor" stroke-opacity="0.5" stroke-width="1"></circle></g><g><path d="M 38 146 L 91.6 106.4 L 145.2 69 L 198.79999999999998 51.400000000000006 L 252.4 42.599999999999994 L 306 38.19999999999999" fill="none" stroke="currentColor" stroke-opacity="0.9" stroke-width="1.75" stroke-dasharray="none" stroke-linecap="round" stroke-linejoin="round"></path><circle cx="38" cy="146" r="2.6" fill="currentColor" stroke="currentColor" stroke-opacity="0.9" stroke-width="1"></circle><circle cx="91.6" cy="106.4" r="2.6" fill="currentColor" stroke="currentColor" stroke-opacity="0.9" stroke-width="1"></circle><circle cx="145.2" cy="69" r="2.6" fill="currentColor" stroke="currentColor" stroke-opacity="0.9" stroke-width="1"></circle><circle cx="198.79999999999998" cy="51.400000000000006" r="2.6" fill="currentColor" stroke="currentColor" stroke-opacity="0.9" stroke-width="1"></circle><circle cx="252.4" cy="42.599999999999994" r="2.6" fill="currentColor" stroke="currentColor" stroke-opacity="0.9" stroke-width="1"></circle><circle cx="306" cy="38.19999999999999" r="2.6" fill="currentColor" stroke="currentColor" stroke-opacity="0.9" stroke-width="1"></circle></g></svg></div></div><div class="mt-4 flex items-center justify-center gap-6"><div class="flex items-center gap-2"><svg width="22" height="2" viewBox="0 0 22 2" class="overflow-visible" aria-hidden="true"><line x1="0" y1="1" x2="22" y2="1" stroke="currentColor" stroke-opacity="0.5" stroke-dasharray="3 3" stroke-width="1"></line></svg>
60<span class="font-mono text-[10px] text-foreground/55">SubgraphRAG</span></div><div class="flex items-center gap-2"><svg width="22" height="2" viewBox="0 0 22 2" class="overflow-visible" aria-hidden="true"><line x1="0" y1="1" x2="22" y2="1" stroke="currentColor" stroke-opacity="0.9" stroke-width="1.75"></line></svg><span class="font-mono text-[10px] text-foreground/55">ASR (ours)</span></div></div><div class="mt-3 text-xs text-foreground/55 text-center font-mono">Triple recall@k on WebQSP test set. Higher is better.</div></div>
61<p>Two ablations are worth pulling out:</p>
62<ul>
63<li><strong>Removing the structural gate</strong> while keeping the GNN halves the gain over SubgraphRAG at <em>k</em> = 100, from two points down to one. The gate is doing the work, not the GNN alone.</li>
64<li><strong>Removing the GNN entirely</strong> is the largest single ablation, costing 5.4 points of recall. Put together: the structurally-gated GNN is the biggest contributor to the result.</li>
65</ul>
66<h2 id="what-this-changes">What this changes</h2>
67<p>SubgraphRAG&#x27;s authors concluded that GNNs hurt graph retrieval, and blamed semantic diffusion noise for it.
68That conclusion held for the GNN they tried, which was unconstrained.
69Our result reverses it: with a structural-only gate, the GNN becomes the single biggest contributor to recall.
70Turns out, GNNs are not broken for retrieval.
71They just need a <em>smaller job</em>.</p>
72<h2 id="caveats-and-a-closing-thought">Caveats and a closing thought</h2>
73<p>This is a project result, not a production system.
74We have evaluated retrieval, not the answer the LLM produces with the retrieved facts.
75Whether the recall gain translates to fewer hallucinated answers is a separate experiment we have not run.</p>
76<p>Still, the architectural lesson generalises beyond this project.
77When a part of your model is causing trouble, sometimes the right move is not to give it more information.
78It is to take some away.</p>
79<blockquote>
80<p>In a graph, <em>where you are</em> is sometimes more useful than <em>what you mean</em>.</p>
81</blockquote>
82<section data-footnotes="true" class="footnotes"><h2 id="footnote-label" class="sr-only">Footnotes</h2>
83<ol>
84<li id="user-content-fn-bitter">
85<p>Rich Sutton, <a href="http://www.incompleteideas.net/IncIdeas/BitterLesson.html">The Bitter Lesson</a> (2019). The methods that have actually worked in AI, over and over, are the ones that scale with compute and lean on general learning rather than hand-engineered structure. This post is a small exception, on a task where the structure being learned is the data. <a href="#user-content-fnref-bitter" data-footnote-backref="" aria-label="Back to reference 1" class="data-footnote-backref">↩</a></p>
86</li>
87</ol>
88</section></div></article></div></div></main><!--$--><!--/$-->
88<script src="/_next/static/chunks/624605fa4abf45a9.js?dpl=dpl_EaHBW8xvd7C4wKEVS1RTJpnBrCD7" id="_R_" async=""></script>
88<script>(self.__next_f=self.__next_f||[]).push([0])</script>
88<script>self.__next_f.push([1,"1:\"$Sreact.fragment\"\n2:I[24211,[\"/_next/static/chunks/034f9e6917ad56df.js?dpl=dpl_EaHBW8xvd7C4wKEVS1RTJpnBrCD7\",\"/_next/static/chunks/38f0c8c017ce8695.js?dpl=dpl_EaHBW8xvd7C4wKEVS1RTJpnBrCD7\"],\"default\"]\n3:I[98909,[\"/_next/static/chunks/034f9e6917ad56df.js?dpl=dpl_EaHBW8xvd7C4wKEVS1RTJpnBrCD7\",\"/_next/static/chunks/38f0c8c017ce8695.js?dpl=dpl_EaHBW8xvd7C4wKEVS1RTJpnBrCD7\"],\"StableViewportHeight\"]\n4:I[94371,[\"/_next/static/chunks/bba395b96fbbe40e.js?dpl=dpl_EaHBW8xvd7C4wKEVS1RTJpnBrCD7\",\"/_next/static/chunks/78108c5df4bd04f6.js?dpl=dpl_EaHBW8xvd7C4wKEVS1RTJpnBrCD7\"],\"default\"]\n5:I[69507,[\"/_next/static/chunks/bba395b96fbbe40e.js?dpl=dpl_EaHBW8xvd7C4wKEVS1RTJpnBrCD7\",\"/_next/static/chunks/78108c5df4bd04f6.js?dpl=dpl_EaHBW8xvd7C4wKEVS1RTJpnBrCD7\"],\"default\"]\n6:I[21204,[\"/_next/static/chunks/034f9e6917ad56df.js?dpl=dpl_EaHBW8xvd7C4wKEVS1RTJpnBrCD7\",\"/_next/static/chunks/38f0c8c017ce8695.js?dpl=dpl_EaHBW8xvd7C4wKEVS1RTJpnBrCD7\",\"/_next/static/chunks/ff5fcf549e00d838.js?dpl=dpl_EaHBW8xvd7C4wKEVS1RTJpnBrCD7\"],\"\"]\n8:I[34868,[\"/_next/static/chunks/bba395b96fbbe40e.js?dpl=dpl_EaHBW8xvd7C4wKEVS1RTJpnBrCD7\",\"/_next/static/chunks/78108c5df4bd04f6.js?dpl=dpl_EaHBW8xvd7C4wKEVS1RTJpnBrCD7\"],\"OutletBoundary\"]\n9:\"$Sreact.suspense\"\nb:I[34868,[\"/_next/static/chunks/bba395b96fbbe40e.js?dpl=dpl_EaHBW8xvd7C4wKEVS1RTJpnBrCD7\",\"/_next/static/chunks/78108c5df4bd04f6.js?dpl=dpl_EaHBW8xvd7C4wKEVS1RTJpnBrCD7\"],\"ViewportBoundary\"]\nd:I[34868,[\"/_next/static/chunks/bba395b96fbbe40e.js?dpl=dpl_EaHBW8xvd7C4wKEVS1RTJpnBrCD7\",\"/_next/static/chunks/78108c5df4bd04f6.js?dpl=dpl_EaHBW8xvd7C4wKEVS1RTJpnBrCD7\"],\"MetadataBoundary\"]\nf:I[80195,[],\"default\"]\n:HL[\"/_next/static/chunks/3668e968db3071d6.css?dpl=dpl_EaHBW8xvd7C4wKEVS1RTJpnBrCD7\",\"style\"]\n:HL[\"/_next/static/media/GeistMono_Variable.p.2f937313.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n:HL[\"/_next/static/media/figtree_400-s.p.64fb413e.ttf\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/ttf\"}]\n:HL[\"/_next/static/media/figtree_500-s.p.c68b7f98.ttf\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/ttf\"}]\n:HL[\"/_next/static/media/figtree_600-s.p.5b097e9c.ttf\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/ttf\"}]\n:HL[\"/_next/static/media/figtree_700-s.p.85394880.ttf\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/ttf\"}]\n:HL[\"/_next/static/media/instrument_serif_italic-s.p.2a46458b.ttf\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/ttf\"}]\n:HL[\"/_next/static/media/instrument_serif_regular-s.p.f804c1d1.ttf\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/ttf\"}]\n"])</script>
88<script>self.__next_f.push([1,"0:{\"P\":null,\"b\":\"LWtRETFfVLIF4X-kAEKGP\",\"c\":[\"\",\"blog\",\"anchored-subgraphrag\"],\"q\":\"\",\"i\":false,\"f\":[[[\"\",{\"children\":[\"blog\",{\"children\":[[\"slug\",\"anchored-subgraphrag\",\"d\"],{\"children\":[\"__PAGE__\",{}]}]}]},\"$undefined\",\"$undefined\",true],[[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/chunks/3668e968db3071d6.css?dpl=dpl_EaHBW8xvd7C4wKEVS1RTJpnBrCD7\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-0\",{\"src\":\"/_next/static/chunks/034f9e6917ad56df.js?dpl=dpl_EaHBW8xvd7C4wKEVS1RTJpnBrCD7\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-1\",{\"src\":\"/_next/static/chunks/38f0c8c017ce8695.js?dpl=dpl_EaHBW8xvd7C4wKEVS1RTJpnBrCD7\",\"async\":true,\"nonce\":\"$undefined\"}]],[\"$\",\"html\",null,{\"lang\":\"en\",\"suppressHydrationWarning\":true,\"children\":[\"$\",\"body\",null,{\"className\":\"figtree_c0996219-module__GoWgBq__variable instrumentserif_d0306952-module__SQgUga__variable geistmono_157ca88a-module__ZpfICG__variable antialiased\",\"children\":[[\"$\",\"a\",null,{\"href\":\"#main\",\"className\":\"skip-link\",\"children\":\"Skip to content\"}],[\"$\",\"$L2\",null,{}],[\"$\",\"$L3\",null,{}],[\"$\",\"$L4\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L5\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":[[\"$\",\"main\",null,{\"id\":\"main\",\"className\":\"mx-auto flex min-h-svh max-w-[700px] flex-col justify-center gap-8 px-6 py-32\",\"children\":[[\"$\",\"p\",null,{\"className\":\"text-xs uppercase tracking-widest text-[#727276]\",\"children\":\"404\"}],[\"$\",\"h1\",null,{\"className\":\"text-4xl font-normal tracking-tight\",\"children\":[\"Nothing here \",[\"$\",\"em\",null,{\"className\":\"font-[family-name:var(--font-instrument-serif)]\",\"children\":\"yet.\"}]]}],[\"$\",\"p\",null,{\"className\":\"text-[#727276]\",\"children\":\"This page may have moved, or the link may be incomplete.\"}],[\"$\",\"$L6\",null,{\"href\":\"/\",\"className\":\"w-fit text-sm underline underline-offset-4\",\"children\":\"Back home\"}]]}],[]],\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}],false]}]}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L4\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L5\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L4\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L5\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[\"$L7\",[[\"$\",\"script\",\"script-0\",{\"src\":\"/_next/static/chunks/ff5fcf549e00d838.js?dpl=dpl_EaHBW8xvd7C4wKEVS1RTJpnBrCD7\",\"async\":true,\"nonce\":\"$undefined\"}]],[\"$\",\"$L8\",null,{\"children\":[\"$\",\"$9\",null,{\"name\":\"Next.MetadataOutlet\",\"children\":\"$@a\"}]}]]}],{},null,false,false]},null,false,false]},null,false,false]},null,false,false],[\"$\",\"$1\",\"h\",{\"children\":[null,[\"$\",\"$Lb\",null,{\"children\":\"$Lc\"}],[\"$\",\"div\",null,{\"hidden\":true,\"children\":[\"$\",\"$Ld\",null,{\"children\":[\"$\",\"$9\",null,{\"name\":\"Next.Metadata\",\"children\":\"$Le\"}]}]}],[\"$\",\"meta\",null,{\"name\":\"next-size-adjust\",\"content\":\"\"}]]}],false]],\"m\":\"$undefined\",\"G\":[\"$f\",[]],\"S\":true}\n"])</script>
88<script>self.__next_f.push([1,"7:[\"$\",\"main\",null,{\"id\":\"main\",\"className\":\"mx-auto w-[min(1280px,calc(100%-96px))] pt-40 pb-24 font-sans max-[800px]:w-[calc(100%-48px)] max-[800px]:pt-28 max-[800px]:pb-16 [\u0026_a:focus-visible]:outline-2 [\u0026_a:focus-visible]:outline-current [\u0026_a:focus-visible]:outline-offset-8\",\"children\":[\"$\",\"div\",null,{\"className\":\"grid grid-cols-[minmax(0,480px)_minmax(0,1fr)] items-start gap-20 max-[1100px]:grid-cols-[minmax(0,360px)_minmax(0,1fr)] max-[1100px]:gap-12 max-[800px]:grid-cols-1\",\"children\":[[\"$\",\"div\",null,{\"className\":\"sticky top-28 max-[800px]:static\",\"children\":[\"$\",\"header\",null,{\"className\":\"paper-grain relative flex min-h-[360px] flex-col gap-12 overflow-hidden rounded-3xl bg-[linear-gradient(145deg,#202124,#151619)] p-8 text-[#fafafa] shadow-[inset_0_1px_0_#ffffff12,0_16px_32px_-24px_#15161966] max-[800px]:min-h-80 max-[400px]:p-6 [\u0026\u003e*]:relative\",\"children\":[[\"$\",\"$L6\",null,{\"href\":\"/blog\",\"className\":\"inline-flex w-fit items-center gap-2 text-sm text-[#ffffffa8] no-underline hover:text-white leading-normal\",\"children\":[[\"$\",\"svg\",null,{\"ref\":\"$undefined\",\"xmlns\":\"http://www.w3.org/2000/svg\",\"width\":16,\"height\":16,\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":2,\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\",\"className\":\"lucide lucide-arrow-left\",\"aria-hidden\":\"true\",\"children\":[[\"$\",\"path\",\"1l729n\",{\"d\":\"m12 19-7-7 7-7\"}],[\"$\",\"path\",\"x3x0zl\",{\"d\":\"M19 12H5\"}],\"$undefined\"]}],\" All thoughts\"]}],[\"$\",\"div\",null,{\"className\":\"mt-auto\",\"children\":[[\"$\",\"a\",null,{\"href\":\"https://openreview.net/pdf?id=z0c3PhkQht\",\"target\":\"_blank\",\"rel\":\"noreferrer\",\"className\":\"mb-6 flex items-center justify-between gap-4 rounded-3xl border border-[#ffffff26] p-4 text-[13px] hover:bg-[#ffffff08] [\u0026_small]:mt-2 [\u0026_small]:block [\u0026_small]:text-[#ffffff9e]\",\"aria-label\":\"Accepted to ICML 2026: Graph Foundation Models workshop. Read paper\",\"children\":[[\"$\",\"span\",null,{\"children\":[\"Accepted to ICML 2026\",[\"$\",\"small\",null,{\"children\":\"Graph Foundation Models workshop\"}]]}],[\"$\",\"svg\",null,{\"ref\":\"$undefined\",\"xmlns\":\"http://www.w3.org/2000/svg\",\"width\":16,\"height\":16,\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":2,\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\",\"className\":\"lucide lucide-arrow-up-right shrink-0\",\"aria-hidden\":\"true\",\"children\":[[\"$\",\"path\",\"1tivn9\",{\"d\":\"M7 7h10v10\"}],[\"$\",\"path\",\"1vkiza\",{\"d\":\"M7 17 17 7\"}],\"$undefined\"]}]]}],[\"$\",\"p\",null,{\"className\":\"text-xs tracking-[.08em] text-[#ffffff8f] uppercase leading-normal\",\"children\":\"Thoughts\"}],[\"$\",\"h1\",null,{\"className\":\"mt-4 mb-6 text-[clamp(32px,3vw,48px)] leading-[1.12] font-normal tracking-[-.035em] text-balance [overflow-wrap:anywhere] max-[800px]:text-[40px] max-[400px]:text-[32px]\",\"children\":\"Less content for better RAG.\"}],[\"$\",\"div\",null,{\"className\":\"flex flex-wrap gap-x-4 gap-y-2 text-[13px] leading-[1.6] text-[#ffffff9e] [\u0026_a:hover]:text-white\",\"children\":[[\"$\",\"time\",null,{\"dateTime\":\"2026-05-01\",\"children\":\"May 1, 2026\"}],[\"$\",\"a\",null,{\"href\":\"https://github.com/ksturtzkopf/cambridge-l65\",\"target\":\"_blank\",\"rel\":\"noreferrer\",\"children\":\"Code on GitHub ↗\"}]]}]]}],[\"$\",\"div\",null,{\"className\":\"border-t border-[#ffffff26] pt-4 text-[13px] text-[#ffffffa8]\",\"children\":[\"$\",\"$L6\",null,{\"href\":\"/blog/on-taste\",\"className\":\"flex items-center gap-2 [\u0026_span]:min-w-0 [\u0026_span]:[overflow-wrap:anywhere]\",\"children\":[[\"$\",\"svg\",null,{\"ref\":\"$undefined\",\"xmlns\":\"http://www.w3.org/2000/svg\",\"width\":16,\"height\":16,\"viewBox\":\"0 0 24 24\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeWidth\":2,\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\",\"className\":\"lucide lucide-arrow-left shrink-0\",\"aria-hidden\":\"true\",\"children\":[[\"$\",\"path\",\"1l729n\",{\"d\":\"m12 19-7-7 7-7\"}],[\"$\",\"path\",\"x3x0zl\",{\"d\":\"M19 12H5\"}],\"$undefined\"]}],[\"$\",\"span\",null,{\"children\":[\"Previous: \",\"On Taste.\"]}]]}]}]]}]}],[\"$\",\"div\",null,{\"className\":\"min-w-0 text-base [\u0026\u003earticle\u003ediv\u003e:first-child]:mt-0 leading-normal\",\"children\":[false,[\"$\",\"article\",null,{\"className\":\"blog-article\",\"children\":[\"$\",\"div\",null,{\"className\":\"prose prose-blog max-w-none\",\"children\":\"$L10\"}]}]]}]]}]}]\n"])</script>
88<script>self.__next_f.push([1,"c:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1, maximum-scale=5\"}]]\n"])</script>
88<script>self.__next_f.push([1,"11:I[32253,[\"/_next/static/chunks/bba395b96fbbe40e.js?dpl=dpl_EaHBW8xvd7C4wKEVS1RTJpnBrCD7\",\"/_next/static/chunks/78108c5df4bd04f6.js?dpl=dpl_EaHBW8xvd7C4wKEVS1RTJpnBrCD7\"],\"IconMark\"]\na:null\ne:[[\"$\",\"title\",\"0\",{\"children\":\"Less content for better RAG. - Konstantin Sturtzkopf\"}],[\"$\",\"meta\",\"1\",{\"name\":\"description\",\"content\":\"A small architectural win in graph-based retrieval that came from deliberately blinding part of the model.\"}],[\"$\",\"link\",\"2\",{\"rel\":\"manifest\",\"href\":\"/manifest.json\",\"crossOrigin\":\"$undefined\"}],[\"$\",\"link\",\"3\",{\"rel\":\"alternate\",\"type\":\"application/json\",\"href\":\"https://ksturtzkopf.com/llms.json\"}],[\"$\",\"link\",\"4\",{\"rel\":\"alternate\",\"type\":\"text/plain\",\"href\":\"https://ksturtzkopf.com/llms.txt\"}],[\"$\",\"link\",\"5\",{\"rel\":\"icon\",\"href\":\"/favicon.ico?favicon.2a5022db.ico\",\"sizes\":\"48x48\",\"type\":\"image/x-icon\"}],[\"$\",\"link\",\"6\",{\"rel\":\"icon\",\"href\":\"/icon0.svg?icon0.21b3835b.svg\",\"sizes\":\"any\",\"type\":\"image/svg+xml\"}],[\"$\",\"link\",\"7\",{\"rel\":\"icon\",\"href\":\"/icon1.png?icon1.631b9a4e.png\",\"sizes\":\"96x96\",\"type\":\"image/png\"}],[\"$\",\"link\",\"8\",{\"rel\":\"apple-touch-icon\",\"href\":\"/apple-icon.png?apple-icon.fa1dda10.png\",\"sizes\":\"180x180\",\"type\":\"image/png\"}],[\"$\",\"$L11\",\"9\",{}]]\n"])</script>
88<script>self.__next_f.push([1,"10:[[\"$\",\"p\",null,{\"children\":[\"Most progress in AI looks like this: more data, more compute, more signal\",[\"$\",\"sup\",null,{\"children\":[\"$\",\"a\",null,{\"href\":\"#user-content-fn-bitter\",\"id\":\"user-content-fnref-bitter\",\"data-footnote-ref\":true,\"aria-describedby\":\"footnote-label\",\"children\":\"1\"}]}],\".\\nThis is a small story about the opposite.\\nOver the past few months, I built a system that pulls facts out of a knowledge graph to ground an LLM's answers.\\nThe architectural change that ended up mattering most was a deliberate subtraction.\\nWe cut a chunk of information out of one part of the model on purpose.\"]}],\"\\n\",[\"$\",\"h2\",null,{\"id\":\"the-problem\",\"children\":\"The problem\"}],\"\\n\",[\"$\",\"p\",null,{\"children\":[\"If you have used an LLM, you have seen it confidently make things up.\\nRetrieval-augmented generation, or RAG, addresses this by looking up real information before answering.\\nKnowledge graphs are a particularly good source of facts.\\nThey store the world as a web of entities and relationships: structured, explicit, and inspectable.\\n\\\"Christopher Nolan \",[\"$\",\"em\",null,{\"children\":\"directed\"}],\" Inception\\\" is a graph fact.\"]}],\"\\n\",[\"$\",\"p\",null,{\"children\":[\"The hard case is multi-hop questions: the kind that need a chain of facts.\\n\\\"Who designed the concert hall on top of an old cocoa warehouse in Hamburg?\\\"\\nTo answer that, a retriever has to find \",[\"$\",\"em\",null,{\"children\":\"the Elbphilharmonie\"}],\", then \",[\"$\",\"em\",null,{\"children\":\"Herzog \u0026 de Meuron designed it\"}],\", and hold on to both.\\nThe current state of the art in graph-based RAG, SubgraphRAG, scores each candidate fact in the graph independently.\\nThat works for one-hop questions.\\nFor chains, it can keep individually high-scoring facts while quietly losing the chain that connects them.\\nRecall on multi-hop questions sags.\\nThis project picks at exactly that gap.\"]}],\"\\n\",[\"$\",\"h2\",null,{\"id\":\"the-pipeline-in-five-steps\",\"children\":\"The pipeline, in five steps\"}],\"\\n\",[\"$\",\"p\",null,{\"children\":\"Concretely, here is what happens when our system gets a question like that one:\"}],\"\\n\",[\"$\",\"ul\",null,{\"children\":[\"\\n\",[\"$\",\"li\",null,{\"children\":[\"\\n\",[\"$\",\"p\",null,{\"children\":[[\"$\",\"strong\",null,{\"children\":\"Pick anchors.\"}],\" Out of the millions of facts in the graph, pull a couple of dozen that \",[\"$\",\"em\",null,{\"children\":\"look\"}],\" semantically related to the question. Think of them as bookmarks: landmarks that orient the rest of the search. We pick them by cosine similarity between question and fact embeddings.\"]}],\"\\n\"]}],\"\\n\",[\"$\",\"li\",null,{\"children\":[\"\\n\",[\"$\",\"p\",null,{\"children\":[[\"$\",\"strong\",null,{\"children\":\"Expand the neighbourhood.\"}],\" Starting from the topic of the question (\",[\"$\",\"em\",null,{\"children\":\"Elbphilharmonie\"}],\") and from each anchor, walk outward across the graph for a hop or two and collect every fact you pass. You now have a candidate set of a few thousand triples.\"]}],\"\\n\"]}],\"\\n\",[\"$\",\"li\",null,{\"children\":[\"\\n\",[\"$\",\"p\",null,{\"children\":[[\"$\",\"strong\",null,{\"children\":\"Tag every entity with its position.\"}],\" For each entity in that neighbourhood, write down where it sits structurally: how far from the topic, how far from each anchor, whether it lies on a shortest path between them. Pure geometry. Nothing about meaning yet.\"]}],\"\\n\"]}],\"\\n\",[\"$\",\"li\",null,{\"children\":[\"\\n\",[\"$\",\"p\",null,{\"children\":[[\"$\",\"strong\",null,{\"children\":\"Refine, but blind the gate.\"}],\" A small graph neural network now updates each entity by listening to its neighbours. The catch: it is only allowed to read the structural tags when deciding \",[\"$\",\"em\",null,{\"children\":\"whose\"}],\" messages to amplify. Content gets updated, but content cannot influence whose voice carries. \",[\"$\",\"em\",null,{\"children\":\"That\"}],\" is the deliberate subtraction.\"]}],\"\\n\"]}],\"\\n\",\"$L12\",\"\\n\"]}],\"\\n\",\"$L13\",\"\\n\",\"$L14\",\"\\n\",\"$L15\",\"\\n\",\"$L16\",\"\\n\",\"$L17\",\"\\n\",\"$L18\",\"\\n\",\"$L19\",\"\\n\",\"$L1a\",\"\\n\",\"$L1b\",\"\\n\",\"$L1c\",\"\\n\",\"$L1d\",\"\\n\",\"$L1e\",\"\\n\",\"$L1f\",\"\\n\",\"$L20\",\"\\n\",\"$L21\",\"\\n\",\"$L22\",\"\\n\",\"$L23\",\"\\n\",\"$L24\"]\n"])</script>
88<script>self.__next_f.push([1,"25:I[19213,[\"/_next/static/chunks/034f9e6917ad56df.js?dpl=dpl_EaHBW8xvd7C4wKEVS1RTJpnBrCD7\",\"/_next/static/chunks/38f0c8c017ce8695.js?dpl=dpl_EaHBW8xvd7C4wKEVS1RTJpnBrCD7\",\"/_next/static/chunks/ff5fcf549e00d838.js?dpl=dpl_EaHBW8xvd7C4wKEVS1RTJpnBrCD7\"],\"default\"]\n12:[\"$\",\"li\",null,{\"children\":[\"\\n\",[\"$\",\"p\",null,{\"children\":[[\"$\",\"strong\",null,{\"children\":\"Score.\"}],\" A tiny scoring head rates each candidate fact for relevance, given the question and the refined entity embeddings. The top \",[\"$\",\"em\",null,{\"children\":\"k\"}],\" go to the LLM.\"]}],\"\\n\"]}]\n13:[\"$\",\"h2\",null,{\"id\":\"why-blinding-the-gate-matters\",\"children\":\"Why blinding the gate matters\"}]\n14:[\"$\",\"p\",null,{\"children\":[\"The classic problem with stacking message-passing layers in a graph is \",[\"$\",\"em\",null,{\"children\":\"oversmoothing\"}],\".\\nEach round, every node averages a little of itself toward its neighbours.\\nAfter a few rounds, every entity in a connected region looks the same.\"]}]\n15:[\"$\",\"p\",null,{\"children\":\"The standard fix is to gate the messages: let each edge decide how much of its content gets through.\\nThe natural thing to gate on is similarity, \\\"listen more to neighbours that already look like me.\\\"\\nThat is exactly where the trouble starts.\\nSimilar nodes amplify each other faster than dissimilar ones.\\nThe soup forms quicker, not slower.\\nThe previous SubgraphRAG paper saw this and concluded that GNNs hurt graph retrieval.\"}]\n16:[\"$\",\"p\",null,{\"children\":\"Our gate is forbidden from looking at content.\\nIt only reads the structural tags (distance from topic, distance from anchors, path indicators) when deciding whose voice carries.\\nThe feedback loop is severed.\"}]\n17:[\"$\",\"p\",null,{\"children\":\"Watch the loop below.\\nSame graph, same starting colours, two gates.\\nThe semantic panel collapses into a uniform soup; the structural panel barely moves.\"}]\n18:[\"$\",\"$L25\",null,{}]\n19:[\"$\",\"h2\",null,{\"id\":\"what-this-buys-us\",\"children\":\"What this buys us\"}]\n1a:[\"$\",\"p\",null,{\"children\":[\"Across all questions on the WebQSP benchmark, our retriever lifts triple recall by \",[\"$\",\"strong\",null,{\"children\":\"2.2 percentage points\"}],\" at \",[\"$\",\"em\",null,{\"children\":\"k\"}],\" = 100, from 88.3 to 90.5 (averaged over three seeds).\\nThe bigger story is multi-hop.\\nOn chained questions, the kind that broke SubgraphRAG, we are roughly \",[\"$\",\"strong\",null,{\"children\":\"five points\"}],\" ahead at \",[\"$\",\"em\",null,{\"children\":\"k\"}],\" = 100.\"]}]\n"])</script>
88<script>self.__next_f.push([1,"1b:[\"$\",\"div\",null,{\"className\":\"not-prose my-8\",\"children\":[[\"$\",\"div\",null,{\"className\":\"grid grid-cols-1 sm:grid-cols-2 gap-3\",\"children\":[[\"$\",\"div\",null,{\"className\":\"border border-border rounded-md p-3 bg-foreground/[0.02]\",\"children\":[[\"$\",\"div\",null,{\"className\":\"font-mono text-[10px] uppercase tracking-wider text-foreground/55 mb-3\",\"children\":\"Overall\"}],[\"$\",\"svg\",null,{\"viewBox\":\"0 0 320 220\",\"className\":\"w-full h-auto\",\"role\":\"img\",\"aria-label\":\"Triple recall at k for Overall\",\"children\":[[[\"$\",\"g\",\"80\",{\"children\":[[\"$\",\"line\",null,{\"x1\":38,\"y1\":190,\"x2\":306,\"y2\":190,\"stroke\":\"currentColor\",\"strokeOpacity\":0.25,\"strokeWidth\":1}],[\"$\",\"text\",null,{\"x\":32,\"y\":190,\"textAnchor\":\"end\",\"fontSize\":\"9\",\"fontFamily\":\"var(--font-geist-mono)\",\"fill\":\"currentColor\",\"opacity\":0.55,\"dominantBaseline\":\"middle\",\"children\":80}]]}],[\"$\",\"g\",\"85\",{\"children\":[[\"$\",\"line\",null,{\"x1\":38,\"y1\":146,\"x2\":306,\"y2\":146,\"stroke\":\"currentColor\",\"strokeOpacity\":0.08,\"strokeWidth\":1}],[\"$\",\"text\",null,{\"x\":32,\"y\":146,\"textAnchor\":\"end\",\"fontSize\":\"9\",\"fontFamily\":\"var(--font-geist-mono)\",\"fill\":\"currentColor\",\"opacity\":0.55,\"dominantBaseline\":\"middle\",\"children\":85}]]}],[\"$\",\"g\",\"90\",{\"children\":[[\"$\",\"line\",null,{\"x1\":38,\"y1\":102,\"x2\":306,\"y2\":102,\"stroke\":\"currentColor\",\"strokeOpacity\":0.08,\"strokeWidth\":1}],[\"$\",\"text\",null,{\"x\":32,\"y\":102,\"textAnchor\":\"end\",\"fontSize\":\"9\",\"fontFamily\":\"var(--font-geist-mono)\",\"fill\":\"currentColor\",\"opacity\":0.55,\"dominantBaseline\":\"middle\",\"children\":90}]]}],[\"$\",\"g\",\"95\",{\"children\":[[\"$\",\"line\",null,{\"x1\":38,\"y1\":58,\"x2\":306,\"y2\":58,\"stroke\":\"currentColor\",\"strokeOpacity\":0.08,\"strokeWidth\":1}],[\"$\",\"text\",null,{\"x\":32,\"y\":58,\"textAnchor\":\"end\",\"fontSize\":\"9\",\"fontFamily\":\"var(--font-geist-mono)\",\"fill\":\"currentColor\",\"opacity\":0.55,\"dominantBaseline\":\"middle\",\"children\":95}]]}],[\"$\",\"g\",\"100\",{\"children\":[[\"$\",\"line\",null,{\"x1\":38,\"y1\":14,\"x2\":306,\"y2\":14,\"stroke\":\"currentColor\",\"strokeOpacity\":0.08,\"strokeWidth\":1}],[\"$\",\"text\",null,{\"x\":32,\"y\":14,\"textAnchor\":\"end\",\"fontSize\":\"9\",\"fontFamily\":\"var(--font-geist-mono)\",\"fill\":\"currentColor\",\"opacity\":0.55,\"dominantBaseline\":\"middle\",\"children\":100}]]}]],[[\"$\",\"g\",\"50\",{\"children\":[[\"$\",\"line\",null,{\"x1\":38,\"y1\":190,\"x2\":38,\"y2\":193,\"stroke\":\"currentColor\",\"strokeOpacity\":0.35,\"strokeWidth\":1}],[\"$\",\"text\",null,{\"x\":38,\"y\":204,\"textAnchor\":\"middle\",\"fontSize\":\"9\",\"fontFamily\":\"var(--font-geist-mono)\",\"fill\":\"currentColor\",\"opacity\":0.55,\"children\":50}]]}],[\"$\",\"g\",\"100\",{\"children\":[[\"$\",\"line\",null,{\"x1\":91.6,\"y1\":190,\"x2\":91.6,\"y2\":193,\"stroke\":\"currentColor\",\"strokeOpacity\":0.35,\"strokeWidth\":1}],[\"$\",\"text\",null,{\"x\":91.6,\"y\":204,\"textAnchor\":\"middle\",\"fontSize\":\"9\",\"fontFamily\":\"var(--font-geist-mono)\",\"fill\":\"currentColor\",\"opacity\":0.55,\"children\":100}]]}],[\"$\",\"g\",\"200\",{\"children\":[[\"$\",\"line\",null,{\"x1\":145.2,\"y1\":190,\"x2\":145.2,\"y2\":193,\"stroke\":\"currentColor\",\"strokeOpacity\":0.35,\"strokeWidth\":1}],[\"$\",\"text\",null,{\"x\":145.2,\"y\":204,\"textAnchor\":\"middle\",\"fontSize\":\"9\",\"fontFamily\":\"var(--font-geist-mono)\",\"fill\":\"currentColor\",\"opacity\":0.55,\"children\":200}]]}],[\"$\",\"g\",\"300\",{\"children\":[[\"$\",\"line\",null,{\"x1\":198.79999999999998,\"y1\":190,\"x2\":198.79999999999998,\"y2\":193,\"stroke\":\"currentColor\",\"strokeOpacity\":0.35,\"strokeWidth\":1}],[\"$\",\"text\",null,{\"x\":198.79999999999998,\"y\":204,\"textAnchor\":\"middle\",\"fontSize\":\"9\",\"fontFamily\":\"var(--font-geist-mono)\",\"fill\":\"currentColor\",\"opacity\":0.55,\"children\":300}]]}],[\"$\",\"g\",\"400\",{\"children\":[[\"$\",\"line\",null,{\"x1\":252.4,\"y1\":190,\"x2\":252.4,\"y2\":193,\"stroke\":\"currentColor\",\"strokeOpacity\":0.35,\"strokeWidth\":1}
88],[\"$\",\"text\",null,{\"x\":252.4,\"y\":204,\"textAnchor\":\"middle\",\"fontSize\":\"9\",\"fontFamily\":\"var(--font-geist-mono)\",\"fill\":\"currentColor\",\"opacity\":0.55,\"children\":400}]]}],[\"$\",\"g\",\"500\",{\"children\":[[\"$\",\"line\",null,{\"x1\":306,\"y1\":190,\"x2\":306,\"y2\":193,\"stroke\":\"currentColor\",\"strokeOpacity\":0.35,\"strokeWidth\":1}],[\"$\",\"text\",null,{\"x\":306,\"y\":204,\"textAnchor\":\"middle\",\"fontSize\":\"9\",\"fontFamily\":\"var(--font-geist-mono)\",\"fill\":\"currentColor\",\"opacity\":0.55,\"children\":500}]]}]],[\"$\",\"text\",null,{\"x\":172,\"y\":216,\"textAnchor\":\"middle\",\"fontSize\":\"9\",\"fontFamily\":\"var(--font-geist-mono)\",\"fill\":\"currentColor\",\"opacity\":0.4,\"children\":\"k\"}],[[\"$\",\"g\",\"0\",{\"children\":[[\"$\",\"path\",null,{\"d\":\"M 38 166.23999999999998 L 91.6 115.19999999999999 L 145.2 74.72000000000006 L 198.79999999999998 58 L 252.4 44.80000000000001 L 306 38.639999999999986\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeOpacity\":0.5,\"strokeWidth\":1,\"strokeDasharray\":\"3 3\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\"}],[[\"$\",\"circle\",\"0\",{\"cx\":38,\"cy\":166.23999999999998,\"r\":2,\"fill\":\"var(--background)\",\"stroke\":\"currentColor\",\"strokeOpacity\":0.5,\"strokeWidth\":1}],[\"$\",\"circle\",\"1\",{\"cx\":91.6,\"cy\":115.19999999999999,\"r\":2,\"fill\":\"var(--background)\",\"stroke\":\"currentColor\",\"strokeOpacity\":0.5,\"strokeWidth\":1}],[\"$\",\"circle\",\"2\",{\"cx\":145.2,\"cy\":74.72000000000006,\"r\":2,\"fill\":\"var(--background)\",\"stroke\":\"currentColor\",\"strokeOpacity\":0.5,\"strokeWidth\":1}],[\"$\",\"circle\",\"3\",{\"cx\":198.79999999999998,\"cy\":58,\"r\":2,\"fill\":\"var(--background)\",\"stroke\":\"currentColor\",\"strokeOpacity\":0.5,\"strokeWidth\":1}],[\"$\",\"circle\",\"4\",{\"cx\":252.4,\"cy\":44.80000000000001,\"r\":2,\"fill\":\"var(--background)\",\"stroke\":\"currentColor\",\"strokeOpacity\":0.5,\"strokeWidth\":1}],[\"$\",\"circle\",\"5\",{\"cx\":306,\"cy\":38.639999999999986,\"r\":2,\"fill\":\"var(--background)\",\"stroke\":\"currentColor\",\"strokeOpacity\":0.5,\"strokeWidth\":1}]]]}],\"$L26\"]]}]]}],\"$L27\"]}],\"$L28\",\"$L29\"]}]\n"])</script>
88<script>self.__next_f.push([1,"1c:[\"$\",\"p\",null,{\"children\":\"Two ablations are worth pulling out:\"}]\n1d:[\"$\",\"ul\",null,{\"children\":[\"\\n\",[\"$\",\"li\",null,{\"children\":[[\"$\",\"strong\",null,{\"children\":\"Removing the structural gate\"}],\" while keeping the GNN halves the gain over SubgraphRAG at \",[\"$\",\"em\",null,{\"children\":\"k\"}],\" = 100, from two points down to one. The gate is doing the work, not the GNN alone.\"]}],\"\\n\",[\"$\",\"li\",null,{\"children\":[[\"$\",\"strong\",null,{\"children\":\"Removing the GNN entirely\"}],\" is the largest single ablation, costing 5.4 points of recall. Put together: the structurally-gated GNN is the biggest contributor to the result.\"]}],\"\\n\"]}]\n1e:[\"$\",\"h2\",null,{\"id\":\"what-this-changes\",\"children\":\"What this changes\"}]\n1f:[\"$\",\"p\",null,{\"children\":[\"SubgraphRAG's authors concluded that GNNs hurt graph retrieval, and blamed semantic diffusion noise for it.\\nThat conclusion held for the GNN they tried, which was unconstrained.\\nOur result reverses it: with a structural-only gate, the GNN becomes the single biggest contributor to recall.\\nTurns out, GNNs are not broken for retrieval.\\nThey just need a \",[\"$\",\"em\",null,{\"children\":\"smaller job\"}],\".\"]}]\n20:[\"$\",\"h2\",null,{\"id\":\"caveats-and-a-closing-thought\",\"children\":\"Caveats and a closing thought\"}]\n21:[\"$\",\"p\",null,{\"children\":\"This is a project result, not a production system.\\nWe have evaluated retrieval, not the answer the LLM produces with the retrieved facts.\\nWhether the recall gain translates to fewer hallucinated answers is a separate experiment we have not run.\"}]\n22:[\"$\",\"p\",null,{\"children\":\"Still, the architectural lesson generalises beyond this project.\\nWhen a part of your model is causing trouble, sometimes the right move is not to give it more information.\\nIt is to take some away.\"}]\n23:[\"$\",\"blockquote\",null,{\"children\":[\"\\n\",[\"$\",\"p\",null,{\"children\":[\"In a graph, \",[\"$\",\"em\",null,{\"children\":\"where you are\"}],\" is sometimes more useful than \",[\"$\",\"em\",null,{\"children\":\"what you mean\"}],\".\"]}],\"\\n\"]}]\n24:[\"$\",\"section\",null,{\"data-footnotes\":true,\"className\":\"footnotes\",\"children\":[[\"$\",\"h2\",null,{\"id\":\"footnote-label\",\"className\":\"sr-only\",\"children\":\"Footnotes\"}],\"\\n\",[\"$\",\"ol\",null,{\"children\":[\"\\n\",[\"$\",\"li\",null,{\"id\":\"user-content-fn-bitter\",\"children\":[\"\\n\",[\"$\",\"p\",null,{\"children\":[\"Rich Sutton, \",[\"$\",\"a\",null,{\"href\":\"http://www.incompleteideas.net/IncIdeas/BitterLesson.html\",\"children\":\"The Bitter Lesson\"}],\" (2019). The methods that have actually worked in AI, over and over, are the ones that scale with compute and lean on general learning rather than hand-engineered structure. This post is a small exception, on a task where the structure being learned is the data. \",[\"$\",\"a\",null,{\"href\":\"#user-content-fnref-bitter\",\"data-footnote-backref\":\"\",\"aria-label\":\"Back to reference 1\",\"className\":\"data-footnote-backref\",\"children\":\"↩\"}]]}],\"\\n\"]}],\"\\n\"]}],\"\\n\"]}]\n"])</script>
88<script>self.__next_f.push([1,"26:[\"$\",\"g\",\"1\",{\"children\":[[\"$\",\"path\",null,{\"d\":\"M 38 148.64 L 91.6 97.6 L 145.2 63.279999999999944 L 198.79999999999998 49.19999999999999 L 252.4 40.400000000000006 L 306 33.360000000000014\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeOpacity\":0.9,\"strokeWidth\":1.75,\"strokeDasharray\":\"none\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\"}],[[\"$\",\"circle\",\"0\",{\"cx\":38,\"cy\":148.64,\"r\":2.6,\"fill\":\"currentColor\",\"stroke\":\"currentColor\",\"strokeOpacity\":0.9,\"strokeWidth\":1}],[\"$\",\"circle\",\"1\",{\"cx\":91.6,\"cy\":97.6,\"r\":2.6,\"fill\":\"currentColor\",\"stroke\":\"currentColor\",\"strokeOpacity\":0.9,\"strokeWidth\":1}],[\"$\",\"circle\",\"2\",{\"cx\":145.2,\"cy\":63.279999999999944,\"r\":2.6,\"fill\":\"currentColor\",\"stroke\":\"currentColor\",\"strokeOpacity\":0.9,\"strokeWidth\":1}],[\"$\",\"circle\",\"3\",{\"cx\":198.79999999999998,\"cy\":49.19999999999999,\"r\":2.6,\"fill\":\"currentColor\",\"stroke\":\"currentColor\",\"strokeOpacity\":0.9,\"strokeWidth\":1}],[\"$\",\"circle\",\"4\",{\"cx\":252.4,\"cy\":40.400000000000006,\"r\":2.6,\"fill\":\"currentColor\",\"stroke\":\"currentColor\",\"strokeOpacity\":0.9,\"strokeWidth\":1}],[\"$\",\"circle\",\"5\",{\"cx\":306,\"cy\":33.360000000000014,\"r\":2.6,\"fill\":\"currentColor\",\"stroke\":\"currentColor\",\"strokeOpacity\":0.9,\"strokeWidth\":1}]]]}]\n"])</script>
88<script>self.__next_f.push([1,"27:[\"$\",\"div\",null,{\"className\":\"border border-border rounded-md p-3 bg-foreground/[0.02]\",\"children\":[[\"$\",\"div\",null,{\"className\":\"font-mono text-[10px] uppercase tracking-wider text-foreground/55 mb-3\",\"children\":\"Multi-hop\"}],[\"$\",\"svg\",null,{\"viewBox\":\"0 0 320 220\",\"className\":\"w-full h-auto\",\"role\":\"img\",\"aria-label\":\"Triple recall at k for Multi-hop\",\"children\":[[[\"$\",\"g\",\"60\",{\"children\":[[\"$\",\"line\",null,{\"x1\":38,\"y1\":190,\"x2\":306,\"y2\":190,\"stroke\":\"currentColor\",\"strokeOpacity\":0.25,\"strokeWidth\":1}],[\"$\",\"text\",null,{\"x\":32,\"y\":190,\"textAnchor\":\"end\",\"fontSize\":\"9\",\"fontFamily\":\"var(--font-geist-mono)\",\"fill\":\"currentColor\",\"opacity\":0.55,\"dominantBaseline\":\"middle\",\"children\":60}]]}],[\"$\",\"g\",\"70\",{\"children\":[[\"$\",\"line\",null,{\"x1\":38,\"y1\":146,\"x2\":306,\"y2\":146,\"stroke\":\"currentColor\",\"strokeOpacity\":0.08,\"strokeWidth\":1}],[\"$\",\"text\",null,{\"x\":32,\"y\":146,\"textAnchor\":\"end\",\"fontSize\":\"9\",\"fontFamily\":\"var(--font-geist-mono)\",\"fill\":\"currentColor\",\"opacity\":0.55,\"dominantBaseline\":\"middle\",\"children\":70}]]}],[\"$\",\"g\",\"80\",{\"children\":[[\"$\",\"line\",null,{\"x1\":38,\"y1\":102,\"x2\":306,\"y2\":102,\"stroke\":\"currentColor\",\"strokeOpacity\":0.08,\"strokeWidth\":1}],[\"$\",\"text\",null,{\"x\":32,\"y\":102,\"textAnchor\":\"end\",\"fontSize\":\"9\",\"fontFamily\":\"var(--font-geist-mono)\",\"fill\":\"currentColor\",\"opacity\":0.55,\"dominantBaseline\":\"middle\",\"children\":80}]]}],[\"$\",\"g\",\"90\",{\"children\":[[\"$\",\"line\",null,{\"x1\":38,\"y1\":58,\"x2\":306,\"y2\":58,\"stroke\":\"currentColor\",\"strokeOpacity\":0.08,\"strokeWidth\":1}],[\"$\",\"text\",null,{\"x\":32,\"y\":58,\"textAnchor\":\"end\",\"fontSize\":\"9\",\"fontFamily\":\"var(--font-geist-mono)\",\"fill\":\"currentColor\",\"opacity\":0.55,\"dominantBaseline\":\"middle\",\"children\":90}]]}],[\"$\",\"g\",\"100\",{\"children\":[[\"$\",\"line\",null,{\"x1\":38,\"y1\":14,\"x2\":306,\"y2\":14,\"stroke\":\"currentColor\",\"strokeOpacity\":0.08,\"strokeWidth\":1}],[\"$\",\"text\",null,{\"x\":32,\"y\":14,\"textAnchor\":\"end\",\"fontSize\":\"9\",\"fontFamily\":\"var(--font-geist-mono)\",\"fill\":\"currentColor\",\"opacity\":0.55,\"dominantBaseline\":\"middle\",\"children\":100}]]}]],[[\"$\",\"g\",\"50\",{\"children\":[[\"$\",\"line\",null,{\"x1\":38,\"y1\":190,\"x2\":38,\"y2\":193,\"stroke\":\"currentColor\",\"strokeOpacity\":0.35,\"strokeWidth\":1}],[\"$\",\"text\",null,{\"x\":38,\"y\":204,\"textAnchor\":\"middle\",\"fontSize\":\"9\",\"fontFamily\":\"var(--font-geist-mono)\",\"fill\":\"currentColor\",\"opacity\":0.55,\"children\":50}]]}],[\"$\",\"g\",\"100\",{\"children\":[[\"$\",\"line\",null,{\"x1\":91.6,\"y1\":190,\"x2\":91.6,\"y2\":193,\"stroke\":\"currentColor\",\"strokeOpacity\":0.35,\"strokeWidth\":1}],[\"$\",\"text\",null,{\"x\":91.6,\"y\":204,\"textAnchor\":\"middle\",\"fontSize\":\"9\",\"fontFamily\":\"var(--font-geist-mono)\",\"fill\":\"currentColor\",\"opacity\":0.55,\"children\":100}]]}],[\"$\",\"g\",\"200\",{\"children\":[[\"$\",\"line\",null,{\"x1\":145.2,\"y1\":190,\"x2\":145.2,\"y2\":193,\"stroke\":\"currentColor\",\"strokeOpacity\":0.35,\"strokeWidth\":1}],[\"$\",\"text\",null,{\"x\":145.2,\"y\":204,\"textAnchor\":\"middle\",\"fontSize\":\"9\",\"fontFamily\":\"var(--font-geist-mono)\",\"fill\":\"currentColor\",\"opacity\":0.55,\"children\":200}]]}],[\"$\",\"g\",\"300\",{\"children\":[[\"$\",\"line\",null,{\"x1\":198.79999999999998,\"y1\":190,\"x2\":198.79999999999998,\"y2\":193,\"stroke\":\"currentColor\",\"strokeOpacity\":0.35,\"strokeWidth\":1}],[\"$\",\"text\",null,{\"x\":198.79999999999998,\"y\":204,\"textAnchor\":\"middle\",\"fontSize\":\"9\",\"fontFamily\":\"var(--font-geist-mono)\",\"fill\":\"currentColor\",\"opacity\":0.55,\"children\":300}]]}],[\"$\",\"g\",\"400\",{\"children\":[[\"$\",\"line\",null,{\"x1\":252.4,\"y1\":190,\"x2\":252.4,\"y2\":193,\"stroke\":\"currentColor\",\"strokeOpacity\":0.35,\"strokeWidth\":1}
88],[\"$\",\"text\",null,{\"x\":252.4,\"y\":204,\"textAnchor\":\"middle\",\"fontSize\":\"9\",\"fontFamily\":\"var(--font-geist-mono)\",\"fill\":\"currentColor\",\"opacity\":0.55,\"children\":400}]]}],[\"$\",\"g\",\"500\",{\"children\":[[\"$\",\"line\",null,{\"x1\":306,\"y1\":190,\"x2\":306,\"y2\":193,\"stroke\":\"currentColor\",\"strokeOpacity\":0.35,\"strokeWidth\":1}],[\"$\",\"text\",null,{\"x\":306,\"y\":204,\"textAnchor\":\"middle\",\"fontSize\":\"9\",\"fontFamily\":\"var(--font-geist-mono)\",\"fill\":\"currentColor\",\"opacity\":0.55,\"children\":500}]]}]],[\"$\",\"text\",null,{\"x\":172,\"y\":216,\"textAnchor\":\"middle\",\"fontSize\":\"9\",\"fontFamily\":\"var(--font-geist-mono)\",\"fill\":\"currentColor\",\"opacity\":0.4,\"children\":\"k\"}],[[\"$\",\"g\",\"0\",{\"children\":[[\"$\",\"path\",null,{\"d\":\"M 38 168 L 91.6 128.4 L 145.2 91 L 198.79999999999998 69 L 252.4 53.599999999999994 L 306 44.80000000000001\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeOpacity\":0.5,\"strokeWidth\":1,\"strokeDasharray\":\"3 3\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\"}],[[\"$\",\"circle\",\"0\",{\"cx\":38,\"cy\":168,\"r\":2,\"fill\":\"var(--background)\",\"stroke\":\"currentColor\",\"strokeOpacity\":0.5,\"strokeWidth\":1}],[\"$\",\"circle\",\"1\",{\"cx\":91.6,\"cy\":128.4,\"r\":2,\"fill\":\"var(--background)\",\"stroke\":\"currentColor\",\"strokeOpacity\":0.5,\"strokeWidth\":1}],[\"$\",\"circle\",\"2\",{\"cx\":145.2,\"cy\":91,\"r\":2,\"fill\":\"var(--background)\",\"stroke\":\"currentColor\",\"strokeOpacity\":0.5,\"strokeWidth\":1}],[\"$\",\"circle\",\"3\",{\"cx\":198.79999999999998,\"cy\":69,\"r\":2,\"fill\":\"var(--background)\",\"stroke\":\"currentColor\",\"strokeOpacity\":0.5,\"strokeWidth\":1}],[\"$\",\"circle\",\"4\",{\"cx\":252.4,\"cy\":53.599999999999994,\"r\":2,\"fill\":\"var(--background)\",\"stroke\":\"currentColor\",\"strokeOpacity\":0.5,\"strokeWidth\":1}],[\"$\",\"circle\",\"5\",{\"cx\":306,\"cy\":44.80000000000001,\"r\":2,\"fill\":\"var(--background)\",\"stroke\":\"currentColor\",\"strokeOpacity\":0.5,\"strokeWidth\":1}]]]}],[\"$\",\"g\",\"1\",{\"children\":[[\"$\",\"path\",null,{\"d\":\"M 38 146 L 91.6 106.4 L 145.2 69 L 198.79999999999998 51.400000000000006 L 252.4 42.599999999999994 L 306 38.19999999999999\",\"fill\":\"none\",\"stroke\":\"currentColor\",\"strokeOpacity\":0.9,\"strokeWidth\":1.75,\"strokeDasharray\":\"none\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\"}],[\"$L2a\",\"$L2b\",\"$L2c\",\"$L2d\",\"$L2e\",\"$L2f\"]]}]]]}]]}]\n"])</script>
88<script>self.__next_f.push([1,"28:[\"$\",\"div\",null,{\"className\":\"mt-4 flex items-center justify-center gap-6\",\"children\":[[\"$\",\"div\",null,{\"className\":\"flex items-center gap-2\",\"children\":[[\"$\",\"svg\",null,{\"width\":\"22\",\"height\":\"2\",\"viewBox\":\"0 0 22 2\",\"className\":\"overflow-visible\",\"aria-hidden\":\"true\",\"children\":[\"$\",\"line\",null,{\"x1\":0,\"y1\":1,\"x2\":22,\"y2\":1,\"stroke\":\"currentColor\",\"strokeOpacity\":0.5,\"strokeDasharray\":\"3 3\",\"strokeWidth\":1}]}],[\"$\",\"span\",null,{\"className\":\"font-mono text-[10px] text-foreground/55\",\"children\":\"SubgraphRAG\"}]]}],[\"$\",\"div\",null,{\"className\":\"flex items-center gap-2\",\"children\":[[\"$\",\"svg\",null,{\"width\":\"22\",\"height\":\"2\",\"viewBox\":\"0 0 22 2\",\"className\":\"overflow-visible\",\"aria-hidden\":\"true\",\"children\":[\"$\",\"line\",null,{\"x1\":0,\"y1\":1,\"x2\":22,\"y2\":1,\"stroke\":\"currentColor\",\"strokeOpacity\":0.9,\"strokeWidth\":1.75}]}],[\"$\",\"span\",null,{\"className\":\"font-mono text-[10px] text-foreground/55\",\"children\":\"ASR (ours)\"}]]}]]}]\n29:[\"$\",\"div\",null,{\"className\":\"mt-3 text-xs text-foreground/55 text-center font-mono\",\"children\":\"Triple recall@k on WebQSP test set. Higher is better.\"}]\n"])</script>
88<script>self.__next_f.push([1,"2a:[\"$\",\"circle\",\"0\",{\"cx\":38,\"cy\":146,\"r\":2.6,\"fill\":\"currentColor\",\"stroke\":\"currentColor\",\"strokeOpacity\":0.9,\"strokeWidth\":1}]\n2b:[\"$\",\"circle\",\"1\",{\"cx\":91.6,\"cy\":106.4,\"r\":2.6,\"fill\":\"currentColor\",\"stroke\":\"currentColor\",\"strokeOpacity\":0.9,\"strokeWidth\":1}]\n2c:[\"$\",\"circle\",\"2\",{\"cx\":145.2,\"cy\":69,\"r\":2.6,\"fill\":\"currentColor\",\"stroke\":\"currentColor\",\"strokeOpacity\":0.9,\"strokeWidth\":1}]\n2d:[\"$\",\"circle\",\"3\",{\"cx\":198.79999999999998,\"cy\":51.400000000000006,\"r\":2.6,\"fill\":\"currentColor\",\"stroke\":\"currentColor\",\"strokeOpacity\":0.9,\"strokeWidth\":1}]\n2e:[\"$\",\"circle\",\"4\",{\"cx\":252.4,\"cy\":42.599999999999994,\"r\":2.6,\"fill\":\"currentColor\",\"stroke\":\"currentColor\",\"strokeOpacity\":0.9,\"strokeWidth\":1}]\n2f:[\"$\",\"circle\",\"5\",{\"cx\":306,\"cy\":38.19999999999999,\"r\":2.6,\"fill\":\"currentColor\",\"stroke\":\"currentColor\",\"strokeOpacity\":0.9,\"strokeWidth\":1}]\n"])</script>
88</body></html>

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.