MATIH Platform is in active MVP development. Documentation reflects current implementation status.
13. ML Service & MLOps
Feast Integration

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

FilePath
Feast Registry Servicedata-plane/ml-service/src/features/feast_registry_service.py
Feature Group Servicedata-plane/ml-service/src/features/feature_group_service.py
Feature Materializationdata-plane/ml-service/src/features/feature_materialization_service.py
Registry State Machinedata-plane/ml-service/src/features/registry_state_machine.py