### Description

Currently, `text_expansion` queries are limited to using rank_features field types.

As we [brought back sparse_vector](https://github.com/elastic/elasticsearch/issues/98104) field type, we want text_expansion queries to be able to work with `sparse_vector` fields as well.

`rank_features` field type should keep being usable in `text_expansion` queries. We don't want to deprecate until the UI and clients that set this up are ready to migrate to `sparse_vector`.
x-pack/plugin/ml/qa/native-multi-node-tests/src/javaRestTest/java/org/elasticsearch/xpack/ml/integration/TextExpansionQueryIT.java
for (var input : inputs) {
            Response inference = infer(input, modelId);
            List<Map<String, Object>> responseMap = (List<Map<String, Object>>) entityAsMap(inference).get("inference_results");
            Map<String, Object> inferenceResult = responseMap.get(0);
            var idWeights = (Map<String, Float>) inferenceResult.get("predicted_value");
            tokenWeights.add(idWeights);
        }
        
        createRankFeaturesIndex(indexName);
        bulkIndexDocs(inputs, tokenWeights, indexName);
        
        for (int i = 0; i < 5; i++) {
            int randomInput = randomIntBetween(0, inputs.size() - 1);
            var textExpansionSearchResponse = textExpansionSearch(indexName, inputs.get(randomInput), modelId, "ml.tokens");
            assertOkWithErrorMessage(textExpansionSearchResponse);
            Map<String, Object> responseMap = responseAsMap(textExpansionSearchResponse);
            List<Map<String, Object>> hits = (List<Map<String, Object>>) MapHelper.dig("hits.hits", responseMap);
            Map<String, Object> topHit = hits.get(0);
            String sourceText = (String) MapHelper.dig("_source.text_field", topHit);
            assertEquals(inputs.get(randomInput), sourceText);
        }
    }
    public void testWithPipelineIngest() throws IOException {
        String modelId = "text-expansion-pipeline-test";
        String indexName = modelId + "-index";
        createTextExpansionModel(modelId);
        putModelDefinition(modelId, BASE_64_ENCODED_MODEL, RAW_MODEL_SIZE);
        putVocabulary(