feat: Add feast rag retriver functionality#5405
Conversation
0abf934 to
fc99dd0
Compare
May 30, 2025 22:47
069fe93 to
6873c84
Compare
June 5, 2025 12:28
ec5ba98 to
40dfde0
Compare
June 5, 2025 19:15
jyejare
left a comment
There was a problem hiding this comment.
Great Progress, few comments.
Sorry, something went wrong.
7980963 to
04fd031
Compare
June 17, 2025 11:37
|
LGTM. Please address @ntkathole comments and fix unit tests! |
Sorry, something went wrong.
04fd031 to
f98e50c
Compare
June 17, 2025 11:55
Thanks @jyejare I have addressed all comments now. I'm not sure if it is related to changes that I have made. Will look into it further. |
Sorry, something went wrong.
099ae82 to
6d4c12d
Compare
June 17, 2025 15:17
7b3ad36 to
6a9708d
Compare
June 18, 2025 16:12
ntkathole
left a comment
There was a problem hiding this comment.
Looks good 👍
Sorry, something went wrong.
astefanutti
left a comment
There was a problem hiding this comment.
LGTM, awesome work!
Sorry, something went wrong.
Co-authored-by: Esa Fazal <efazal@redhat.com> Signed-off-by: Fiona Waters <fiwaters6@gmail.com>
franciscojavierarceo
left a comment
There was a problem hiding this comment.
This is great! Thank you @Fiona-Waters !! Can we add a link to this in the examples in the documentation? Can be done in a follow up PR.
Sorry, something went wrong.
What this PR does / why we need it:
This PR adds a FeastRagRetriever that inherits from the HuggingFace Transformers RagRetriever class. It allows for integration with feast functionality allowing RAG to be performed more easily using the Feature Store.
The following has been added:
rag_retriever.py
This module implements a custom RAG retriever by combining Feast feature store capabilities with transformer-based models. The implementation provides:
vector_store.py
This module implements a FeastVectorStore class. The FeastVectorStore takes in a FeatureStore, FeatureView and features using these to query the store via the existing retrieve_online_documents_v2 function.
setup.py
Adding entries for RAG dependencies allowing for installation with
pip install feast[rag].init.py
Adding entries for new classes added in rag_retriever.py and vector_store.py
pyproject.toml
The dependencies required for the RAG implementation have been added here.
The relevant dependencies have also been added to the relevant requirements.txt files.
feature_store.py
Changes were made to the def _validate_vector_features function. The updated function now correctly validates the length of each individual vector within a specified DataFrame column, rather than checking the total number of DataFrame columns. This change ensures that every single vector matches its expected dimension, significantly improving data integrity and error reporting. This was improved following addition of unit tests.
Unit tests
Unit tests have been included to cover the added functionality, along with some minor changes in the existing example_feature_repo_1.py file.
examples/rag-retriever
An example has been added here including, feature_repo, README, low level design image and example notebook. This currently includes implementation on Red Hat OpenShift with a remote Milvus instance.
.github/workflows
The change here is a small update suggested by @ntkathole for torch installation and error handling.
Which issue(s) this PR fixes:
Related to #5391 but get_top_docs has not been implemented here as the FeastIndex is a dummy index - the retrieval functionality exists in the FeastRagRetriever via the FeastVector store which uses
retrieve_online_documents_v2.Misc