text-embedding-3-small, et débit local lorsque bge-m3 transite par ONNX Runtime et le fournisseur Core ML — sans oublier que la mémoire unifiée impose un plafond physique sur le batch.
Sur cette page : Latence et coûts · Balayage batch · Clés de cache · Repli · FAQ
RAG sur Mac M4 : matrice OpenAI text-embedding-3-small vs bge-m3 ONNX + Core ML EP — seuils, balayage batch, clés de cache, repli, checklist Mac loué (thermique stable). Liens : quotas RAG, index ANN, CLIP / SigLIP.
Trois frictions avant de figer la pile
1. Tokenizer : casse, longueur max, espaces insécables — divergence OpenAI vs ONNX, recall illusoire sans jeu doré commun rejoué à chaque release. Toute régression silencieuse se détecte en comparant les identifiants de tokens sur un même fichier CSV de référence.
2. Dimensions : plus de dims alourdissent ANN et RAM ; l’API facture les jetons — tableau obligatoire pour aligner finance et ingénierie.
3. Portable : modes d’énergie variables — Mac loué pour comparer Core ML et TLS comme en prod.
Latence, coût et dimensions
Mesurez p50/p95 OpenAI, projetez €/M jetons, fixez un plafond (revue si projection > 3× coût CPU amorti du Mac de référence — repère 2026 SaaS vs captive).
Choisissez dim 512/1024/1536 après rappel sur slice étiquetée : moins de dims allègent ANN au prix du bruit lexical.
bge-m3 : coût ingénieur + machine ; débit tokens/s sur 30 min post-chauffe, pas le premier batch seul. Si vous comparez à OpenAI, exprimez les deux courbes dans la même unité (tokens utiles par minute) pour que la direction puisse trancher sans ressaisir la feuille Excel.
| Critère | OpenAI text-embedding-3-small | bge-m3 ONNX + Core ML EP |
|---|---|---|
| Latence dominante | Réseau TLS, files côté fournisseur | Partition ANE/CPU, taille de batch |
| Coût marginal | Jetons d’entrée facturés | RAM unifiée, cycles ingénieur |
| Dimensions | Réduction paramétrique côté API | Projection post-pooling ou graphe figé |
| Quantification | Gérée amont | INT8 dynamique ou statique à valider |
| Seuil d’embrayage (exemple) | Stopper si projection > 3× coût CPU amorti mensuel | Stopper batch si RSS > 70 % de la RAM machine de référence |
Lecture opérationnelle du tableau : lorsque votre trafic embeddings reste modéré mais irrégulier, la voie OpenAI évite la dette ONNX tant que le seuil de projection reste sous contrôle. Dès que le volume horaire devient massif ou que la confidentialité impose le traitement local, bge-m3 avec Core ML EP gagne lorsque le batch nominal tient dans la marge mémoire et que le rappel post-quantification reste dans l’enveloppe produit. Les deux colonnes ne s’excluent pas : de nombreuses équipes conservent OpenAI comme filet de secours dimensionné au minimum pendant qu’elles durcissent le chemin ONNX sur Mac loué — la cohérence des clés de cache rend ce double fournisseur supportable sans corruption d’index.
Balayage batch et quantification
1. Figer commit, hash ONNX, version onnxruntime — traçabilité MacBook vs Mac loué.
2. Core ML EP + journaux ops CPU résiduelles pour chaque build macOS.
3. Balayage géométrique batch=1 → doubler jusqu’à rupture RAM ou SLO p95 → reculer d’un cran : batch nominal.
4. INT8 sur slice étiquetée : si recall chute, float ou batch plus petit.
5. Soak ≥2 h sur Mac mini M4 loué, même binaire/corpus — pas le portable comme contrat capacité.
6. Publier batch nominal, p95, throughput, erreurs dans docs release.
# Gabarit de clé de cache (adapter hachage et namespaces)
sha256(normalize(text)) + "|" + model_id + "|dim=" + str(dim) + "|q=" + quant_tag + "|ep=coreml"Clés de cache
Clé = texte normalisé + model_id + dim + quant + ep (coreml/cpu) ; si double voie, provider=openai|local pour éviter mélange ANN.
Repli et garde-fous
Échelle : batch ↓ → CPU si op critique manquant → OpenAI dim min si file > SLO. 429/timeouts : backoff borné + budget journalier partagé entre workers pour éviter les tempêtes nocturnes. Chaque bascule porte la build macOS et la version ORT dans le ticket (routage multi-modèle), comme pour toute passerelle LLM critique.
Checklist nœud distant
Avant de figer les chiffres transmis à la finance ou au client, rejouez la même charge sur le Mac loué que celle utilisée en préproduction — seule cette étape écarte les biais thermiques des portables et valide les seuils du tableau.
- OS +
onnxruntimealignés préprod. - Corpus doré versionné (ordre de grandeur milliers de segments).
- p50/p95, RSS max, throughput, erreurs, recall@k.
- Rapport go/no-go archivé.
FAQ
Pro vs Max ? Bande passante mémoire différente — recalculer le batch nominal par SKU ou prendre le plus petit.
Deux dims dans un ANN ? Éviter sans collections séparées ou renormalisation explicite.
Rebalayer quand ? macOS / Core ML Tools majeurs, ou changement tokenizer.
Benchmark ? Un Mac mini M4 loué supprime sommeil, VPN et gestion d’énergie des portables : vous obtenez des chronomètres alignés avec la facture location et des sockets stables pour enchaîner les files d’attente d’indexation sans bruit parasite — c’est la même discipline que pour les nœuds d’inférence LLM traités ailleurs sur LlmMac.
Repères citables :
- Projection API > 3× coût CPU amorti → revoir voie managée.
- RSS > 70 % RAM après modèle + ANN → réduire batch.
- Soak 2 h sur Mac loué avant release.
Pages publiques : parcourez les tarifs, les forfaits sur achat et le centre d’aide — lecture sans compte. Pour aller plus loin côté RAG, ouvrez le blog technique.