def _update_score_modifiers(self, original_doc: Optional[SemiStructuredVespaDocument], 
                              numeric_field_map: Dict[str, Any],
                              vespa_fields: Dict[str, Any]) -> None:
        """Updates score modifiers for numeric fields in Vespa documents.
        
        This method handles the updating of score modifiers for numeric fields during partial document updates.
        It identifies which score modifiers need to be removed (fields that existed in the original document
        but are no longer present) and which ones need to be modified (fields with new values).
        
        Args:
            original_doc: The original document before the update, if it exists
            numeric_field_map: Dictionary mapping field names to their numeric values (both int and float)
            vespa_fields: Dictionary to store the update statements for Vespa fields
            
        Returns:
            None
        
        Note:
            Score modifiers are only updated if there are changes to numeric fields.
            The method creates a Vespa update operation that either replaces or removes score modifiers.
        """
            
        original_fields = {}
        # Find score modifiers to remove
        score_modifier_to_be_removed = []
        if original_doc:
            original_fields.update(original_doc.fixed_fields.int_fields)
            original_fields.update(original_doc.fixed_fields.float_fields)
            score_modifier_to_be_removed = [
                {"p": field} for field in original_fields
                if field not in numeric_field_map 
                and original_doc.fixed_fields.field_types.get(field) in (MarqoFieldTypes.INT_MAP.value, MarqoFieldTypes.FLOAT_MAP.value)
            ]


        score_modifiers = {}
        
        if len(numeric_field_map) > 0:
            score_modifiers["modify"] = {
                "operation": "replace",
                "create": True,
                "cells": numeric_field_map
            }
            
        if len(score_modifier_to_be_removed) > 0:
            score_modifiers["remove"] = {
                "addresses": score_modifier_to_be_removed
            }
            
        if len(score_modifiers) > 0:
            vespa_fields[common.SCORE_MODIFIERS] = score_modifiers
Updates score modifiers for numeric fields in Vespa documents.
        
        This method handles the updating of score modifiers for numeric fields during partial document updates.
        It identifies which score modifiers need to be removed (fields that existed in the original document
        but are no longer present) and which ones need to be modified (fields with new values).
        
        Args:
            original_doc: The original document before the update, if it exists
            numeric_field_map: Dictionary mapping field names to their numeric values (both int and float)
            vespa_fields: Dictionary to store the update statements for Vespa fields
            
        Returns:
            None
        
        Note:
            Score modifiers are only updated if there are changes to numeric fields.
            The method creates a Vespa update operation that either replaces or removes score modifiers.
        
src/marqo/core/semi_structured_vespa_index/semi_structured_vespa_index.py