def construct_vector_input_batches(query: Optional[Union[str, Dict]], media_download_headers: Optional[Dict] = None) \
        -> QueryContentCollector:
    """Splits images from text in a single query (either a query string, or dict of weighted strings).

    Args:
        query: a string query, or a dict of weighted strings.
        media_download_headers: headers to use when downloading media

    Returns:
        A SearchQueryCollector object with the text and media content separated.
    """
    # TODO - infer this from model
    query_content_list = []
    if isinstance(query, str):
        query_content_list.append(
            QueryContent(
                content=query,
                modality=infer_modality(query, media_download_headers=media_download_headers)
            )
        )
    elif isinstance(query, dict):  # is dict:
        for query, weights in query.items():
            query_content_list.append(
                QueryContent(
                    content=query,
                    modality=infer_modality(query, media_download_headers=media_download_headers)
                )
            )
    elif query is None:
        pass
    else:
        raise ValueError(f"Incorrect type for query: {type(query).__name__}")
    return QueryContentCollector(queries=query_content_list)
Splits images from text in a single query (either a query string, or dict of weighted strings).

    Args:
        query: a string query, or a dict of weighted strings.
        media_download_headers: headers to use when downloading media

    Returns:
        A SearchQueryCollector object with the text and media content separated.
    
src/marqo/tensor_search/tensor_search.py