Skip to content
ClearFeature

Guide

What is a feature store?

A practical explanation of feature stores and feature platforms: what they do, why teams adopt them, and the questions that decide which kind you need.

Definition

A feature store is infrastructure for managing the data that machine-learning models consume — their features — consistently across training and production. At minimum, it gives features a definition and a home: a place where “customer’s average transaction amount over 90 days” is a named, versioned thing that both a training pipeline and a live service can use, rather than a calculation each of them re-invents.

Different products draw the boundary differently — some focus on storing and serving feature values, others on executing feature logic — but the underlying job is the same: make the features a model sees in production match the features it saw in training.

Why feature infrastructure exists

Nothing about a first ML model requires a feature store. A notebook, a query, and a deployed model work fine. Feature infrastructure earns its place when the same organization has to do all of the following at once:

  • compute features over history to build training data;
  • compute the same features live, when a prediction is requested;
  • keep those two computations consistent as models and features change;
  • let several models and teams reuse features without copying code;
  • answer, later, what a model actually knew when it made a decision.

Every one of these is manageable alone. Together, done ad hoc, they produce the classic production-ML failure mode: duplicated feature code, silent training/serving divergence, and historical decisions no one can reconstruct.

Training features: the offline side

The offline side of feature infrastructure answers: what were the feature values across history? Training a model requires feature vectors for thousands or millions of historical moments — computed as they would have looked at each of those moments. This workload is batch-shaped: large scans, backfills, dataset construction. Its consumers are training pipelines and analysts.

Online features: the serving side

The online side answers: what are the feature values right now, for this entity? When a scoring request arrives, the model needs its feature vector within the latency budget of the decision. Two broad strategies exist: look up values that were precomputed and stored, or compute values on request from current source data. Most real systems mix both — the trade-offs are covered in online vs offline feature stores.

Reuse

Once features are named, versioned, and discoverable, a second model can consume payment_to_income_ratio rather than re-deriving it. Reuse is a real benefit — but it is worth being clear-eyed: the deeper value of shared definitions is not saved keystrokes, it is that there is exactly one answer to “how is this feature computed?” for every consumer, including auditors.

Point-in-time correctness

The hardest problem hiding inside “compute features over history” is temporal: a training row for a decision made on March 3rd must contain only information that was available on March 3rd. Data that describes March 1st but arrived March 5th must be excluded — otherwise the model trains on information its production counterpart will never have, and offline metrics inflate. This is point-in-time (PIT) correctness, and it is subtle enough to deserve its own guide.

Feature storage

Storage is the part most people picture first: an offline store holding feature history (typically warehouse- or database-backed) and an online store holding latest values (typically a fast key-value system). Storage matters — but it is the most commoditized layer of the stack. The differentiated questions are how values get into those stores, and whether the logic that computed them is consistent everywhere.

Feature computation

Somewhere, feature logic executes. The industry splits on where:

  • Retrieval-centered systems leave computation to your existing pipelines (SQL, Spark, dbt) and manage the resulting values — registration, storage, PIT joins, serving.
  • Execution-centered platforms own the computation: feature logic is defined once, inside the platform’s model, and the platform runs it for historical and live paths alike.

Neither is universally right. The choice hinges on whether your problem is managing values you already compute well, or the fact that computation itself is duplicated and drifting.

Feature serving

Serving delivers vectors to models at decision time — as a lookup of stored values, as request-time computation, or a hybrid. Serving design is dominated by three constraints: latency, freshness, and consistency with training. Teams tend to over-index on the first and under-index on the third.

Common architectures

In practice you will meet a spectrum:

  1. No feature store — pipelines and services each compute their own features. Fine early; scales badly in correctness.
  2. Retrieval layer over existing pipelines — a registry plus offline/online stores; computation stays upstream.
  3. Execution platform — versioned feature logic run by the platform across historical and live paths.
  4. Full ML platform — feature store as one module of a larger suite covering models, serving, and pipelines.

When a feature store becomes useful

Honest heuristics: more than a handful of models in production; the same features re-implemented in more than one place; a live decision path (not just batch scoring); regulatory or audit pressure to reconstruct decisions; or a growing tax of coordination between data science and engineering every time a model ships. If none of these apply yet, you may genuinely not need one — see build vs buy for that decision in full.

The limits of thinking in storage and retrieval

A feature store framed purely as storage answers “where do we keep feature values?” It does not, by itself, answer the questions that hurt in production: is the serving-path implementation the same as the training-path implementation? Was this historical value computed with information that was actually available? Which version of the logic produced the vector behind last March’s decision? Those are properties of execution, and no amount of storage architecture supplies them.

The executable-feature perspective

ClearFeature — the platform behind this site — sits at the execution-centered end of the spectrum: feature logic is a versioned Python project with a declarative dependency DAG, and the platform runs that same tested code for historical materialization, point-in-time training datasets, and live request-time computation. If, after this guide, your diagnosis is “our problem is duplicated logic and temporal correctness, not value storage,” that is the case it was built for — the platform page shows the model end to end.

Further reading

Diagnosed your feature problem?

If it is execution and consistency rather than storage, see how ClearFeature approaches it.