Contexte et limites des bases vectorielles

Les bases vectorielles classiques telles que Pinecone ou Milvus stockent les embeddings dans un espace Euclidien et utilisent la similarité cosinus pour récupérer les documents. Le README indique que cette approche « agit comme un classeur statique », ce qui conduit à la récupération d’informations contradictoires et à des boucles logiques chez les agents autonomes. Le fichier euclidean_baseline.py illustre concrètement cet échec en comparant les résultats d’un jeu de données empoisonné.

Principe de l’infrastructure électrodynamique

JulianFlux remplace la métrique de distance par une équation inspirée de la force de Lorentz : F = q(E + S). Les embeddings de 768 dimensions sont projetés sur un sous‑espace de 128 dimensions grâce au Julian‑Gauss Fast Transform (JG‑FT), ce qui conserve la précision de mapping tout en réduisant le coût arithmétique. Un paramètre σ (bande passante gaussienne) est calculé dynamiquement à partir de la distance au plus proche voisin, adaptant le champ aux densités sémantiques locales. Les données reçoivent une charge topologique : -1.0 pour les contradictions, +1.0 pour les faits, attribuée via des portes logiques NLI (déployées dans julian_flux_engine.py avec un cross‑encoder DeBERTa‑v3). Le champ électrique E repousse ainsi les hallucinations, tandis que la loi de Faraday (-∂A/∂t) introduit une décroissance temporelle des faits obsolètes, créant un champ répulsif contre les politiques d’entreprise dépréciées. Enfin, le flux de Poynting (S = E ⌟ B) génère un vecteur de « momentum sémantique » qui guide l’agent de l’étape A à B puis C.

Implémentation et benchmarks

Le dépôt propose quatre scripts : euclidean_baseline.py (défaut Euclidien), julianflux_educational_mvp.py (solution rapide avec clustering géométrique), scale_ab_benchmark.py (test d’échelle) et julian_flux_engine.py (moteur complet avec DeBERTa). Le benchmark scale_ab_benchmark.py exécute simultanément le RAG standard et JulianFlux sur des milliers de vecteurs et rapporte un taux d’hallucination de 0,0 %. Le README fournit les commandes d’installation :

git clone https://github.com/julianjohnson-web/julianflux-research.git
cd julianflux-research
pip install -r requirements.txt
python scale_ab_benchmark.py

Ces étapes permettent de reproduire les résultats sur une machine locale.

Analyse des contraintes et perspectives

Le modèle repose sur plusieurs hypothèses : la projection JG‑FT suppose que la distribution normale des embeddings préserve les relations sémantiques, ce qui peut varier selon le domaine d’application. Le calcul dynamique de σ nécessite la recherche du voisin le plus proche, introduisant une complexité O(n log n) qui pourrait limiter la latence en production. L’attribution de charges via NLI dépend de la précision du cross‑encoder ; un mauvais classificateur pourrait inverser les signes et amplifier les erreurs. Enfin, la version Rust annoncée pour l’entreprise promet une exécution « zero‑copy », mais aucune métrique de performance n’est fournie, ce qui rend difficile l’évaluation du gain réel. Malgré ces réserves, le cadre démontre une approche originale pour intégrer des lois physiques dans le raisonnement vectoriel, ouvrant la voie à des systèmes de récupération plus résilients aux données toxiques.