This page introduces Feast as an open-source feature store, summarizes its core purpose, describes the key capabilities of the system, and outlines the structure of the repository. It is the entry point to the wiki.
For detailed component topology and how subsystems interconnect, see System Architecture. For installation and CLI usage, see Getting Started and CLI. For contributing guidelines, see Contributing and Development Setup.
Feast (Feature Store) is an open-source feature store for machine learning. Its primary role is to act as an operational data layer that connects existing data infrastructure to ML training and serving pipelines.
It is not a general-purpose ETL tool, data warehouse, or database. Rather, it manages and serves features stored in other systems (e.g., BigQuery, Snowflake, Redis, DynamoDB).
Core problems Feast solves:
| Problem | Feast's Solution |
|---|---|
| Training-serving skew | Point-in-time correct historical feature retrieval |
| Online feature availability | Materialization from offline to online stores |
| Infrastructure portability | Abstract OfflineStore/OnlineStore interfaces |
| Feature discovery | Central registry with CLI and Web UI |
| Feature reuse | Shared FeatureView and FeatureService definitions |
Sources: README.md29-37 docs/README.md1-32
Feast targets multiple roles within an ML platform team:
Registry) for feature definitions.Sources: docs/README.md44-54
Feature Definitions & Registry
Entity, FeatureView, OnDemandFeatureView, StreamFeatureView, and FeatureService objects in Python.Registry) via feast apply.Offline Store (Historical Feature Retrieval)
get_historical_features() on the FeatureStore class.Online Store (Low-Latency Feature Serving)
get_online_features().Materialization
feast materialize or feast materialize-incremental.Feature Serving
go/internal/feast/Feature Transformations
StreamFeatureView.Deployment
infra/feast-operator/infra/charts/Sources: README.md166-242 docs/roadmap.md1-78 sdk/python/feast/repo_config.py39-113
The repository is organized as a multi-language, multi-component monorepo.
Top-level layout:
| Path | Contents |
|---|---|
sdk/python/feast/ | Python SDK: FeatureStore, registry, providers, offline/online stores, CLI |
go/ | Go feature server implementation |
java/ | Java feature server (gRPC) |
ui/ | React-based Web UI (@feast-dev/feast-ui) |
infra/feast-operator/ | Kubernetes Operator (Go) |
infra/charts/ | Helm charts |
protos/ | Protocol Buffer definitions shared across languages |
docs/ | Documentation source |
examples/ | Example feature repositories |
sdk/python/tests/ | Unit and integration tests |
Sources: docs/SUMMARY.md1-180 sdk/python/feast/feature_store.py1-102
The diagram below maps high-level system concepts to their primary code entities.
Diagram: Core Python SDK Abstractions
Sources: sdk/python/feast/feature_store.py105-170 sdk/python/feast/infra/provider.py49-60 sdk/python/feast/infra/passthrough_provider.py58-90 sdk/python/feast/infra/offline_stores/offline_store.py73-100
The diagram below shows the two primary data flows: writing features (materialization / push) and reading features (training vs. serving).
Diagram: Feature Data Flow
Sources: sdk/python/feast/feature_store.py944-1100 sdk/python/feast/infra/provider.py221-282 sdk/python/feast/feature_server.py388-460
FeatureStore ClassFeatureStore in sdk/python/feast/feature_store.py is the primary user-facing entrypoint. It provides:
| Method | Purpose |
|---|---|
apply() | Register objects to the registry; provision online store infra |
plan() | Dry-run showing registry and infra diffs |
get_historical_features() | Point-in-time join for training data |
get_online_features() | Low-latency lookup from online store |
materialize() | Batch copy from offline to online store within a time window |
materialize_incremental() | Incremental batch materialization up to a timestamp |
push() | Write streaming feature data to online/offline store |
refresh_registry() | Force re-fetch of registry from remote store |
The FeatureStore is initialized from a RepoConfig object (parsed from feature_store.yaml) or directly from a repository path. See FeatureStore and Configuration for a detailed breakdown.
Sources: sdk/python/feast/feature_store.py105-170 sdk/python/feast/repo_config.py253-364
RepoConfig and feature_store.yamlRepoConfig in sdk/python/feast/repo_config.py253-364 is the central configuration object. It is typically deserialized from a feature_store.yaml file. Key fields:
| Field | Type | Description |
|---|---|---|
project | str | Unique project identifier |
provider | str | local, gcp, aws, or azure |
registry | RegistryConfig or str | Registry backend configuration |
online_store | config object | Online store type and parameters |
offline_store | config object | Offline store type and parameters |
batch_engine | config object | Materialization engine |
entity_key_serialization_version | int | Serialization scheme version (default: 3) |
Type strings for each store are mapped to class paths in dictionaries like ONLINE_STORE_CLASS_FOR_TYPE and OFFLINE_STORE_CLASS_FOR_TYPE in sdk/python/feast/repo_config.py55-107
Sources: sdk/python/feast/repo_config.py39-113 sdk/python/feast/repo_config.py253-364
Feast provides multiple feature serving options:
Diagram: Serving Components
Sources: sdk/python/feast/feature_server.py211-350 sdk/python/feast/ui_server.py14-60
Online Stores
| Type string | Class |
|---|---|
sqlite | SqliteOnlineStore |
redis | RedisOnlineStore |
dynamodb | DynamoDBOnlineStore |
snowflake.online | SnowflakeOnlineStore |
postgres | PostgreSQLOnlineStore |
cassandra | CassandraOnlineStore |
elasticsearch | ElasticSearchOnlineStore |
milvus | MilvusOnlineStore |
qdrant | QdrantOnlineStore |
Offline Stores
| Type string | Class |
|---|---|
dask / file | DaskOfflineStore |
duckdb | DuckDBOfflineStore |
bigquery | BigQueryOfflineStore |
snowflake.offline | SnowflakeOfflineStore |
redshift | RedshiftOfflineStore |
spark | SparkOfflineStore |
postgres | PostgreSQLOfflineStore |
trino | TrinoOfflineStore |
Registry Backends
| Type string | Class |
|---|---|
file | Registry |
sql | SqlRegistry |
snowflake.registry | SnowflakeRegistry |
remote | RemoteRegistry |
Sources: sdk/python/feast/repo_config.py39-113
| Section | Content |
|---|---|
| Core Concepts | FeatureStore, FeatureView, Entity, Registry, type system |
| Data Integration | Data sources, offline stores, online stores, materialization |
| Feature Serving | Python/Go/Java servers, transformations, Web UI |
| Testing and QA | Universal test framework, CI/CD workflows |
| Build and Release | Packaging, protobuf compilation, release process |
| Deployment | Docker, Helm charts, Kubernetes Operator |
| Advanced Topics | Custom extensions, streaming, feature logging |
Refresh this wiki
This wiki was recently refreshed. Please wait 7 days to refresh again.