StenmannsAr/lura-docs-models
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:
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 mitquery: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 mitEnumeratedShapes. - 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
.allist für dieses Modell 7× langsamer, weil die GPU schlecht passt..cpuAndNeuralEngineverwenden.
Gemessene Qualität
Retrieval über einen Korpus deutscher/englischer Alltagsdokumente (20 Dokumente, 25 Fragen: wörtlich, flektiert, Synonym, Umschreibung, sprachübergreifend):
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)
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.
