This is a CoreML conversion of
intfloat/multilingual-e5-small for iOS/macOS deployment.
Multilingual E5 Small is a multilingual sentence embedding model optimized for semantic search and retrieval tasks. This CoreML version enables on-device inference on Apple platforms.
1import CoreML
2
3// Load model
4let config = MLModelConfiguration()
5config.computeUnits = .cpuAndNeuralEngine
6let model = try MLModel(contentsOf: modelURL, configuration: config)
7
8// Prepare inputs (after tokenization)
9let inputIds: MLMultiArray = // tokenized input
10let attentionMask: MLMultiArray = // attention mask
11
12// Run inference
13let input = try MLDictionaryFeatureProvider(dictionary: [
14 "input_ids": MLFeatureValue(multiArray: inputIds),
15 "attention_mask": MLFeatureValue(multiArray: attentionMask)
16])
17let output = try model.prediction(from: input)
18let embeddings = output.featureValue(for: "embeddings")?.multiArrayValue
1import Tokenizers
2
3let tokenizer = try await AutoTokenizer.from(modelFolder: tokenizerURL)
4let encoded = tokenizer.encode(text: "query: your text")
1import coremltools as ct
2
3mlmodel = ct.convert(
4 traced_model,
5 inputs=[
6 ct.TensorType(name="input_ids", shape=(1, 256), dtype=np.int32),
7 ct.TensorType(name="attention_mask", shape=(1, 256), dtype=np.int32),
8 ],
9 outputs=[
10 ct.TensorType(name="embeddings", dtype=np.float16),
11 ],
12 convert_to="mlprogram",
13 minimum_deployment_target=ct.target.iOS17,
14 compute_precision=ct.precision.FLOAT16,
15)
1@article{wang2024multilingual,
2 title={Multilingual E5 Text Embeddings: A Technical Report},
3 author={Wang, Liang and Yang, Nan and Huang, Xiaolong and Yang, Linjun and Majumder, Rangan and Wei, Furu},
4 journal={arXiv preprint arXiv:2402.05672},
5 year={2024}
6}