Feast users use Feast to manage two important sets of configuration:
Configuration about how to run Feast on your infrastructure
With Feast, the above configuration can be written declaratively and stored as code in a central location. This central location is called a feature repository. The feature repository is the declarative source of truth for what the desired state of a feature store should be.
The Feast CLI uses the feature repository to configure, deploy, and manage your feature store.
What is a feature repository?
A feature repository consists of:
A collection of Python files containing feature declarations.
A feature_store.yaml file containing infrastructural configuration.
A .feastignore file containing paths in the feature repository to ignore.
Typically, users store their feature repositories in a Git repository, especially when working in teams. However, using Git is not a requirement.
Structure of a feature repository
The structure of a feature repository is as follows:
The root of the repository should contain a feature_store.yaml file and may contain a .feastignore file.
The repository should contain Python files that contain feature definitions.
The repository can contain other files as well, including documentation and potentially data files.
An example structure of a feature repository is shown below:
$ tree -a
│ └── driver_stats.parquet
1 directory, 4 files
A couple of things to note about the feature repository:
Feast reads all Python files recursively when feast apply is ran, including subdirectories, even if they don't contain feature definitions.
It's recommended to add .feastignore and add paths to all imperative scripts if you need to store them inside the feature registry.
The feature_store.yaml configuration file
The configuration for a feature store is stored in a file named feature_store.yaml , which must be located at the root of a feature repository. An example feature_store.yaml file is shown below:
The feature_store.yaml file configures how the feature store should run. See feature_store.yaml for more details.
The .feastignore file
This file contains paths that should be ignored when running feast apply. An example .feastignore is shown below:
# Ignore virtual environment
# Ignore a specific Python file
# Ignore all Python files directly under scripts directory
# Ignore all "foo.py" anywhere under scripts directory