Retrieves the top k closest document features. Note, embeddings are a subset of features. Args: features: The list of features that should be retrieved from the online store. query: The query to retrieve the closest document features for. top_k:
(
self,
query: Union[str, List[float]],
top_k: int,
features: List[str],
distance_metric: Optional[str] = "L2",
)
| 3502 | return response |
| 3503 | |
| 3504 | def retrieve_online_documents( |
| 3505 | self, |
| 3506 | query: Union[str, List[float]], |
| 3507 | top_k: int, |
| 3508 | features: List[str], |
| 3509 | distance_metric: Optional[str] = "L2", |
| 3510 | ) -> OnlineResponse: |
| 3511 | """ |
| 3512 | Retrieves the top k closest document features. Note, embeddings are a subset of features. |
| 3513 | |
| 3514 | Args: |
| 3515 | features: The list of features that should be retrieved from the online store. |
| 3516 | query: The query to retrieve the closest document features for. |
| 3517 | top_k: The number of closest document features to retrieve. |
| 3518 | distance_metric: The distance metric to use for retrieval. |
| 3519 | """ |
| 3520 | if isinstance(query, str): |
| 3521 | raise ValueError( |
| 3522 | "Using embedding functionality is not supported for document retrieval. Please embed the query before calling retrieve_online_documents." |
| 3523 | ) |
| 3524 | |
| 3525 | ( |
| 3526 | available_feature_views, |
| 3527 | _, |
| 3528 | ) = utils._get_feature_views_to_use( |
| 3529 | registry=self.registry, |
| 3530 | project=self.project, |
| 3531 | features=features, |
| 3532 | allow_cache=True, |
| 3533 | hide_dummy_entity=False, |
| 3534 | ) |
| 3535 | feature_view_set = set() |
| 3536 | for _feature in features: |
| 3537 | fv_name, _, _ = utils._parse_feature_ref(_feature) |
| 3538 | feature_view = self.get_feature_view(fv_name) |
| 3539 | feature_view_set.add(feature_view.name) |
| 3540 | if len(feature_view_set) > 1: |
| 3541 | raise ValueError("Document retrieval only supports a single feature view.") |
| 3542 | requested_features = [ |
| 3543 | utils._parse_feature_ref(f)[2] |
| 3544 | for f in features |
| 3545 | if isinstance(f, str) and ":" in f |
| 3546 | ] |
| 3547 | requested_feature_view_name = list(feature_view_set)[0] |
| 3548 | for feature_view in available_feature_views: |
| 3549 | if feature_view.name == requested_feature_view_name: |
| 3550 | requested_feature_view = feature_view |
| 3551 | break |
| 3552 | else: |
| 3553 | raise ValueError( |
| 3554 | f"Feature view {requested_feature_view} not found in the registry." |
| 3555 | ) |
| 3556 | |
| 3557 | provider = self._get_provider() |
| 3558 | document_features = self._retrieve_from_online_store( |
| 3559 | provider, |
| 3560 | requested_feature_view, |
| 3561 | requested_features, |
no test coverage detected