Project · v0 · predicted, not yet measured

Seven RAGs, one shelf. The pattern is the product.

Retrieval-augmented generation is not one technique any more. It is seven designs that solve seven different problems, and most teams pick one by accident. This page runs all seven on the same small, real knowledge base and the same six questions, so the only thing that changes between columns is the architecture.

The knowledge base is my own bookshelf: a Goodreads export, my Kindle highlights, a list of who recommended what, and a few photographed pages. I chose it because I can tell a right answer from a plausible one in a second, which is the whole job when you evaluate retrieval, and because "it invented a book I never read" is the most legible failure a RAG system can have. Every trace below is a prediction of how each pipeline handles the question. Nothing is measured yet. The method page says what gets measured and when.

height = predicted score out of 6 (correct 1, partial ½) · width = cost vs naive · both predicted, not measuredpick a spine to open its trace ↓

§01 · The thesisMost RAG systems don't break on the model. They break on the pattern.

Teams upgrade the embedding model, switch to a stronger LLM, add more chunks to the prompt, and still get shallow or wrong answers. The reason is usually upstream of the model: the retrieval design cannot reach the information the question needs. Similarity search has no idea what "2024" or "under 300 pages" means. A text index cannot look at a photograph. A single retriever cannot see that two books argue with each other, because that fact lives in neither book. And no retrieval at all can compose four constraints into a reading list.

The real skill isn't building RAG. It's choosing the right pattern for the problem, and being able to show why.

Comparing patterns on different demos measures the demos. To compare the patterns you need to hold everything else still: same corpus, same questions, same generation model, and answers you can grade. That is what this page does.

§02 · One shelfA real reading life, exported in an afternoon, messy in exactly the ways that matter

Three files and a handful of photos. The Goodreads export is the ledger: every book, when I read it, what I rated it, how long it is, what everyone else rated it, and the review I wrote. The Kindle clippings are the quotes: one short highlight per block, hundreds of them. A hand-written list says who recommended what. Nothing is fabricated, private notes are never ingested, and the export is curated before it goes anywhere near a public page.

Numbers live in a ledger, not in text"What did I read in 2024, rated five stars, under 300 pages?" is a filter, not a similarity. A text index answers it with plausible titles, some of which I never read.breaks every pattern without a tool · fixed by a query
Sources contradict each otherMy two-star review, my own admiring highlights from the same book, and the crowd's 4.3 average all describe one book. Similarity finds the highlights first.breaks naive · fixed by reranking
Knowledge lives in relationshipsWhich of my books argue with each other is a fact about a pair, extracted from a highlight in one that names the author of the other. No single chunk contains it.breaks vector search · fixed by graph
Some answers are only in picturesA photographed page has no text to match. Which book it is, and what I marked nearby, starts from pixels.breaks text-only · fixed by multimodal
Some questions need several sourcesA holiday reading list needs the to-read shelf, page counts, who recommended what, and the themes of the last three books I gave up on.breaks single-path · fixed by multi-agent
I can grade every answerIt is my shelf. A wrong date, a misattributed quote, a book I never read: I see it in one second, and the invented-book count can be checked by code.why this corpus and not an enterprise demo

The corpus

sourcewhat it holdswhat it contributes
Goodreads exportone row per book: title, author, ISBN, pages, date read, my rating, the average rating, shelves, my reviewthe ledger. Queried, never embedded.
Kindle highlightsone short quotation per block, with book, location and datethe semantic index, and the misattribution trap: a highlight in one book quoting another author
Recommendationstitle, who (initials), where, whenthe people edges in the graph
Photoscovers, a few photographed pages, one shelfanswers with no text form
Extracted graphwho wrote what, who recommended what, which books mention or argue with which, themesbuilt once by a model with a fixed schema, published as JSON so a missed edge is visible

The six questions

One per failure mode, plus one that everything should get right. Each has a reference answer written before any pipeline runs. The exact titles get fixed once the export is inspected; the shape of each question does not change. The graded predictions are in the explorer below.

§03 · Same question, seven pipelinesPick a pattern, pick a question, read what the pipeline is expected to do

Each trace shows what gets retrieved, in what order, what the model is given, and the answer it is likely to produce, graded against the reference. The "why" line under each answer is the point of the page.

What it adds
What it costs
How it fails

stepwhat the pipeline is expected to do
predicted answerpredicted

v0: every trace on this page is a prediction written from how the pipeline is designed and what the corpus contains. No pipeline has run. Each cell is replaced by a real trace, with the date, as the version that measures it ships; the schedule is on the method page.

§04 · The scorecardNobody wins every column, and the cheapest pattern wins the first one

predicted correct partial or generic wrong or invented· click a square to open its trace

Three things to read off the grid. Every pattern gets the easy question right, so the easy question tells you nothing about which pattern to use. The Q2 column splits the table cleanly into patterns with a tool and patterns without one, and no amount of embedding quality moves a pattern across that line. And reranking fixes the most common failure for the price of one extra call, which is why it should be the first upgrade, not the graph.

The prediction I most expect to be wrong is naive on Q1. Kindle highlights are short, so the nearest chunk is sometimes a different book quoting the same author. If that happens, Q1 stops being a control and reranking earns its call one column earlier.

§05 · ChoosingFive questions to ask about the problem before you pick a pattern

Are people asking for numbers, dates, counts, or filters?
Then the answer is a query, not a similarity. Give the model a tool over the structured data and route those questions to it. Embedding a ledger is how a system invents a book you never read.
Do the sources disagree with each other about the same thing?
They almost always do once a corpus is bigger than a demo. Start naive, add reranking early. It is the cheapest fix for the noisiest failure and it costs one extra model call.
Is the answer a relationship between things, rather than a fact about one thing?
Who recommended what, which books argue, what depends on what. Graph RAG, or hybrid if you also need the prose around each node. Budget for building and maintaining the graph; that is where the cost is.
Does the answer only exist in an image, diagram, or chart?
Then no amount of text retrieval will find it. Multimodal RAG, composed with reranking, because it inherits every text-ranking problem it does not fix.
Do users ask for a deliverable that needs several sources combined?
A plan, a list, a comparison. An agentic router chooses the right single path per query. Only multi-agent composes several. It is the slowest and most expensive row for a reason.

Don't start complex. Start naive, add reranking, give the model a tool for the numbers, and evolve only when a fixed question set shows you the failure the next pattern fixes. A design space is only useful if you can say which point in it you are standing on, and why.

Built by Shirley · v0, 9 September 2026 · The Librarian: how it's built →