Feast Integration
The MATIH Feature Store integrates with Feast for feature registry management, providing a standardized interface for declaring, validating, and materializing feature views across the platform.
Feature Declaration
Features are declared using the FeatureDeclaration dataclass:
from src.features.unified_feature_store import (
FeatureDeclaration, FeatureField, EntityKey, FeatureSourceType
)
customer_features = FeatureDeclaration(
name="customer_features",
entities=[
EntityKey(name="customer_id", dtype="string"),
],
features=[
FeatureField(name="total_purchases", dtype="float64", description="Lifetime purchase count"),
FeatureField(name="avg_order_value", dtype="float64", description="Average order value"),
FeatureField(name="days_since_last_purchase", dtype="int64"),
FeatureField(name="is_premium", dtype="bool", default_value=False),
],
source_type=FeatureSourceType.BATCH,
source_config={"table": "customer_metrics", "query": "SELECT * FROM customer_metrics"},
event_timestamp_field="event_timestamp",
ttl_seconds=86400 * 7, # 7 days
online_enabled=True,
offline_enabled=True,
description="Customer behavioral features for churn prediction",
owner="data-science-team",
tags={"domain": "customer", "use_case": "churn"},
)Registration
Register features with the unified store to create offline tables and serving configurations:
store = create_unified_feature_store()
await store.initialize()
feature_view = await store.register_feature_view(
tenant_id="acme-corp",
declaration=customer_features,
auto_create_tables=True,
)
# feature_view.id = "550e8400-..."
# feature_view.offline_table_id = "iceberg-table-id"Validation and Approval
Features go through validation before activation:
# Validate the feature view
is_valid, errors = await store.validate_feature_view(feature_view.id)
# Approve for production use
await store.approve_feature_view(feature_view.id, approver="alice@acme.com")
# Activate (triggers initial materialization)
await store.activate_feature_view(feature_view.id)Feature Services
Group multiple feature views into a feature service for convenient retrieval:
from src.features.unified_feature_store import FeatureServiceDeclaration
fraud_features_service = FeatureServiceDeclaration(
name="fraud_detection_features",
feature_views=["customer_features", "transaction_features", "device_features"],
description="All features needed for fraud detection model",
owner="fraud-team",
)Source Files
| File | Path |
|---|---|
| Feast Registry Service | data-plane/ml-service/src/features/feast_registry_service.py |
| Feature Group Service | data-plane/ml-service/src/features/feature_group_service.py |
| Feature Materialization | data-plane/ml-service/src/features/feature_materialization_service.py |
| Registry State Machine | data-plane/ml-service/src/features/registry_state_machine.py |