Skip to content

feat(cli): Updated feast init demo by adding rag template - #5946

Merged
jyejare merged 9 commits into
feast-dev:masterfrom
Vperiodt:patch-rag-scenario
Jul 30, 2026
Merged

jyejare merged 9 commits into
feast-dev:masterfrom
Vperiodt:patch-rag-scenario

Conversation

@Vperiodt

@Vperiodt Vperiodt commented Feb 5, 2026 •

Copy link
Copy Markdown
Contributor

What this PR does / why we need it:

demos.mov

Which issue(s) this PR fixes:

Fixes : #5264


Open with Devin

@Vperiodt
Vperiodt marked this pull request as ready for review February 10, 2026 14:08
@Vperiodt
Vperiodt requested a review from a team as a code owner February 10, 2026 14:08
@Vperiodt
Vperiodt marked this pull request as draft February 10, 2026 14:09
devin-ai-integration[bot]

This comment was marked as resolved.

Comment thread sdk/python/feast/cli/cli.py Outdated
help="Directory path where the repository will be created (default: create subdirectory with project name)",
)
def init_command(project_directory, minimal: bool, template: str, repo_path: str):
@click.option(

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

IMO, we should just add rag to the default template and not do scenarios.

ghost Feb 11, 2026

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ghost Feb 11, 2026

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

suggestion are addressed, may be I can make one more PR for recommendation engine one, will keep this PR scope small as of now, thanks !

ghost Feb 12, 2026

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@franciscojavierarceo The ideology of scenario is coming from #5264. The template are backend-based and without much of user context to it WHEREAS scenarios are real production-like deployments that customers can directly try and gain experience of feast usage with given Notebooks/Readme in deployment scenarios. So I would prefer to go with scenario and templates as two different options.

The plan also to design a feast-lab(within feast OR outside) with multiple scenarios to try out like banking/RAG/recommendation etc and hence by using -s OR --scenario we could have directly pull those feat-labs scenarios.

What do you think on this ?

ghost Feb 12, 2026

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I guess I think we could put them all in one bc they're lightweight examples

ghost Feb 18, 2026

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for the review!
Regarding the current scope: I’ve implemented the RAG template (City Wikipedia) and merged it with the driver example. As of now, running feast init <project_name> will create both projects in the same directory, allowing users to navigate to either and explore the demos.

I deliberately held off on adding the Recommendation System in this PR to keep the changes focused and easier to review.
Plan for immediate follow-up PRs is:

  1. Add the Recommendation System (so feast init will eventually generate three demos).
  2. Extend the driver demos to include ODFV transforms.

@Vperiodt
Vperiodt marked this pull request as ready for review February 10, 2026 19:27
@Vperiodt Vperiodt changed the title feat(cli): Add --scenario option to feast init for RAG template feast(cli): Updated feast init demo by adding rag template Feb 11, 2026
@Vperiodt Vperiodt changed the title feast(cli): Updated feast init demo by adding rag template feat(cli): Updated feast init demo by adding rag template Feb 11, 2026

ghost left a comment •

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM, just a concern about template vs scenario raised at #5946 (comment) before we merge it.

),
],
source=city_summaries_source,
ttl=timedelta(hours=2),

ghost Feb 12, 2026

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think for RAG use case TTL could be in days than hours, wdyt ?

devin-ai-integration[bot]

This comment was marked as resolved.

@ntkathole
ntkathole force-pushed the patch-rag-scenario branch from 79b5552 to 5554f43 Compare March 2, 2026 05:48
devin-ai-integration[bot]

This comment was marked as resolved.

@Vperiodt
Vperiodt force-pushed the patch-rag-scenario branch from 1e1363d to dc75cf5 Compare March 2, 2026 11:41
devin-ai-integration[bot]

This comment was marked as resolved.

@jyejare

ghost commented Mar 3, 2026

Copy link
Copy Markdown
Collaborator

@Vperiodt Nice! Could you please paste the feast init output in the description.

@ntkathole
ntkathole force-pushed the patch-rag-scenario branch from 5621840 to 993449e Compare March 4, 2026 08:03
@ntkathole

ghost commented Mar 6, 2026

Copy link
Copy Markdown
Member

One of the big disadvantage I am seeing with this change is RAG template won't work without additional dependencies (pymilvus, torch, transformers). This could affect getting-started experience. Thoughts @franciscojavierarceo ?

repo_dir = temp_path / project_name
data_dir = repo_dir / "data"
repo_config = repo_dir / "feature_store.yaml"
repo_config = repo_dir / "feature_repo" / "feature_store.yaml"

ghost Mar 6, 2026

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@Vperiodt This breaks operator functioning.

With this PR, feast init sample_init (no -t flag) creates:

sample_init/
├── driver/feature_repo/...
├── rag/feature_repo/...

But the operator expects:

sample_init/
├── feature_repo/...    <-- DOES NOT EXIST

ghost Mar 7, 2026

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

regarding this particular test we use feast init repo_name --template local, so we get a single feature_repo/ and the test overwrites that file to check that feast apply fails for invalid project names.

@ntkathole

ghost commented Mar 6, 2026

Copy link
Copy Markdown
Member

One of the big disadvantage I am seeing with this change is RAG template won't work without additional dependencies (pymilvus, torch, transformers). This could affect getting-started experience. Thoughts @franciscojavierarceo ?

may be instead of changing default scenario of feast init, we can make multi-demo flow to be opt-in with new option feast init -t multi-project ?

devin-ai-integration[bot]

This comment was marked as resolved.

@jyejare

ghost commented Apr 16, 2026 •

Copy link
Copy Markdown
Collaborator

@Vperiodt After reviewing the concerns raised by @ntkathole around operator breakage and heavy dependencies (pymilvus, torch, transformers) affecting the default getting-started experience, here's are my thoughts:

The RAG template should be opt-in, not the default feast init behavior.

The default feast init (no flags) must continue to produce the current feature_repo/ structure so the operator and existing workflows are unaffected. The RAG demo should only be created when the user explicitly requests it via the -t option, e.g.:

feast init my_project -t rag

This means:

  • The operator breakage concern goes away — default init is unchanged.
  • The heavy-dependency concern goes away — users only pull pymilvus/torch/transformers when they explicitly choose the RAG template.
  • No need for a --scenario flag or multi-demo default flow.

Could you please:

  1. Update the PR to make RAG a standard template option (selected via -t rag) rather than changing the default init flow.
  2. Rebase the branch on latest master — it's significantly behind and CI isn't running.
  3. Address the Click 7.x compatibility issue (ParameterSource import) — either bump the minimum Click version to 8.0 in pyproject.toml or add a try/except guard.

Once rebased and updated, we can get this across the line quickly. Thanks!

ghost left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Devin Review found 1 new potential issue.

🐛 1 issue in files not directly in the diff

🐛 Integration test not updated for new default feast init multi-demo directory structure (sdk/python/tests/integration/online_store/test_remote_online_store.py:229-231)

The PR changes feast init (without --template) to create a multi-demo layout ({project}/driver/feature_repo/ and {project}/rag/feature_repo/) instead of the previous single-repo layout ({project}/feature_repo/). However, _create_remote_client_feature_store at sdk/python/tests/integration/online_store/test_remote_online_store.py:229 still calls runner.run(["init", project_name]) without --template "local", then on line 231 constructs repo_path = os.path.join(temp_dir, project_name, "feature_repo") — a path that no longer exists under the new default behavior. This will cause the test to fail because _overwrite_remote_client_feature_store_yaml will try to write to a nonexistent directory, and FeatureStore(repo_path=repo_path) on line 252 will fail. All other test call sites (e.g., test_cli_chdir.py:30, test_offline_server.py:73, auth_permissions_util.py:39, test_repo_operations.py:187) were correctly updated to pass --template "local", but this one was missed.

View 15 additional findings in Devin Review.

Open in Devin Review

Add a new RAG (Retrieval-Augmented Generation) template that can be
selected via `feast init -t rag`. The template provides a City Q&A
demo using Feast for feature management and Milvus for vector search.

The default `feast init` behavior is unchanged — it continues to use
the local template, preserving operator compatibility and avoiding
heavy dependencies (pymilvus, torch, transformers) in the default
getting-started flow.

Fixes feast-dev#5264

Signed-off-by: Vanshika Vanshika <[email protected]>

rh-pre-commit.version: 2.3.2
rh-pre-commit.check-secrets: ENABLED
@Vperiodt
Vperiodt force-pushed the patch-rag-scenario branch from caffc46 to f568630 Compare April 16, 2026 14:41
@Vperiodt

ghost commented May 11, 2026

Copy link
Copy Markdown
Contributor Author

hello ! @jyejare , ready for review

@ntkathole

ghost commented Jul 23, 2026

Copy link
Copy Markdown
Member

@Vperiodt Please resolve conflicts and will merge

Resolve cli.py conflict by keeping master's modular CLI and
re-adding the opt-in `rag` template choice for feast init.

Signed-off-by: Vanshika Vanshika <[email protected]>

rh-pre-commit.version: 2.3.2
rh-pre-commit.check-secrets: ENABLED
@codecov-commenter

ghost commented Jul 24, 2026 •

Copy link
Copy Markdown

⚠️ Please install the 'codecov app svg image' to ensure uploads and comments are reliably processed by Codecov.

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 46.46%. Comparing base (ef307c6) to head (339b5c2).
⚠️ Report is 1 commits behind head on master.
❗ Your organization needs to install the Codecov GitHub app to enable full functionality.

Additional details and impacted files

Impacted file tree graph

@@            Coverage Diff             @@
##           master    #5946      +/-   ##
==========================================
+ Coverage   46.44%   46.46%   +0.01%     
==========================================
  Files         414      414              
  Lines       50134    50138       +4     
  Branches     7173     7173              
==========================================
+ Hits        23285    23295      +10     
+ Misses      25212    25204       -8     
- Partials     1637     1639       +2     
Flag Coverage Δ
go-feature-server 30.58% <ø> (ø)
python-unit 47.76% <ø> (+0.01%) ⬆️
Files with missing lines Coverage Δ
sdk/python/feast/cli/cli.py 54.82% <ø> (ø)

... and 2 files with indirect coverage changes


Continue to review full report in Codecov by Harness.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update ef307c6...339b5c2. Read the comment docs.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

jyejare

This comment was marked as spam.

@Vperiodt

ghost commented Jul 27, 2026

Copy link
Copy Markdown
Contributor Author

@Vperiodt Please resolve conflicts and will merge

done!

@jyejare
jyejare enabled auto-merge (rebase) July 29, 2026 15:31
@jyejare

ghost commented Jul 29, 2026

Copy link
Copy Markdown
Collaborator

Again there are conflicts @Vperiodt

auto-merge was automatically disabled July 29, 2026 15:33

Rebase failed

@jyejare
jyejare enabled auto-merge (squash) July 30, 2026 15:29
@jyejare
jyejare merged commit c8628eb into feast-dev:master Jul 30, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Deploy Scenario from feast examples

5 participants