Web UI 标注为 experimental,功能可能不稳定;在线特征需先执行 feast materialize 系列命令写入在线存储;部分数据源和存储为 contrib 或 community 插件,需额外安装
feast
feast-devApache-2.0活跃维护开源特征存储,统一管理机器学习特征的注册、存储与在线离线服务,解决训练和推理特征不一致的问题。
The Open Source Feature Store for AI/ML
pip install feast
feast init my_feature_repo
cd my_feature_repo/feature_repo
feast applyREADME 未说明硬件要求,仅需 Python 环境即可 pip 安装运行
开源特征存储,统一管理训练与在线推理的特征数据,避免数据泄漏
开源特征存储,统一管理机器学习特征的注册、存储与在线离线服务,解决训练和推理特征不一致的问题。
核心能力
- 用离线存储处理历史数据生成训练集
- 用低延迟在线存储支撑实时预测
- 生成 point-in-time 正确特征集避免数据泄漏
- 提供抽象数据访问层解耦 ML 与数据基础设施
- 内置 feature server 在线提供预计算特征
容易踩的坑
- v0.67.0最新正式版2026-10-13 · 2026-10-13 13:23 UTC
0.67.0 (2026-10-13)
Bug Fixes
- Allow dill 0.4 so UDF serialization works on Python 3.14 (#6858) (139704f)
- Allow serving features while a feature view is MATERIALIZING (#6789) (e2d7fe2), closes #6780
- Allowlist the pinned commit SHA flagged by detect-secrets (4b81d18)
- Apply point-in-time filter correctly with the Polars backend (#6992) (01224d0)
- Authorize registry server writes before deserializing UDFs (e0ef16e)
- Automate versioned documentation publication (#6763) (5ad5592), closes #6762
- Avoid NumPy generic-unit deprecation when importing feast.type_map (5fea698)
- Bind metrics, REST registry, ui, and lineage servers dual-stack (#6886) (8d2773c)
- Bound Arrow Flight batch size in the offline server (#6896) (d169238)
- Compute std and var correctly for tiled aggregations (213a130)
- Convert PdfBytes values to protos like ImageBytes (#6968) (af20fe4)
- Decode fixed_size_list as the matching Feast list value type (#6944) (8cfe891)
- Do not log /metrics requests from the pre-fork metrics server thread (7087f1f), closes #6928
- Don't return from finally blocks in REST registry helpers (d7cb4d0)
- Encode non-finite floats in feature server JSON responses (#6930) (211ecb8)
- Feature freshness logic updated (#6765) (f0bc070)
- Fix monitoring auth (015cc84)
- Handle non-nanosecond timestamps in tiled aggregations (b8989cb)
- Improve feature list column sizing (#6793) (2573693)
- Include vector attributes in Field equality (#6934) ([298c3f6](https://github.com/feast-dev/feast/commit/298c3f6a480b6088eba3498194d6e7b02
- v0.66.02026-08-21 · 2026-08-21 03:31 UTC
查看更新说明
0.66.0 (2026-08-21)
Bug Fixes
- Add connection pre-warming for DynamoDB async client (89240fa), closes #6060
- Add remote registry client extra (#6697) (b8dfcb0)
- Address review feedback on FIPS cipher suite configuration (4a35fba)
- Allow remote-registry first apply for new projects (39d408d)
- Avoid importing feast.feature_store at mcp_server import time (ddb2e9a)
- Bump pymssql to >=2.3.6 for macOS arm64 wheel support (181eb35), closes #5636 #5193 #5636
- Call ApplySavedDataset RPC instead of ApplyFeatureService in RemoteRegistry.apply_saved_dataset() (934d341)
- Catch missing dbt parser dependency in dbt CLI commands (#6534) (3c2ae3c)
- Default authentication to kubernetes auth (6a4690a)
- Defer feature-freshness thread to post-fork to avoid Gunicorn deadlock (#6648) (104ad10), closes #6647
- Do not pass undeclared feature view columns to ODFV UDFs (#6527) (75b9463)
- downgrade mcp pin to 1.29.0 and fix CI lockfiles and unit tests (98e5bca), closes #6706
- Feast apply silently ignoring ttl updates to None or timedelta(0) (#6709) (97b0f25), closes #6703
- Fix mypy TorchTensor type alias error (#6712) (34de6fa), closes #5563
- Fixed data source creation form gaps (5d0f7d6)
- Handle parameterized and complex Trino types in type map (326554d)
- Isolate default user permissions (e37adbf)
- Isolate projection join key maps (d1c709d)
- Map Postgres real to FLOAT instead of DOUBLE (62db435)
- Merge shared ODFV source projections in feature resolution (d269946), closes [#6621](https://g
- v0.65.02026-07-20 · 2026-07-20 13:28 UTC
查看更新说明
0.65.0 (2026-07-20)
Bug Fixes
- add debug logging for FIPS mode detection fallback (6c1b24e)
- Build embedded UI from local source (#6525) (3500349)
- Bump decommissioned Snowflake Python UDF runtime from 3.9 to 3.10 (#6606) (#6608) (10341e4)
- configure FIPS-compliant gRPC cipher suites for offline server (6bc80a2)
- Correct Flink PyArrow dependency constraints (#6604) (70a9751)
- Fix ValueError in signal handling for Trino worker threads (#6428) (506d919)
- Fixed monitoring page issues (7946018)
- Make pytest config compatible with newer pytest (#5779) (a57ea33)
- Replace comma with space in DynamoDB-incompatible label tag value (51e3a16)
- Resolve UI build warnings (#6529) (abe92af)
- Unblock nightly UI build (#6570) (f296d4b)
- Use LONGBLOB for SQL registry proto columns on MySQL (#6566) (7e4beb2)
Features
- Add click-to-zoom lightbox for blog post images (#6575) (1cb23fd)
- Add dark mode support to website and blog (#6589) (7358fb8)
- Add OnlineStore for Aerospike (#6532) (9cd35e1)
- Add OpenLineage Consumer to Feast - receive, store, and visualize cross-producer lineage (#6549) (a834126)
- Add registry list feature views by updated since (#6092) (#6093) (006c606)
- Add ScyllaDB online store with vector search (#6508) (1669661)
- Added compute and jobs UI (ba2c05c)
- Added Iceberg REST Catalog data source support (e0a8573)
- Bring Your Own Spark - SparkApplication ([#6550]
- v0.64.02026-06-13 · 2026-06-13 11:22 UTC
查看更新说明
0.64.0 (2026-06-13)
Bug Fixes
- Add async_supported property to RedisOnlineStore (9b088fe)
- Add missing feast init templates to operator CRD and enhance persistence documentation (1941d4d)
- Allow to publish from reference branch (5458ec8)
- API calls list (4203eb7)
- bigquery: Enable list inference for parquet loads in offline_write_batch (9243497), closes #5845
- Bump grpcio dependencies (07b4782)
- compute-engine/local: Honor field_mapping on join keys in dedup + join nodes (#6395) (bd01824)
- dynamodb: Avoid tag race condition by using diff-based tag updates (#6479) (bad2b7d), closes #6418
- dynamodb: Fix mypy type for _build_projection_expression return (217b4da)
- Fix intermittent async test failures for DynamoDB and Redis (63c5eb1)
- Fix mongodb blog title (57d28d4)
- Fix shared SQL registry crash - avoid unnecessary UDF deserialization in proto cache building (ac588d7)
- Fix SparkRetrievalJob.persist() failing for SparkSource (209d7cd)
- Fixed formatting and image for mongo blog (#6377) (f8389fb)
- Fixes for ray source (7f592a4)
- go: skip registry refresh when cache_ttl_seconds <= 0 (97ed40c)
- Handle array of strings columns in Athena materialization (#6324) (4ed0278)
- make milvus VARCHAR max_length configurable, remove hardcoded 512 limit (3b98c22)
- operator: Set appProtocol: grpc on registry gRPC Service (#6367) (c9ae2b4)
- PyJWT 2.10+ added validation that rejects empty HMAC keys (e756ffe)
- RemoteOnlineStore sends all features in a single HTTP request (8f187dd)
- Remove registry proto dump to enforce RBAC and add permission checks to Commit/Refresh RPCs (328431f)
- Remove selector migration job - no longer needed ([5
- v0.63.02026-05-04 · 2026-05-04 03:44 UTC
查看更新说明
0.63.0 (2026-05-04)
Bug Fixes
- Add project filter to apply_data_source and delete_data_source (closes #6206) (#6322) (96562c4)
- Add project_id filter to SnowflakeRegistry UPDATE path (#6243) (6658b71), closes #6208 feast-dev/feast#6208
- Add subprocess timeouts to prevent test_e2e_local hanging on Dask atexit handler (3de6556)
- Ambiguous truth value of array during materialization (#6259) (d0c8984)
- Auto-detect GCS/S3 registry store when registry is passed as string (#6260) (7ebcf03)
- bigquery: Prefer query over table in get_table_query_string (#6360) (77ed779), closes #6200
- correct project_id scoping in get_user_metadata and delete_project (0c469a7)
- disable Redis RDB persistence in test deployments (44cd682)
- Disable snowflake tests temporarily in CI (#6356) (31d5a98)
- Filter empty SQL commands at execute_snowflake_statement call sites (#6249) (92ffbb9)
- Fix five bugs in milvus online store (#6275) (212504b)
- Fix issue with apply feature view (835cda8)
- Fix streaming materialization for exotic sources with lazy UDF pipelines (c07972d)
- Handle missing features gracefully instead of panicking (7d00b3a)
- Harden informer cache with label selectors and memory optimizations (#6242) (3f11356)
- helm: Avoid nil pointer for metrics.enabled inside podAnnotations (#6251) (c833f1a)
- Include git in feast server image (fb03c46)
- Include StreamFeatureView in freshness metric (#6269) (463f16c)
- Pre-create S3A event log dir before SparkContext init (#6317) ([9feca77](https://github.com/feast-dev/feast/commit/9feca77f855db527b2d494e28bd8c872a3
用户点评
登录用户的真实使用记录,可按版本和硬件筛选还没有人点评。第一个说出真实体验的人最有价值。
Join us on Slack!
Overview
Feast (Feature Store) is an open source feature store for machine learning. Feast is the fastest path to manage existing infrastructure to productionize analytic data for model training and online inference.
Feast allows ML platform teams to:
- Make features consistently available for training and serving by managing an offline store (to process historical data for scale-out batch scoring or model training), a low-latency online store (to power real-time prediction), and a battle-tested feature server (to serve pre-computed features online).
- Avoid data leakage by generating point-in-time correct feature sets so data scientists can focus on feature engineering rather than debugging error-prone dataset joining logic. This ensure that future feature values do not leak to models during training.
- Decouple ML from data infrastructure by providing a single data access layer that abstracts feature storage from feature retrieval, ensuring models remain portable as you move from training models to serving models, from batch models to realtime models, and from one data infra system to another.
Please see our documentation for more information about the project.
📐 Architecture

The above architecture is the minimal Feast deployment. Want to run the full Feast on Snowflake/GCP/AWS? Click here.
🐣 Getting Started
1. Install Feast
pip install feast
2. Create a feature repository
feast init my_feature_repo
cd my_feature_repo/feature_repo
3. Register your feature definitions and set up your feature store
feast apply
4. Explore your data in the web UI (experimental)

feast ui
5. Build a training dataset
from feast import FeatureStore
import pandas as pd
from datetime import datetime
entity_df = pd.DataFrame.from_dict({
"driver_id": [1001, 1002, 1003, 1004],
"event_timestamp": [
datetime(2021, 4, 12, 10, 59, 42),
datetime(2021, 4, 12, 8, 12, 10),
datetime(2021, 4, 12, 16, 40, 26),
datetime(2021, 4, 12, 15, 1 , 12)
]
})
store = FeatureStore(repo_path=".")
training_df = store.get_historical_features(
entity_df=entity_df,
features = [
'driver_hourly_stats:conv_rate',
'driver_hourly_stats:acc_rate',
'driver_hourly_stats:avg_daily_trips'
],
).to_df()
print(training_df.head())
# Train model
# model = ml.fit(training_df)
event_timestamp driver_id conv_rate acc_rate avg_daily_trips
0 2021-04-12 08:12:10+00:00 1002 0.713465 0.597095 531
1 2021-04-12 10:59:42+00:00 1001 0.072752 0.044344 11
2 2021-04-12 15:01:12+00:00 1004 0.658182 0.079150 220
3 2021-04-12 16:40:26+00:00 1003 0.162092 0.309035 959
6. Load feature values into your online store
Option 1: Incremental materialization (recommended)
CURRENT_TIME=$(date -u +"%Y-%m-%dT%H:%M:%S")
feast materialize-incremental $CURRENT_TIME
Option 2: Full materialization with timestamps
CURRENT_TIME=$(date -u +"%Y-%m-%dT%H:%M:%S")
feast materialize 2021-04-12T00:00:00 $CURRENT_TIME
Option 3: Simple materialization without timestamps
feast materialize --disable-event-timestamp
The --disable-event-timestamp flag allows you to materialize all available data (from 1970-01-01 up to the current UTC time) without specifying start and end timestamps. Rows keep the event timestamps from the source.
Materializing feature view driver_hourly_stats from 2021-04-14 to 2021-04-15 done!
7. Read online features at low latency
from pprint import pprint
from feast import FeatureStore
store = FeatureStore(repo_path=".")
feature_vector = store.get_online_features(
features=[
'driver_hourly_stats:conv_rate',
'driver_hourly_stats:acc_rate',
'driver_hourly_stats:avg_daily_trips'
],
entity_rows=[{"driver_id": 1001}]
).to_dict()
pprint(feature_vector)
# Make prediction
# model.predict(feature_vector)
{
"driver_id": [1001],
"driver_hourly_stats__conv_rate": [0.49274],
"driver_hourly_stats__acc_rate": [0.92743],
"driver_hourly_stats__avg_daily_trips": [72]
}
📦 Functionality and Roadmap
The list below contains the functionality that contributors are planning to develop for Feast.
-
We welcome contribution to all items in the roadmap!
-
Natural Language Processing
- Vector Search (Alpha release. See RFC)
- Enhanced Feature Server and SDK for native support for NLP
-
Data Sources
- Chronon source (contrib)
- Snowflake source
- Redshift source
- BigQuery source
- Parquet file source
- Azure Synapse + Azure SQL source (contrib plugin)
- Hive (community plugin)
- Postgres (contrib plugin)
- Spark (contrib plugin)
- Couchbase (contrib plugin)
- Athena (contrib plugin)
- Clickhouse (contrib plugin)
- Oracle (contrib plugin)
- MongoDB (contrib plugin)
- Ray source (contrib plugin)
- Kafka / Kinesis sources (via push support into the online store)
-
Offline Stores
- Chronon (contrib)
- Snowflake
- Redshift
- BigQuery
- DuckDB
- Dask
- Remote
- Azure Synapse + Azure SQL (contrib plugin)
- Hive (community plugin)
- Postgres (contrib plugin)
- Trino (contrib plugin)
- Spark (contrib plugin)
- Couchbase (contrib plugin)
- Athena (contrib plugin)
- Clickhouse (contrib plugin)
- Ray (contrib plugin)
- Oracle (contrib plugin)
- MongoDB (contrib plugin)
- Hybrid
- Custom offline store support
-
Online Stores
- Chronon
- Snowflake
- DynamoDB
- Redis
- Dragonfly
- Datastore
- Bigtable
- SQLite
- Remote
- Postgres
- HBase
- Cassandra / AstraDB
- ScyllaDB
- MySQL
- Hazelcast
- Elasticsearch
- SingleStore
- Couchbase
- MongoDB
- Aerospike
- Qdrant (vector store)
- Milvus (vector store)
- Faiss (vector store)
- Hybrid
- Azure Cache for Redis (community plugin)
- Custom online store support
-
Feature Engineering
- On-demand Transformations (On Read) (Beta release. See RFC)
- Streaming Transformations (Alpha release. See RFC)
- Batch transformation (In progress. See RFC)
- On-demand Transformations (On Write) (Beta release. See GitHub Issue)
-
Streaming
-
Deployments
-
Feature Serving
-
Data Quality Management (See RFC)
- Feature Quality Monitoring — built-in metrics, drift detection, serving log monitoring, and UI dashboard
-
Feature Discovery and Governance
- Python SDK for browsing feature registry
- CLI for browsing feature registry
- Model-centric feature tracking (feature services)
- Amundsen integration (see Feast extractor)
- DataHub integration (see DataHub Feast docs)
- Feast Web UI (Beta release. See docs)
- Feast Lineage Explorer
🎓 Important Resources
Please refer to the official documentation at Documentation
👋 Contributing
Feast is a community project and is still under active development. Please have a look at our contributing and development guides if you want to contribute to the project:
- Contribution Process for Feast
- Development Guide for Feast
- Development Guide for the Main Feast Repository
🌟 GitHub Star History
✨ Contributors
Thanks goes to these incredible people: