17. Inférence Distante
ECHO est conçu pour être aussi rapide et efficace que possible, sans pour autant saturer l'ordinateur qui l'héberge (le serveur). Pour y parvenir, il utilise une technologie appelée Edge Computing (ou inférence distante).
L'Alliance du Serveur et de Votre Ordinateur
Lorsque vous envoyez de grands documents à lire (comme des PDF ou des historiques longs), ECHO doit transformer et mémoriser chaque passage. Ce processus (appelé vectorisation) demande une importante puissance de calcul.
Au lieu de faire tout ce travail sur le serveur central, ECHO utilise la carte graphique (GPU) de l'ordinateur de bureau depuis lequel vous naviguez. Sur téléphone mobile ou tablette, le système préserve automatiquement votre batterie en laissant le serveur effectuer le calcul.
Avantages pour l'Utilisateur
- Traitement accéléré sur ordinateur de bureau : Votre poste traite les vecteurs localement dans le navigateur avec un indicateur d'initialisation discret.
- Soulagement du serveur : Plusieurs utilisateurs peuvent interroger et indexer des documents simultanément sans saturer le processeur du serveur central.
- Continuité transparente : Vous n'avez aucun logiciel ou extension à installer. Sur mobile ou si votre appareil ne dispose pas d'accélération compatible, le serveur prend immédiatement le relais sans interrompre votre session.
⚙️ Dossier d'Ingénierie & Spécifications
Architecture de l'Edge Embedding Bridge (edge_embed_bridge_filter.py v1.26 & app.py v2.4)
Le pont d'inférence déporte le calcul des embeddings 1024D vers le navigateur Desktop via WebGPU / WebAssembly (WASM).
1. Bypass Mobile & Injection Desktop
Le filtre Inlet (priorité 2) inspecte l'en-tête User-Agent : sur terminal mobile, il court-circuite toute injection JavaScript pour forcer le fallback CPU immédiat. Sur Desktop, il injecte un module JS doté d'un HUD d'initialisation centré horizontalement sur la zone de chat (left: calc(50% + 125px) sur desktop pour compenser la sidebar Open WebUI) et d'un auto-reload sur changement de version, chargeant onnx-community/harrier-oss-v1-0.6b-ONNX (quantification q4f16) via Transformers.js.
2. Multiplexage Multi-Onglets & WebSocket (/ws/edge-embed)
Chaque onglet s'identifie auprès du concentrateur FastAPI (echo-embedding, port 7997, IP .30) avec un client_id UUID et signale son état de visibilité (visibility) dans le registre active_edge_clients (statuts connecting, active, incompatible).
3. Fallback CPU Asynchrone Instantané
Si le matériel client est incompatible (sendIncompatibleAndExit) ou si la connexion WebSocket est rompue, le worker annule immédiatement les asyncio.Future en attente (pending_edge_requests) et bascule sur l'inférence CPU locale propulsée par llama-cpp-python (modèle microsoft/Harrier-OSS-v1-0.6B, fichier harrier-oss-v1-0.6b.f16.gguf, MAX_LENGTH=4096) avec CLS Token Pooling (index 0) et normalisation L2.