multilingual-e5-small — Core ML (4-Bit palettisiert)

multilingual-e5-small von intfloat, konvertiert nach Core ML für die On-Device-Nutzung in Lura Docs — einem Dokumentenscanner, der OCR, Suche und KI vollständig auf dem Gerät ausführt. Kein Backend, keine Cloud-Aufrufe.

Die Gewichte stammen von intfloat/Microsoft und stehen unter MIT. Dieses Repository enthält lediglich eine konvertierte, quantisierte Fassung. Details zu Herkunft und Änderungen: siehe NOTICE.

Inhalt

e5-small-pal4.aar (59,8 MB, Apple Archive) enthält beides — Modell und Tokenizer gehören zusammen:

Datei Größe Zweck
E5Small.mlpackage 59,2 MB Core ML ML Program, 4-Bit palettisiert
e5-vocab.tsv 5,3 MB Unigram-Vokabular (Token + Score je Zeile), 250.002 Einträge

Bewusst in einem Archiv: Ein Vokabular, das nicht zum Modell passt, liefert keine Fehlermeldung, sondern still falsche Vektoren.

Schnittstelle

Eingang:  input_ids     Int32  [1, S],  S ∈ {64, 128, 256, 512}
Ausgang:  embedding     Float32 [1, 384]  (L2-normalisiert)

Wichtig für die Verwendung:

  • Präfixe sind Pflicht. e5 ist asymmetrisch trainiert: Dokumente mit passage: , Suchanfragen mit query: einleiten. Ohne Präfix sinkt die Trefferqualität, ohne dass etwas offensichtlich kaputtgeht.
  • Nur input_ids. Die Attention-Maske leitet das Modell selbst aus dem Padding-Token (1) ab. Grund: Core ML erlaubt unterhalb iOS 18 nur einen Eingang mit EnumeratedShapes.
  • Auffüllen auf eine der vier Längen. Andere Längen weist Core ML zurück.
  • Mean-Pooling und L2-Norm sind im Graphen. Der Ausgang ist der fertige Satzvektor — nicht selbst nachrechnen.
  • Compute Units explizit setzen. Der Standardwert .all ist für dieses Modell 7× langsamer, weil die GPU schlecht passt. .cpuAndNeuralEngine verwenden.

Gemessene Qualität

Retrieval über einen Korpus deutscher/englischer Alltagsdokumente (20 Dokumente, 25 Fragen: wörtlich, flektiert, Synonym, Umschreibung, sprachübergreifend):

Variante Top-1 MRR
BM25 (FTS5, Referenz) 14/25 (56 %) 0,653
e5-small, PyTorch 19/25 (76 %) 0,858
e5-small, Core ML fp16 19/25 (76 %) 0,858
e5-small, Core ML 4-Bit (dieses Modell) 19/25 (76 %) 0,854

Die Quantisierung kostet nichts Messbares. Dass gerade 4-Bit-Palettisierung so gut trägt, passt zur Struktur: 96 M der 117,7 M Parameter (82 %) stecken in der Embedding-Tabelle.

Bekannte Schwäche: sprachübergreifend nur 1/5 — eine deutsche Frage findet ein englisches Dokument selten. Multilinguale Embeddings gruppieren nach Sprache. Das Modell ist hier nicht besser als BM25, aber auch nicht schlechter.

Latenz (iPhone, iOS 26.5.2)

Compute Units 32 Tok 100 Tok 250 Tok 500 Tok
CPU_ONLY 3,0 ms 5,0 ms 10,2 ms 26,0 ms
CPU_AND_NE 2,9 ms 4,9 ms 10,0 ms 26,4 ms
ALL (mit GPU) 15,5 ms 31,7 ms 73,5 ms 185,9 ms

Die Neural Engine bringt derzeit nichts (1,02×) — die CPU reicht. Ein Bestand von 500 Dokumenten ist in ~16 s indexiert.

Reproduzieren

Die Konvertierung ist skriptiert und nachvollziehbar: Tools/retrieval-spike/ im LuraDocCore-Repository (convert_ne.py + pack.sh).

Lizenz

MIT — wie das ursprüngliche Modell. Siehe LICENSE und NOTICE.

Downloads last month

-

Downloads are not tracked for this model. How to track
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support

Model tree for StenmannsAr/lura-docs-models

Quantized
(264)
this model