Jev et le retour du classificateur zero-shot

0
minutes de lecture
Jev et le retour du classificateur zero-shot

Table des matières

Vous avez des questions ou souhaitez une démo ?

Nous sommes là pour vous aider ! Cliquez sur le bouton ci-dessous et nous vous recontacterons.

Demander une démo
Partager cet article :

Jev est un modèle qui excelle dans la prise de décisions typées. Il fonctionne ainsi : vous lui envoyez du contexte ainsi qu’un ensemble fixe de questions et d’options, et il renvoie des choix, des scores et des probabilités au lieu de générer du texte. C’est ce que nous appelons un modèle « System One ».

Mais la classification n’a rien de nouveau, tout comme les sorties structurées, les petits modèles, ou la lecture de probabilités à partir des logits. Cet historique explique en partie les réactions partagées à propos de Jev :

L’observation de Mikhail Parakhin sur les réactions à Jev, suivie de la réponse en mème « mid-curve » d’Eddie Zhou

Les sceptiques ont un vrai argument, mais Jev a aussi une vraie place dans cet écosystème.  Pour mieux comprendre, nous devrions présenter l’espace complet des solutions.

Quelles sont les alternatives ?

Lorsqu’un système a besoin d’un libellé, d’un score ou d’une réponse oui/non, il existe quatre options raisonnables :

< ;div class="overflow-scroll" role="region" aria-label="Approaches comparison"> ;
 < ;table class="rich-text-table_component"> ;
   < ;thead class="rich-text-table_head"> ;
     < ;tr class="rich-text-table_row"> ;
       < ;th class="rich-text-table_header" scope="col"> ;Approche< ;/th> ;
       < ;th class="rich-text-table_header" scope="col"> ;Pourquoi l’utiliser< ;/th> ;
       < ;th class="rich-text-table_header" scope="col"> ;Compromis< ;/th> ;
     < ;/tr> ;
   < ;/thead> ;
   < ;tbody class="rich-text-table_body"> ;
     < ;tr class="rich-text-table_row"> ;
       < ;td class="rich-text-table_cell"> ;Un LLM généraliste< ;/td> ;
       < ;td class="rich-text-table_cell"> ;Zero-shot, flexible, et peut aussi générer des arguments ou des explications. Sans doute une « intelligence plus élevée » via le calcul à l’inférence (raisonnement).< ;/td> ;
       < ;td class="rich-text-table_cell"> ;Payer la latence et le coût d’un modèle auto-régressif pour une petite décision< ;/td> ;
     < ;/tr> ;
     < ;tr class="rich-text-table_row"> ;
       < ;td class="rich-text-table_cell"> ;Un classifieur open zero-shot< ;/td> ;
       < ;td class="rich-text-table_cell"> ;Peu coûteux, local et contrôlable< ;/td> ;
       < ;td class="rich-text-table_cell"> ;Qualité variable  le choix du modèle et le serving vous reviennent< ;/td> ;
     < ;/tr> ;
     < ;tr class="rich-text-table_row"> ;
       < ;td class="rich-text-table_cell"> ;Un classifieur fine-tuné< ;/td> ;
       < ;td class="rich-text-table_cell"> ;Souvent la meilleure option pour une tâche stable, à fort volume, avec de bons labels< ;/td> ;
       < ;td class="rich-text-table_cell"> ;Collecte de données, entraînement, déploiement, dérive, et une taxonomie moins flexible< ;/td> ;
     < ;/tr> ;
     < ;tr class="rich-text-table_row"> ;
       < ;td class="rich-text-table_cell"> ;Jev< ;/td> ;
       < ;td class="rich-text-table_cell"> ;Flexibilité zero-shot via une API propre et hébergée< ;/td> ;
       < ;td class="rich-text-table_cell"> ;Qualité dépendante de la tâche, pas de texte généré, et dépendance au fournisseur< ;/td> ;
     < ;/tr> ;
   < ;/tbody> ;
 < ;/table> ;
< ;/div> ;


Le cas Jev : une équipe peut modifier la question et les options sans constituer un nouveau jeu d’entraînement, tout en évitant le travail nécessaire pour bien servir un modèle. Personne ne devrait faire la fine bouche. « On pourrait le construire nous-mêmes » est vrai pour la plupart des produits d’infrastructure.

Les reproductions open maintiennent la revendication de nouveauté sous contrôle. Des implémentations utilisant Qwen and SGLang, DiffusionGemma and vLLM et Kev recréent une grande partie de l’API ou de la forme du modèle.

85,7 % pour Jev et 79,6 % pour Kev-8B sur n=764

Les tests externes de Parallel ont également jugé Jev compétitif sur le reranking, tandis que des modèles spécialisés ont tout de même remporté deux tâches de classification.

Ce que nous avons observé chez Glean

Reste une question pratique : quand la combinaison de flexibilité zero-shot et d’inférence hébergée de Jev surpasse-t-elle réellement les alternatives ? Nous avons testé quatre décisions bornées chez Glean, pour lesquelles nous avions déjà une baseline et pouvions tester la qualité requise en environnement enterprise. La plupart de ces baselines reposent sur des systèmes basés sur des LLM  dans ces expérimentations, nous savons donc nous attendre à une amélioration de deux ordres de grandeur sur les coûts et la latence. Les résultats allaient de sensiblement moins bons que la production à à la fois plus rapides et plus précis qu’un routeur basé sur des LLM.

Classification de requêtes

La classification de requêtes associe une demande à une tâche générale utilisée par les systèmes en aval. C’est une charge de travail naturelle pour Jev car, même si, par requête, l’espace de labels est connu à l’avance, la taxonomie peut tout de même évoluer plus vite qu’un classifieur fine-tuné ne peut être réentraîné.

Pour cette expérience, nous nous concentrons sur la mesure de l’accord de Jev par rapport à nos prédictions en production/baseline, qui sont basées sur des LLM. Nous attendons et observons une forte accélération du débit offline avec Jev, donc nous rapportons l’accord comme un proxy simple de la qualité. Nous avons également établi une baseline avec Laya, un modèle de décision open-weight, ainsi qu’avec une version fine-tunée de Laya. Ce fine-tuning a été exécuté localement en quelques heures, et le modèle est aussi suffisamment petit pour être servi sur une machine de développeur.

< ;div class="overflow-scroll" role="region" aria-label="Experiment results"> ;
 < ;table class="rich-text-table_component"> ;
   < ;thead class="rich-text-table_head"> ;
     < ;tr class="rich-text-table_row"> ;
       < ;th class="rich-text-table_header" scope="col"> ;Expérience< ;/th> ;
       < ;th class="rich-text-table_header" scope="col"> ;Accord sur la tâche générale< ;/th> ;
       < ;th class="rich-text-table_header" scope="col"> ;Perf< ;/th> ;
     < ;/tr> ;
   < ;/thead> ;
   < ;tbody class="rich-text-table_body"> ;
     < ;tr class="rich-text-table_row"> ;
       < ;td class="rich-text-table_cell"> ;Jev zero-shot< ;/td> ;
       < ;td class="rich-text-table_cell"> ;66.8%< ;/td> ;
       < ;td class="rich-text-table_cell"> ;~12min (concurrence de 4)< ;/td> ;
     < ;/tr> ;
     < ;tr class="rich-text-table_row"> ;
       < ;td class="rich-text-table_cell"> ;Laya de base< ;/td> ;
       < ;td class="rich-text-table_cell"> ;35.9%< ;/td> ;
       < ;td class="rich-text-table_cell"> ;~90s (machine de dev locale)< ;/td> ;
     < ;/tr> ;
     < ;tr class="rich-text-table_row"> ;
       < ;td class="rich-text-table_cell"> ;Laya fine-tuné< ;/td> ;
       < ;td class="rich-text-table_cell"> ;74.5%< ;/td> ;
       < ;td class="rich-text-table_cell"> ;~90s (machine de dev locale)< ;/td> ;
     < ;/tr> ;
   < ;/tbody> ;
 < ;/table> ;
< ;/div> ;


En tant que modèle prêt à l’emploi, pratique et ne nécessitant aucun entraînement, Jev surpasse clairement Laya, mais sans grande surprise, le fine-tuning fait briller Laya, en particulier au vu des chiffres de performance. Le compromis réside dans le niveau d’effort nécessaire pour obtenir de bons labels et mettre en place l’entraînement. Jev reste probablement plus attractif lorsqu’une tâche est nouvelle ou que ses labels évoluent.

Routage de modèles : transfert vers un expert

Le routage de modèles est un problème connexe de la classification de requêtes. Ici, nous formulons le routage de modèles comme un transfert vers un expert, où notre système choisit quel expert/modèle doit traiter la demande. Notre baseline en production demande actuellement à un LLM de prendre cette décision de manière native, à l’intérieur de la boucle agentique du harness. Bien qu’il s’agisse d’un test naturel pour déterminer si Jev peut remplacer un appel génératif par une décision bornée, une limitation technique importante est que Jev va strictement ajouter un appel en cas de non-transfert. Cela contraste avec la baseline de production qui, dans les cas de non-transfert, peut commencer le travail d’appel d’outils via le même unique premier appel au LLM.

__wf_reserved_inherit

Nous avons utilisé une version simplifiée de notre routage de production avec seulement 3 experts, rejoué 751 entrées golden comparables via le routeur Jev mis à jour, comparé le routage choisi avec notre routeur existant basé sur des prompts (alimenté par un LLM traditionnel) et mesuré la précision par rapport au label golden.

__wf_reserved_inherit

< ;div class="overflow-scroll" role="region" aria-label="Expert routing comparison"> ;
 < ;table class="rich-text-table_component"> ;
   < ;thead class="rich-text-table_head"> ;
     < ;tr class="rich-text-table_row"> ;
       < ;th class="rich-text-table_header" scope="col"> ;Routage< ;/th> ;
       < ;th class="rich-text-table_header" scope="col"> ;Entrées gold< ;/th> ;
       < ;th class="rich-text-table_header" scope="col"> ;Précision (baseline)< ;/th> ;
       < ;th class="rich-text-table_header" scope="col"> ;Rappel (baseline)< ;/th> ;
       < ;th class="rich-text-table_header" scope="col"> ;Précision Jev< ;/th> ;
       < ;th class="rich-text-table_header" scope="col"> ;Rappel Jev< ;/th> ;
     < ;/tr> ;
   < ;/thead> ;
   < ;tbody class="rich-text-table_body"> ;
     < ;tr class="rich-text-table_row"> ;
       < ;td class="rich-text-table_cell"> ;Expert 1< ;/td> ;
       < ;td class="rich-text-table_cell"> ;34< ;/td> ;
       < ;td class="rich-text-table_cell"> ;70.2%< ;/td> ;
       < ;td class="rich-text-table_cell"> ;97.1%< ;/td> ;
       < ;td class="rich-text-table_cell"> ;86.8%< ;/td> ;
       < ;td class="rich-text-table_cell"> ;97.1%< ;/td> ;
     < ;/tr> ;
     < ;tr class="rich-text-table_row"> ;
       < ;td class="rich-text-table_cell"> ;Expert 2< ;/td> ;
       < ;td class="rich-text-table_cell"> ;42< ;/td> ;
       < ;td class="rich-text-table_cell"> ;47.1%< ;/td> ;
       < ;td class="rich-text-table_cell"> ;38.1%< ;/td> ;
       < ;td class="rich-text-table_cell"> ;86.7%< ;/td> ;
       < ;td class="rich-text-table_cell"> ;61.9%< ;/td> ;
     < ;/tr> ;
     < ;tr class="rich-text-table_row"> ;
       < ;td class="rich-text-table_cell"> ;Expert 3< ;/td> ;
       < ;td class="rich-text-table_cell"> ;6< ;/td> ;
       < ;td class="rich-text-table_cell"> ;12.5%< ;/td> ;
       < ;td class="rich-text-table_cell"> ;33.3%< ;/td> ;
       < ;td class="rich-text-table_cell"> ;85.7%< ;/td> ;
       < ;td class="rich-text-table_cell"> ;100%< ;/td> ;
     < ;/tr> ;
     < ;tr class="rich-text-table_row"> ;
       < ;td class="rich-text-table_cell"> ;Aucun expert< ;/td> ;
       < ;td class="rich-text-table_cell"> ;669< ;/td> ;
       < ;td class="rich-text-table_cell"> ;95.6%< ;/td> ;
       < ;td class="rich-text-table_cell"> ;93.4%< ;/td> ;
       < ;td class="rich-text-table_cell"> ;97.6%< ;/td> ;
       < ;td class="rich-text-table_cell"> ;98.7%< ;/td> ;
     < ;/tr> ;
   < ;/tbody> ;
 < ;/table> ;
< ;/div> ;


Nous avons également isolé 40 entrées pour lesquelles le chemin existant effectuait un véritable appel de transfert vers un expert (n plus faible) et comparé la latence d’appel sur ces mêmes entrées.

__wf_reserved_inherit

L’accélération médiane par entrée était de 8,1×. C’est l’un des résultats internes Jev les plus marquants à ce jour : sur cette tâche de routage bornée, Jev était à la fois plus précis et nettement plus rapide. L’ampleur de l’écart implique que la « taxe » de « blocage » que nous supportons sur les requêtes non routées par des experts peut être un bon compromis. Notez qu’il s’agit toujours d’une comparaison hors ligne sur un golden set, et que l’échantillon de latence ne contient que 40 transferts positifs  il y a donc encore beaucoup à sécuriser et à tester !

Reranking

Un sujet qui tient particulièrement à cœur à Glean ! Ci-dessous, notre baseline en production correspond à l’ordre produit par la stack de recherche existante de Glean. Cette expérience a ensuite demandé à Jev de réordonner jusqu’à 50 résultats.

Nous avons testé quatre façons d’exprimer la pertinence via les sorties typées de Jev :

< ;div class="overflow-scroll" role="region" aria-label="Relevance formulations"> ;
 < ;table class="rich-text-table_component"> ;
   < ;thead class="rich-text-table_head"> ;
     < ;tr class="rich-text-table_row"> ;
       < ;th class="rich-text-table_header" scope="col"> ;Formulation< ;/th> ;
       < ;th class="rich-text-table_header" scope="col"> ;Comment cela exprime la pertinence< ;/th> ;
     < ;/tr> ;
   < ;/thead> ;
   < ;tbody class="rich-text-table_body"> ;
     < ;tr class="rich-text-table_row"> ;
       < ;td class="rich-text-table_cell"> ;Pointwise Noul< ;/td> ;
       < ;td class="rich-text-table_cell"> ;Poser une question de pertinence oui/non distincte pour chaque résultat, puis trier selon la probabilité de « oui ».< ;/td> ;
     < ;/tr> ;
     < ;tr class="rich-text-table_row"> ;
       < ;td class="rich-text-table_cell"> ;Shared-state Noul< ;/td> ;
       < ;td class="rich-text-table_cell"> ;Montrer à Jev l’ensemble complet des candidats comme contexte partagé, puis poser la même question oui/non pour chaque résultat.< ;/td> ;
     < ;/tr> ;
     < ;tr class="rich-text-table_row"> ;
       < ;td class="rich-text-table_cell"> ;Score< ;/td> ;
       < ;td class="rich-text-table_cell"> ;Demander à Jev d’attribuer à chaque candidat un score numérique de pertinence.< ;/td> ;
     < ;/tr> ;
     < ;tr class="rich-text-table_row"> ;
       < ;td class="rich-text-table_cell"> ;Choice< ;/td> ;
       < ;td class="rich-text-table_cell"> ;Traiter tous les candidats comme des alternatives dans une seule décision, puis les classer selon les probabilités obtenues.< ;/td> ;
     < ;/tr> ;
   < ;/tbody> ;
 < ;/table> ;
< ;/div> ;


Nous avons exécuté cela sur un evalset interne où l’utilisateur n’a pas accès à tous les canonicals  les chiffres absolus ne reflètent donc pas notre classement en production, mais les chiffres relatifs sont intéressants.

Le « Choice » de Jev était la formulation la plus performante. Sur un contrôle apparié de 4 855 requêtes de recherche capturées, avec le départage basé sur la production supprimé, le résultat était :

__wf_reserved_inherit

< ;div class="overflow-scroll" role="region" aria-label="Ranker performance comparison"> ;
 < ;table class="rich-text-table_component"> ;
   < ;thead class="rich-text-table_head"> ;
     < ;tr class="rich-text-table_row"> ;
       < ;th class="rich-text-table_header" scope="col"> ;Ranker< ;/th> ;
       < ;th class="rich-text-table_header" scope="col"> ;Recall@1< ;/th> ;
       < ;th class="rich-text-table_header" scope="col"> ;Recall@3< ;/th> ;
       < ;th class="rich-text-table_header" scope="col"> ;Recall@6< ;/th> ;
       < ;th class="rich-text-table_header" scope="col"> ;Evaluator MAP< ;/th> ;
     < ;/tr> ;
   < ;/thead> ;
   < ;tbody class="rich-text-table_body"> ;
     < ;tr class="rich-text-table_row"> ;
       < ;td class="rich-text-table_cell"> ;Ordre de production existant de Glean< ;/td> ;
       < ;td class="rich-text-table_cell"> ;35.74%< ;/td> ;
       < ;td class="rich-text-table_cell"> ;45.79%< ;/td> ;
       < ;td class="rich-text-table_cell"> ;51.18%< ;/td> ;
       < ;td class="rich-text-table_cell"> ;0.4289< ;/td> ;
     < ;/tr> ;
     < ;tr class="rich-text-table_row"> ;
       < ;td class="rich-text-table_cell"> ;GPT-6-Luna-high en tant que Reranker< ;/td> ;
       < ;td class="rich-text-table_cell"> ;30.71%< ;/td> ;
       < ;td class="rich-text-table_cell"> ;39.15%< ;/td> ;
       < ;td class="rich-text-table_cell"> ;45.08%< ;/td> ;
       < ;td class="rich-text-table_cell"> ;0.3766< ;/td> ;
     < ;/tr> ;
     < ;tr class="rich-text-table_row"> ;
       < ;td class="rich-text-table_cell"> ;GPT-6-Sol-high en tant que Reranker< ;/td> ;
       < ;td class="rich-text-table_cell"> ;31.54%< ;/td> ;
       < ;td class="rich-text-table_cell"> ;40.14%< ;/td> ;
       < ;td class="rich-text-table_cell"> ;46.84%< ;/td> ;
       < ;td class="rich-text-table_cell"> ;0.3862< ;/td> ;
     < ;/tr> ;
     < ;tr class="rich-text-table_row"> ;
       < ;td class="rich-text-table_cell"> ;Jev Choice< ;/td> ;
       < ;td class="rich-text-table_cell"> ;24.37%< ;/td> ;
       < ;td class="rich-text-table_cell"> ;33.72%< ;/td> ;
       < ;td class="rich-text-table_cell"> ;40.21%< ;/td> ;
       < ;td class="rich-text-table_cell"> ;0.3201< ;/td> ;


     < ;/tr> ;
   < ;/tbody> ;
 < ;/table> ;
< ;/div> ;


Jev Choice coûtait environ 0,00044 $ par requête et prenait 0,195 seconde au p50 lors du test hors ligne. Mais il attribuait des scores identiques à environ 37 des 41 candidats dans une requête moyenne. Le recours à l’ordre de production pour départager ces ex æquo a fait passer le Recall@6 de 40,2 % à 44,3 %, ce qui rend le résultat non corrigé plus flatteur que ce que les scores de Jev, à eux seuls, justifiaient. Il y a de nombreuses réserves comme d’habitude, mais, dans les grandes lignes, Jev est une baseline peu coûteuse et efficace, pas un remplacement du ranker de production de Glean.

Évaluation de la prise en charge des citations

L’évaluation des citations pose deux questions liées : les affirmations qui nécessitent des preuves ont-elles des citations adéquates (rappel des citations) et les sources citées étayent-elles réellement les affirmations qui leur sont attribuées (précision des citations) ? À première vue, parce que l’espace sortie/label est borné (comme dans la plupart des contextes d’évaluation) cela semble être un cas d’usage évident pour Jev. La grille d’évaluation est toutefois complexe et peut nécessiter de décomposer plusieurs affirmations  en outre, Jev ne produit pas la justification que nous utilisons souvent pour l’analyse d’erreurs, ce qui présente un certain risque à la fois pour la qualité et pour l’utilisabilité.

Nous avons testé Jev sur une réponse de production-eval réelle de 1 448 mots, en gardant la réponse et les preuves de citation fixes. Nous avons comparé son passage partagé précision-et-rappel avec GPT-5.6 Luna sans raisonnement et avec un raisonnement xhigh. Pour réduire la variance, nous avons exécuté chaque juge trois fois.

< ;div class="overflow-scroll" role="region" aria-label="Judge time and cost"> ;
 < ;table class="rich-text-table_component"> ;
   < ;thead class="rich-text-table_head"> ;
     < ;tr class="rich-text-table_row"> ;
       < ;th class="rich-text-table_header" scope="col"> ;Juge< ;/th> ;
       < ;th class="rich-text-table_header" scope="col"> ;Temps mesuré initial par réponse< ;/th> ;
       < ;th class="rich-text-table_header" scope="col"> ;Coût mesuré initial par réponse< ;/th> ;
     < ;/tr> ;
   < ;/thead> ;
   < ;tbody class="rich-text-table_body"> ;
     < ;tr class="rich-text-table_row"> ;
       < ;td class="rich-text-table_cell"> ;Jev< ;/td> ;
       < ;td class="rich-text-table_cell"> ;6.6 s< ;/td> ;
       < ;td class="rich-text-table_cell"> ;$0.014< ;/td> ;
     < ;/tr> ;
     < ;tr class="rich-text-table_row"> ;
       < ;td class="rich-text-table_cell"> ;GPT-5.6 Luna, sans raisonnement< ;/td> ;
       < ;td class="rich-text-table_cell"> ;81.3–85.5 s< ;/td> ;
       < ;td class="rich-text-table_cell"> ;$0.030–$0.047< ;/td> ;
     < ;/tr> ;
     < ;tr class="rich-text-table_row"> ;
       < ;td class="rich-text-table_cell"> ;GPT-5.6 Luna, xhigh< ;/td> ;
       < ;td class="rich-text-table_cell"> ;227.4–259.7 s< ;/td> ;
       < ;td class="rich-text-table_cell"> ;$0.047–$0.060< ;/td> ;
   < ;/tbody> ;
 < ;/table> ;
< ;/div> ;


Notez que le timing est indicatif plutôt que de bout en bout : Jev indique le temps wall côté client séquentiel, tandis que les lignes Luna additionnent les durées des appels au modèle. Les coûts incluent la mise en cache observée.

Nous avons également comparé la cohérence sur les mêmes 28 paragraphes. Un élément modifié signifie que le juge a changé son verdict quant au fait qu’un paragraphe disposait d’une couverture de citation adéquate dans au moins une des trois exécutions à entrée identique. La divergence par paires comptabilise chaque paragraphe sur les trois paires d’exécutions, soit 84 comparaisons par juge.

< ;div class="overflow-scroll" role="region" aria-label="Recall consistency comparison"> ;
 < ;table class="rich-text-table_component"> ;
   < ;thead class="rich-text-table_head"> ;
     < ;tr class="rich-text-table_row"> ;
       < ;th class="rich-text-table_header" scope="col"> ;Juge< ;/th> ;
       < ;th class="rich-text-table_header" scope="col"> ;Paragraphes avec un verdict de rappel modifié< ;/th> ;
       < ;th class="rich-text-table_header" scope="col"> ;Divergences de rappel par paires< ;/th> ;
     < ;/tr> ;
   < ;/thead> ;
   < ;tbody class="rich-text-table_body"> ;
     < ;tr class="rich-text-table_row"> ;
       < ;td class="rich-text-table_cell"> ;Jev< ;/td> ;
       < ;td class="rich-text-table_cell"> ;1 sur 28 (3.6%)< ;/td> ;
       < ;td class="rich-text-table_cell"> ;2 sur 84 (2.4%)< ;/td> ;
     < ;/tr> ;
     < ;tr class="rich-text-table_row"> ;
       < ;td class="rich-text-table_cell"> ;GPT-5.6 Luna, sans raisonnement< ;/td> ;
       < ;td class="rich-text-table_cell"> ;7 sur 28 (25.0%)< ;/td> ;
       < ;td class="rich-text-table_cell"> ;15 sur 84 (17.9%)< ;/td> ;
     < ;/tr> ;
     < ;tr class="rich-text-table_row"> ;
       < ;td class="rich-text-table_cell"> ;GPT-5.6 Luna, xhigh< ;/td> ;
       < ;td class="rich-text-table_cell"> ;5 sur 28 (17.9%)< ;/td> ;
       < ;td class="rich-text-table_cell"> ;10 sur 84 (11.9%)< ;/td> ;
   < ;/tbody> ;
 < ;/table> ;
< ;/div> ;


Le seul changement de Jev portait sur le fait qu’un paragraphe soit considéré comme nécessitant une citation  sa catégorie de rappel brute n’a pas changé. Les verdicts de couverture de citations au niveau paragraphe de Jev étaient donc plus reproductibles que ceux de l’une ou l’autre configuration de Luna.

Nous ne concluons pas que cela fasse de Jev le juge le plus précis (les systèmes appliquaient des critères de prise en charge et des dénominateurs de scoring différents, et nous n’avons pas eu le temps de réaliser des labels humains indépendants). Mais même avec un raisonnement xhigh (qui a approximativement triplé le temps modèle de Luna), il est resté moins cohérent que Jev. Le résultat étaye Jev comme une manière rapide, peu coûteuse et comparativement reproductible de mettre en œuvre une politique de citation étroite.

Enseignements de l’expérience et guide pratique

Dans certains cas, Jev s’impose comme une alternative à faible friction, à la fois aux LLM traditionnels et aux classificateurs ajustés par fine-tuning. Quand la base est solide (reranking) ou qu’il est facile d’ajuster un modèle plus petit (classification de requêtes), le gain est moins marqué. On observe des signes de meilleure qualité pour certaines tâches (routage de modèles), ainsi que des indications d’une meilleure cohérence et stabilité (évaluation des citations). Sur certaines de nos charges de travail les plus importantes, il offre les gains attendus en coûts et en latence par rapport aux LLM traditionnels. 

Les résultats ci-dessus donnent de bonnes indications de direction et, chez Glean, nous sommes très enthousiastes à propos de Jev. Après encore quelques étapes (principalement, la préparation opérationnelle comme la résidence des données et des garanties), nous prévoyons de déployer Jev dans certains de ces cas d’usage. Par ailleurs, Jev jouera un rôle important dans notre hackathon interne cette semaine et nous avons hâte de partager d’autres résultats !

Quelques conseils généraux pour conclure – si la sortie peut être listée à l’avance, benchmarkez Jev. Si la tâche et les labels sont stables et que le volume est élevé, benchmarkez aussi un classificateur ajusté par fine-tuning. Si l’appel doit générer une requête, une explication ou un autre texte dynamique, gardez un modèle génératif dans la boucle. L’appel d’outils en est un bon exemple : Jev peut aider à choisir un outil, mais la plupart des outils Glean ont encore besoin d’arguments générés de manière dynamique (comme des requêtes de recherche).

Jev ne change pas le fait que les classificateurs existaient déjà. Il rend un bon classificateur zero-shot beaucoup plus simple à utiliser. C’est un produit solide, même si ce n’est pas une nouvelle fondation pour chaque système d’IA.

Auteurs : Eddie Zhou, Chau Tran, Aviral Singh, Matt Zhao, Manav Agrawal.

Voir Work AI en action

Get a demo
Get a demo