← Back to work

Agentic RAG over the Real IETF RFC Corpus

Personal — RAG & Retrieval Systems · 2026

Cited, revision-aware retrieval over 321,124 real IETF RFC chunks, with zero LLM in the answer path. It resolves the real RFC 2616 → 7230–7235 six-way obsoletion exactly — by walking a supersession graph, not by hoping retrieval gets it right.

321,124
real ingested chunks measured RFC text + index + errata + IANA registries
~12s / query
native Qdrant retrieval measured ~16× faster than a prior pure-Python scan, this hardware
6-way
RFC 2616→7230–7235 obsoletion resolved exactly measured supersession graph walk, not retrieval
  • RAG
  • Qdrant
  • BAAI/bge embeddings
  • MCP
  • Citation-gating
  • Knowledge graphs
  • Python

Context

Most RAG demos answer confidently and cite nothing. This one is built the other way around: over the full public IETF RFC corpus — the documents that define the internet — it retrieves, cites the exact source, and abstains when the evidence is thin. No language model sits in the answer path, so it cannot smooth over a gap by inventing one.

It is a standalone, public build — the same retrieval-and-verification discipline I apply to a proprietary corpus at work, on an open corpus anyone can inspect.

What I built

  • Real ingestion at scale — 321,124 chunks from RFC text, the RFC index, errata, and IANA registries, embedded with BAAI/bge-base-en-v1.5 into Qdrant.
  • Revision-aware answers — a supersession graph means a question about HTTP/1.1 resolves the real RFC 2616 → 7230–7235 six-way split exactly, by walking obsoletion edges rather than trusting nearest-neighbor retrieval.
  • Citation-gating — every claim is bound to a source span or it is not made.
  • An MCP server exposing the whole thing as tools an agent can call.

Why it matters

Retrieval that is fast and honest about what it does not know is the hard part of RAG, and the part most demos skip. Native Qdrant search brought a query from a ~16× slower pure-Python scan down to about 12 seconds on my hardware — and the answer path stays deterministic and inspectable end to end.