def _vectorise_tensor_fields(self) -> None:
        """
        This step vectorises all the unresolved tensor fields.
        1. It infers modality for each field based on the content, and index settings.
            * For unstructured index, it infers modality based on the treat_url_as_image or media config
            * For structured, it also checks is the modality matches the field type defined in the index setting
        2. For each modality, we collect the fields and send to Inference for vectorisation, up to 2 times
            * The first time is for top level tensor fields
            * The second time is for subfields of multi-modal combo fields
        3. The result will be then populated to the tensor field. Individual errors happened during preprocessing
            and vectorisation will also be returned and collected by the `add_docs_response_collector`
        """
        with RequestMetricsStore.for_request().time("add_documents.inference.infer_modality"):
            modalities = self._infer_modalities()

        for modality in modalities:
            self._vectorise_fields(modality, for_top_level_field=True)
            self._vectorise_fields(modality, for_top_level_field=False)

        This step vectorises all the unresolved tensor fields.
        1. It infers modality for each field based on the content, and index settings.
            * For unstructured index, it infers modality based on the treat_url_as_image or media config
            * For structured, it also checks is the modality matches the field type defined in the index setting
        2. For each modality, we collect the fields and send to Inference for vectorisation, up to 2 times
            * The first time is for top level tensor fields
            * The second time is for subfields of multi-modal combo fields
        3. The result will be then populated to the tensor field. Individual errors happened during preprocessing
            and vectorisation will also be returned and collected by the `add_docs_response_collector`
        
src/marqo/core/vespa_index/add_documents_handler.py