Vertiva :: Whitepaper

Building a Data Lakehouse for RAG/LLM Systems

A practical, step-by-step guide for enterprise leaders — what the foundation underneath a retrieval-augmented AI system actually needs to look like, and in what order to build it.

← Back to Vertiva Resources

Executive Summary

Every enterprise RAG (retrieval-augmented generation) initiative eventually runs into the same realization: the language model was never the hard part. The hard part is building a governed, continuously updated store of the organization's actual knowledge — ingested from dozens of messy sources, cleaned and chunked correctly, tagged with who's allowed to see it, indexed in a form a model can retrieve from accurately, and kept that way as both the data and the models underneath it change. That store is a data lakehouse: object storage with a transactional table layer on top, structured to serve both traditional analytics and AI retrieval from one governed copy of the truth rather than two drifting ones.

This paper lays out a concrete, ordered build plan — thirteen steps, each with a worked example — for standing up a lakehouse purpose-built to feed a RAG/LLM system, drawing on current data-engineering practice and on the architecture patterns used in Vertiva's own platform program as a working illustration throughout.

1. Why a Lakehouse, Specifically, for RAG

A data lake alone gives an enterprise cheap, flexible storage but no transactional guarantees — no reliable way to know a write finished cleanly, no schema enforcement, no easy way to fix or delete a bad record without a full rewrite. A data warehouse gives strong guarantees but is built for structured, tabular BI queries, not the sprawling mix of PDFs, transcripts, images, and database change feeds a RAG system actually needs to draw from. The lakehouse pattern exists specifically to close that gap: cheap object storage, with an open table format providing ACID transactions, schema evolution, and time travel on top of it, so both a BI analyst's SQL query and an AI pipeline's embedding job can read from the same governed data without maintaining two separate systems that quietly disagree with each other.

For a RAG system specifically, this matters even more than for a typical analytics workload, because RAG has a failure mode traditional data platforms don't: the "AI data swamp," where unstructured content is ingested for a model project without provenance, versioning, or deduplication tracking, and nobody can later explain why the model gave a particular answer. A lakehouse built with AI retrieval in mind from the start is the direct antidote to that failure mode.

2. The Reference Architecture at a Glance

LayerPurpose
Object storageCheap, durable, infinitely scalable storage (S3, ADLS, GCS) underneath everything else
Open table formatApache Iceberg, Delta Lake, or Apache Hudi — adds ACID transactions, schema evolution, and time travel on top of raw files
Catalog & governanceUnity Catalog, AWS Glue/Lake Formation, or an equivalent — one shared, access-controlled catalog for every consumer of the data
Compute engineSpark, Ray, Flink, or Trino — decoupled from storage so it can scale independently and be swapped without moving the data
Medallion zonesBronze (raw), Silver (cleaned/chunked), Gold (serving-ready per retrieval sink) — the organizing structure for everything ingested
Retrieval sinksVector store (Qdrant, Pinecone, Weaviate), lexical/keyword index (Elasticsearch), knowledge graph (Neo4j) — fed from the same Gold layer

Table-format guidance from current practice: Iceberg is the strongest default for new, engine-agnostic builds; Delta Lake is the natural choice inside a Databricks-heavy stack; Hudi is favored when change-data-capture and frequent upserts are the dominant workload.

3. The Build Plan: Thirteen Steps

Step 1 · Scope the use cases and audit your sources before writing any pipeline code

Identify the two or three highest-value questions the RAG system needs to answer, and work backward to which document sources actually contain the answers. Catalog every candidate source and classify it by sensitivity, format, update frequency, and owner before any ingestion work begins — this single step prevents most of the scope creep that derails lakehouse projects.

Example: A biotech R&D organization scoping a knowledge platform separates "protocol and regulatory search" (structured, slow-changing, broadly shared) from "study-specific analysis" (sensitive, fast-changing, narrowly permissioned) as two different data-scope tiers before any ingestion is built — exactly the Product A / Product B split used in Vertiva's own platform planning.

Step 2 · Choose the storage and table-format foundation

Pick object storage and an open table format together, and resist the temptation to build directly on proprietary, engine-locked storage. Decoupling storage from compute is what lets you swap or scale the processing engine later without a data migration.

Example: A greenfield build on AWS or GCP defaults to Apache Iceberg for its open, engine-agnostic catalog support; a team already standardized on Databricks defaults to Delta Lake for the tighter native integration and Unity Catalog governance that comes with it.

Step 3 · Stand up catalog governance before you have a governance problem

Register every table and its access policy in a single catalog from day one — Unity Catalog, AWS Glue/Lake Formation, or an equivalent — so that both the AI pipeline and any existing BI tooling read from one governed, access-controlled copy of the data rather than two systems that inevitably drift apart.

Step 4 · Build a governed, connector-based ingestion path — don't let each source get its own pipeline

Design one pluggable connector interface that every source implements: authentication, discovery, incremental sync, permission mapping, and normalized delivery into a landing zone. Separate the landing zone (where connectors and users write) from the managed lakehouse (which only the ingestion engine writes to) — this distinction is what prevents an unvetted upload from silently reaching your retrieval index.

Example: Vertiva's ingestion architecture treats an S3 drop-zone as the zero-integration default connector, with Google Drive, SharePoint, Slack, and database change-data-capture (via Debezium/Kafka Connect) landing through the exact same normalized path — so a new source is a new connector implementation, not a new pipeline.

Step 5 · Implement medallion zones — and extend them for AI, not just BI

The classic Bronze/Silver/Gold layering is the dominant pattern for a reason: it stops a bad parse or a duplicate record from silently propagating all the way to a served answer. For an AI/RAG lakehouse specifically, extend the pattern: Bronze holds immutable raw documents and media (append-only, often with object-lock/WORM for compliance); Silver holds chunked, deduplicated, quality-scored content; Gold holds embeddings, lexical documents, and graph triples — one set of serving artifacts per retrieval sink. Some teams add a Platinum layer for low-latency, real-time-serving needs.

Example: A raw contract PDF lands in Bronze exactly as received. In Silver it's parsed, deduplicated against prior versions, and split into semantically coherent chunks with quality scores attached. In Gold, that same content exists three times over — as vectors in the embedding store, as analyzed text in the lexical index, and as extracted entities/relationships in the knowledge graph — all three built from the same Silver record, never from three independent pipelines.

Step 6 · Design the storage layout itself as the access-control boundary

Encode your organization's access model — org, team, workspace, classification, and trust level — directly into the storage prefix structure and object tags, not in a separate access-control system that has to be kept in sync by hand. Done well, the same tags that drive IAM policy also drive KMS key selection and lifecycle/retention rules, so storage governance and retrieval governance read from one model instead of two.

Example: A prefix pattern such as landing/workspace={id}/connector={source}/classification={level}/dt={date}/ lets a single IAM policy condition on the classification tag to grant or deny access — the access decision is enforced by the storage layout itself, not by a downstream application remembering to check a database.

Step 7 · Treat parsing and chunking as an engineering discipline, not a preprocessing afterthought

Use layout-aware parsing that distinguishes body text from headers, tables, and footers rather than a naive raw-text extractor — a bad parse guarantees a bad chunk regardless of how good everything downstream is. Chunk semantically (by paragraph or logical section, with roughly 10-15% overlap) rather than at a fixed token count, and attach metadata — source, author, timestamp, and classification — to every chunk, not just every document. Published benchmarks comparing chunking strategies on identical models and data have shown accuracy differences of twenty to seventy-plus percentage points; this step has more leverage over answer quality than almost any model choice that follows it.

Example: A pipeline processing scanned regulatory filings routes them through a layout-aware parser with an OCR stage for scanned pages, splits by section heading rather than a fixed character count, and stamps each resulting chunk with the filing's date and classification — so a downstream citation can point to the exact section, not just the file.

Step 8 · Fan out from one Gold layer to multiple retrieval sinks — don't build three separate pipelines

Design the ingestion pipeline to be multi-sink from the very first version, even if you only populate one sink initially. A single parse → chunk → enrich pipeline should be able to attach a vector sink, a lexical sink, and a graph sink independently, so adding hybrid or federated retrieval later is a matter of attaching a new sink to existing Gold-layer output, not rebuilding ingestion.

Example: Vertiva's ingestion pipeline is explicitly designed to be multi-sink from day one: an early phase lands only metadata and text sinks, and later phases attach vector, lexical, and graph sinks to the same underlying fan-out without touching the ingestion code that came before.

Step 9 · Treat the embedding model as part of your data's identity, not a configuration flag

Vectors are only meaningfully comparable within the embedding space that produced them. Key every vector collection by the workspace and the embedding model plus version, mirror that key in the storage path, and record embedding-model provenance in your metadata for lineage and reproducibility. Plan explicitly for the fact that changing embedding models is not a toggle — it requires a full, scheduled re-embedding and backfill of the affected corpus.

Example: A collection named workspace=acme/emb=minilm-v2@2026-03 is never queried against vectors written under a different embedding model — switching models triggers a governed backfill into a freshly named collection, with the old one retained until the new one passes a parity evaluation.

Step 10 · Instrument the pipeline for observability, cost, and evaluation before you scale it

Wire tracing into every stage of ingestion and retrieval (typically via OpenTelemetry into a metrics/logs/traces stack), build a golden-set evaluation harness that runs automatically whenever a chunking strategy, embedding model, or retrieval method changes, and track per-tenant cost attribution from the first production customer rather than retrofitting it once usage grows. A large share of teams running RAG in production still have no systematic retrieval-level evaluation in place, which is precisely why chunking and data-quality regressions can go undiagnosed for months.

Step 11 · Bake governance and compliance into the lakehouse itself, not around it

Apply encryption at rest and in transit, an immutable audit trail, and end-to-end lineage from source document through chunk through retrieved context to generated answer as properties of the lakehouse's design, not as a separate compliance layer bolted on afterward. Build a right-to-be-forgotten cascade that can remove a document from every store it touched — Bronze, Silver, Gold, every retrieval sink, and any cache — verifiably, since this is one of the hardest requirements to retrofit once the system is live.

Step 12 · Migrate and scale using dual-run, not big-bang cutovers

Whenever you swap a component — a new chunking strategy, a new embedding model, a new vector store, a new compute engine — run the new implementation alongside the old one, backfill and validate its output, run a parity evaluation against real traffic, and only then cut over, with a reversible rollback path and zero-downtime execution as non-negotiable requirements. Treat this discipline as the default for every future change, not a one-time migration technique.

Step 13 · Operationalize: automate deployment, document as you go, and keep monitoring after launch

Automate the deployment of pipeline and infrastructure changes through CI/CD and infrastructure-as-code rather than hand-patching production, and generate documentation, training material, and rollback checklists as a byproduct of every rollout rather than a separate task. Continue monitoring chunking effectiveness, retrieval quality, and cost after launch — a lakehouse built for RAG is an evolving system to be benchmarked continuously, not a one-time implementation.

4. Anti-Patterns to Avoid

  • The AI data swamp: ingesting unstructured content for an AI project with no provenance, versioning, or deduplication tracking — the single most common way lakehouse investments go stale and untrustworthy.
  • Single-node ingestion as a permanent architecture: running document parsing and chunking on a single machine and discovering the bottleneck only once volume grows past a pilot.
  • Mixing embedding spaces in one index: comparing vectors written by two different embedding models in one collection, which produces results that look plausible and are quietly wrong.
  • Treating chunking as solved and unimportant: tuning prompts and swapping models for weeks while the real problem — a bad parse, a bad chunk boundary — sits untouched upstream.
  • Skipping evaluation because "it looks fine in the demo": shipping a retrieval change without a golden-set evaluation, so a regression isn't discovered until a customer notices.
  • Big-bang cutovers: replacing a working component in one step with no dual-run or rollback path, turning every migration into a high-stakes, all-or-nothing event.

5. Quick-Reference Build Checklist

  • Use cases and source inventory documented and classified by sensitivity before any pipeline is built.
  • Object storage plus an open table format (Iceberg, Delta, or Hudi) selected together, decoupled from any single compute engine.
  • One shared catalog governs access for both BI and AI consumers of the data.
  • A single connector framework normalizes every source into one landing zone, separate from the managed lakehouse.
  • Medallion zones (Bronze/Silver/Gold, plus Platinum if needed) are in place, extended explicitly for AI artifacts.
  • Storage prefixes and object tags double as the access-control and lifecycle policy boundary.
  • Parsing is layout-aware; chunking is semantic, overlapping, and metadata-tagged at the chunk level.
  • The ingestion pipeline is multi-sink capable even if only one sink is populated at launch.
  • Vector collections are keyed by embedding model and version, with a governed re-embed/backfill process defined.
  • Tracing, golden-set evaluation, and per-tenant cost attribution are live before the system scales past a pilot.
  • Encryption, audit trail, lineage, and a verifiable right-to-be-forgotten cascade are architectural properties, not add-ons.
  • Every component swap follows dual-run → backfill → parity-eval → cutover, with a defined rollback.
  • Deployment is automated (CI/CD, infrastructure-as-code), and documentation/training are produced as part of rollout, not after it.

6. Conclusion

A lakehouse built for RAG is not a smaller version of a BI data warehouse with a vector database bolted on — it is a different discipline that happens to share the same underlying storage and table-format technology. The organizations getting real value out of enterprise RAG are not the ones with the newest model; they are the ones that treated ingestion, chunking, governance, and evaluation as first-class engineering work from the start, in roughly the order laid out above. Get the foundation right once, and every subsequent capability — better retrieval, self-hosted models, richer governance — inherits that quality automatically. Get it wrong, and no amount of prompt engineering downstream will fix it.

"Every engagement leaves a verification trail."

Start a conversation