How to Transition Your System Design Mental Model Without Starting Over
The good news: you're not starting from zero. The concepts transfer. Schema drift, late-arriving data, upstream teams breaking contracts without telling you; these are eternal problems. They just manifest differently in embedding pipelines than in warehouses. Your experience debugging why a pipeline silently dropped 2 million rows is directly applicable to debugging why retrieval faithfulness degraded after an embedding model update. The failure mode is the same: silent data corruption. The tooling is different.
Here's the translation layer that works on the whiteboard:
-- Feature store: point-in-time correct feature retrieval
-- Same concept as SCD Type 2, different execution context
-- Interview signal: can you prevent label leakage?
SELECT
t.transaction_id,
t.user_id,
t.event_timestamp,
f.feature_value,
f.feature_version
FROM transactions t
ASOF JOIN feature_snapshots f
ON t.user_id = f.user_id
AND t.event_timestamp >= f.valid_from
AND t.event_timestamp < f.valid_to
-- ASOF JOIN prevents future feature values from leaking
-- into training labels. This is the core correctness guarantee.
-- If you can explain why this matters, you pass the round.
The pipeline architecture patterns you already know (idempotency, backfill strategies, schema evolution) apply directly to embedding pipelines. An embedding pipeline that can't handle reprocessing when you swap from text-embedding-3-small to Qwen3-Embedding is the same category of problem as a warehouse pipeline that can't handle a schema migration. Kappa architecture (unified streaming) is winning over Lambda (batch plus stream) for the same reason it always should have: code divergence between batch Spark and streaming Flink produces conflicting metrics at scale.
Organizations getting RAG right are treating it less like an AI project and more like a data engineering project with AI on top. A production RAG system is mostly data engineering: ingesting messy documents, keeping them updated, retrieving the right context fast, and only then calling an LLM. That framing should make every experienced DE feel less like an outsider and more like the person who actually knows how to build the hard part.