THOUGHT LEADERSHIP

Your Knowledge Base Is Not a Retrieval Index

July 31, 2026 11 min read

FireFoundry Team

Platform

Two products can offer you a "knowledge base" and mean entirely different things. One means a capability your organization owns, with a steward who decides what belongs in it. The other means a retrieval configuration a developer set up one afternoon. Both descriptions are honest. Only one survives a compliance review.

The same split runs through the retrieval itself, and that is the half worth understanding first, because most RAG running in production today is the shallow version and its failures are quiet.

Naive RAG, and why it disappoints

The default recipe is four steps. Split each document into fixed-size chunks. Embed each chunk. At query time, embed the question and take the top k by cosine similarity. Paste the winners into the prompt.

It is easy to build, which is why it is everywhere, and it fails in ways that are hard to see from outside:

Notice that none of these produce an error. The pipeline reports success, the endpoint returns text, and the model answers fluently from bad context. That is what makes naive RAG expensive: it fails silently, and the first person to notice is usually a user who trusted the answer.

Semantic RAG: the document becomes a graph

The alternative — sometimes called graph RAG, though semantic RAG describes the intent better — changes what ingestion produces. Instead of a flat list of chunks, a document becomes an entity subgraph: documents, sections, pages, chunks, tables and figures, wired together with typed edges.

That structural difference pays off at every later stage:

And because a knowledge base is a partition of the entity graph rather than a parallel store, ingested content sits alongside the rest of your application's data — inspectable, joinable and extensible through the same APIs. That is also what makes it governable, instead of an opaque index someone has to take on trust.

What that looks like in practice

Ingestion is one call that returns immediately with a workflow handle, because building a subgraph with embeddings and summaries at several granularities is a multi-minute job and nobody should hold an HTTP request open for it:

curl -X POST "https://<gateway-host>/api/kb-ingest" \
  -H "Content-Type: application/json" \
  -d '{
    "kbId": "kb-partition-uuid",
    "documentId": "doc-uuid",
    "blobPath": "s3://corpus/2024-annual-report.pdf",
    "config": {
      "extractionMode": "layout",
      "chunkingStrategy": "semantic",
      "maxChunkTokens": 512,
      "summarizationLevels": ["compressed", "summary"]
    }
  }'

Querying asks for a token budget rather than a chunk count. That is the tell that you are talking to a graph rather than a list — the agent decides how many sources, and at which detail level, to spend that budget on:

curl -X POST "https://<gateway-host>/api/rag-query" \
  -H "Content-Type: application/json" \
  -d '{
    "query": "What are the key findings about error rates in production systems?",
    "kbIds": ["kb-partition-uuid"],
    "maxTokens": 4096,
    "strategy": {
      "maxIterations": 5,
      "detailLevel": "auto",
      "searchMode": "hybrid",
      "includeMetadataFilters": { "published_date": { "gte": "2024-01-01" } }
    }
  }'

And the response carries its own provenance, chunk by chunk, with the level each source was read at:

{
  "context": "The key findings indicate that error rates in production systems...",
  "sources": [
    {
      "documentId": "doc-uuid",
      "chunkId": "chunk-uuid",
      "title": "Production Error Rate Analysis",
      "relevance": 0.92,
      "detailLevel": "full_text"
    }
  ],
  "iterations": 3,
  "tokenCount": 3847
}

"iterations": 3 is worth pausing on. That query searched, considered what it found, and searched again twice before it was satisfied. Naive RAG has no equivalent field, because it only ever gets one attempt.

A failure mode that survives both

Better architecture does not exempt you from checking that ingestion worked. A hard-won warning: a pipeline that reports success has told you documents were processed. It has not told you the resulting chunks are useful, or in some cases that they contain anything at all.

Empty and near-empty chunks embed perfectly happily. They index. They are simply never usefully retrieved. The pipeline is green and the knowledge base is hollow, and nobody finds out until someone asks a question the corpus should have answered and gets a confident non-answer.

So validate chunk quality inside the pipeline rather than in a post-incident review: assert that embedded count equals chunk count per document, and probe the vector store for a non-zero hit before declaring the ingest complete. The lesson travels well beyond RAG — a component reporting a negative should say which negative it means. "I checked and found nothing" and "I could not check" look identical in a log line and mean opposite things.

The governance half

Architecture is only part of what separates a knowledge base from an index. The rest is ownership, and it needs four things that have nothing to do with vectors:

In FireFoundry a knowledge base is a managed asset: created and administered in the Console, fed by the managed ingestion pipeline above, and governed by access controls that name applications, agents, and real end users and groups †.

† In beta or active development.

The questions to ask

Of any platform's knowledge capability, ask two things. What does ingestion actually produce — a list or a graph? And who owns this knowledge, and who approved it? If the answers are "a list" and "whoever has write access to the storage account", you have a retrieval index. That may be all you need. Just do not find out during an audit.

More on where that second question comes from in What Each Enterprise AI Product Is Actually Selling, or explore the platform.

FireFoundry Team

Product

The FireFoundry team builds enterprise infrastructure for AI agents. We are engineers, product thinkers, and operators who have spent years building and scaling production AI systems. Our mission is to close the gap between AI prototypes and production-grade software.

Related Posts

Request Beta Access

FireFoundry is now in private beta. Join the teams who decided to buy their AI operating environment rather than assemble one.