feat: Adding features field to retrieve_online_features to return mor… by franciscojavierarceo · Pull Request #4869 · feast-dev/feast
What this PR does / why we need it:
This pull request introduces several enhancements and refactorings to the retrieve_online_documents method and related components within the Feast SDK. The primary changes include the addition of support for multiple features to be retrieved from the online document store, along with improvements to the serialization and deserialization of float vectors.
Changes
-
Feature Store Enhancements
- Updated
retrieve_online_documentsto accept an optional list of features (features). - Added checks to ensure only a single feature view is used for document retrieval.
- Modified logic to handle both single and multiple feature retrieval scenarios.
- Updated
-
Utility Functions
- Added
_serialize_vector_to_float_listfunction infeast/utils.pyfor serializing float vectors toValueProto.
- Added
-
Key Encoding Utilities
- Introduced
serialize_f32anddeserialize_f32functions infeast/infra/key_encoding_utils.pyfor efficient serialization and deserialization of float lists.
- Introduced
-
Provider and Online Store Changes
- Updated various provider classes (
passthrough_provider.py,faiss_online_store.py,sqlite.py,postgres.py,elasticsearch.py,qdrant.py) to handle the newrequested_featuresparameter. - Ensured backward compatibility by keeping the
requested_featureparameter optional.
- Updated various provider classes (
-
Refactoring
- Simplified the
serve_registrymethod definition for better readability.
- Simplified the
Testing
- Added unit tests to cover scenarios involving single and multiple feature retrieval.
- Verified that the existing tests pass to ensure backward compatibility.
Documentation
- Updated docstrings to reflect the new parameters and their usage.
- Added comments to explain the new utility functions and their purposes.
Which issue(s) this PR fixes:
Step along the path to ship Milvus (#4364)
Misc
Related to this: #4751