### Elasticsearch Version

8.9.0

### Installed Plugins

_No response_

### Java Version

_bundled_

### OS Version

any

### Problem Description

If the context text supplied to the Question Answering task is longer than the model's `max_sequence_length` and `truncate` is set to `none` then inference on the model fails with the message:

```
status_exception: question answering result has invalid dimension, expected 2 found [6] 
```
<img width="1438" alt="Screenshot 2023-07-25 at 08 21 37" src="https://github.com/elastic/elasticsearch/assets/2353640/12d296f6-03b2-4cda-89ce-7399348c4104">


### Steps to Reproduce

Use long input text to the question answering task


### Work Aroundf
The fix is to truncate the context which unfortunately may remove the part of the document containing the answer. For reference the call is documented here

```
POST _ml/trained_models/distilbert-base-cased-distilled-squad/deployment/_infer
{
  "docs":[{ "text_field": "question answering context"}],
  "inference_config": {
    "question_answering": {
      "question": "The question to ask",
      "tokenization": {
        "bert": {
          "truncate": "second",
          "span": -1          
        }
      }
    }
  }
}
````

x-pack/plugin/ml/src/main/java/org/elasticsearch/xpack/ml/inference/nlp/tokenizers/TokenizationResult.java
* @param tokenId2s Sequence 2 ids
         * @param tokenMap2 Sequence 2 token map
         * @return The builder object
         */
        TokensBuilder addSequencePair(List<Integer> tokenId1s, List<Integer> tokenMap1, List<Integer> tokenId2s, List<Integer> tokenMap2);
        /**
         * Builds the token object
         * @param input the original sequences input, may be a single sequence or a pair of sequences
         * @param truncated Was this truncated when tokenized
         * @param allTokens The tokens with their values and offsets. Should match relatively to the input provided
         * @param spanPrev how many tokens from the previous subsequence are in this one. Only relevant when windowing
         * @param seqId the sequence id, unique per tokenized sequence, useful for windowing
         * @return A new Tokens object
         */
        Tokens build(List<String> input, boolean truncated, List<List<? extends DelimitedToken>> allTokens, int spanPrev, int seqId);
        /**
         * Build the token object accounting for a single tokenized sequence
         * @param input the original sequence input
         * @param truncated Was this truncated when tokenized
         * @param allTokens The tokens with their values and offsets
         * @param spanPrev how many tokens from the previous subsequence are in this one. Only relevant when windowing
         * @param seqId the sequence id, unique per tokenized sequence, useful for windowing
         * @return A new Tokens object
         */
        default Tokens build(String input, boolean truncated, List<? extends DelimitedToken> allTokens, int spanPrev, int seqId) {
            return build(List.of(input), truncated, List.of(allTokens), spanPrev, seqId);
        }
    }
}