Dans cet article, les chercheurs détaillent plusieurs techniques intéressantes pour un RAG.
Ils utilisent une technique similaire à ce qu'on fait chez Didask avec une première étape qui consiste à extraire les informations pertinentes depuis de longs documents.
Cela permet d'avoir un document cohérent en matière brut plutôt que des chunks découpés arbitrairement dans le texte.
Ils vont ensuite évaluer la pertinence des informations extraites dans une deuxième étape qui utilise un CoT en 2 prompt:
- génération du raisonnement
- vérification de la pertinence du raisonnement
Une partie des prompts est donnée à la fin de l'article.
Une extension de la méthode de la chaine de pensée qui consiste à aussi fournir des exemples d'erreurs dans le prompt en plus des exemples de raisonnement correct.
Les performances sont sensiblement meilleures sur certains modèles: +4% sur Gemini Pro, 7% sur DeepSeek mais par contre sur GPT-4o-mini il n'y a aucune différence.
CoALA propose une méthode d'organisation des Assistants basée sur les sciences cognitives et notamment les différents types de mémoire à long terme:
- procédural: instructions générales de fonctionnement (les poids initiaux du LLM et le code métier de l'Assistant)
- sémantique: une base de connaissances
- épisodique: les actions passées
La mémoire à court terme (aussi appelée mémoire de travail) est elle représentée par le contenu du prompt utilisé pour répondre.
Ils décrivent notamment des actions internes qui devraient réaliser le LLM pour intéragir avec sa mémoire:
- retrieval: lire dans la mémoire long terme
- reasoning: mettre à jour la mémoire court terme de travail (le prompt)
- learning: écrire dans la mémoire long terme
On retrouve des idées utilisées par Generative Agents
Une simple application Electron pour essayer Claude 3.5 Sonnet avec ses capacités de manipulation d'interfaces graphiques
L'application prend des screenshots de l'écran afin de les envoyer à Claude et Claude répond avec des commandes pour bouger la souris (en x, y), cliquer ou remplir des champs textes.
C'est très lent (1 minute pour chercher et lancer une vidéo Youtube chez moi) mais ça reste quand même impressionnant de voir son ordinateur manipulé automatiquement à la suite d'une simple instruction.
Un autre framework pour faire des Assistant. Celui la est en Typescript vs Swarm de OpenAI en Python.
Ils ont choisi une approche plus classique dans laquelle on définit un "Agent" à qui on donne des outils pour répondre aux demandes.
Il n'y a pas de composition comme dans Swarm et donc pas de moyen de construire des applications agentiques spécialisées.
Comme d'habitude c'est peut-être bien pour expérimenter rapidement quelque chose mais je déconseille fortement de baser une production la dessus.
Microsoft publie un outil + modèle capable de découper un screenshot en zones d'intêret compréhensibles pour un LLM afin de pouvoir intéragir avec des applications.
Ils fournissent également un énorme jeu de données contenant des screenshots annotés avec des bounding boxes autour des éléments donc c'est une porte ouverte pour l'évaluation et l'entrainement d'autres modèles.
C'est dommage de ne pas l'avoir mesuré sur le benchmark de référence pour l'interaction avec un ordinateur (OS World) pour comparer les résultats avec ce que propose Claude par exemple
Vapi propose un système d'Assistant vocaux sur étagère.
L'Assistant peut de lui même transférer les appels vers un humain (fallback par exemple) mais on peut aussi lui fournir des outils personnalisés pour qu'il effectue d'autres actions (par exemple organiser un rendez-vous dans le calendrier)
On peut découper les conversations en blocs pour préciser des workflows de support par exemple.
Tous ce qu'il se passe dans la conversation peut être reçu côté serveur sous la forme d'évènements pour log ou déclencher des actions automatiquement.
Niveau pricing c'est très bien car ils font payer 5 centime la minute pour la voix et pour le reste on peut fournir ses propres clés d'API (OpenAI, Anthropic, etc)
Anthropic a sorti une mise à jour importante de Claude 3.5 Sonnet et il obtient des résultats impressionnant sur les benchmark !
Il dépasse GPT4-o sur la plupart des benchmarks existants et de loin mais c'est surtout sur la partie code qu'il réalise un exploit car il dépasse tous les autres modèles spécialisés sur le benchmark SWE-Bench avec 49% des tâches de réalisées.
La progression des modèles pour les tâches de programmation est vertigineuse, pour rappel en août le SOTA était Aider avec 19%
Personnellement, j'utilise uniquement Claude 3.5 Sonnet dans Cursor et c'est vrai qu'il y a une différence notable avec GPT-4o.
Un article qui propose d'intégrer des publicités dans les réponses des LLMs.
Par exemple, si vous recherchez un livre de science fiction similaire à un que vous avez aimé, le LLM vous proposera un nouveau livre ainsi qu'un lien vers un site de vente de ligne pour l'acheter.
Le système utiliserait un système type RAG pour intégrer des instructions spécifiques de publicité dans la réponse du LLM.
Autant ce genre de système pourrait apparaitre dans les applications finales comme ChatGPT, autant cela parait difficile de faire utiliser une API incluant de la publicité à un client qui intègre de la GenAI dans son produit.
Je serais assez frileux d'utiliser ce système, même si l'API était gratuite car cela introduit encore plus imprédictibilité des résultats à cause de l'injection d'instructions potentiellement différentes à chaque utilisation.
Pour des cas d'usage très simple cela serait moins problématique mais dans des workflows LLM un peu complexe cela peut avoir des effets très dur à contrôler.
Anthropic propose un environnement permettant à Claude 3.5 Sonnet de manipuler directement la souris et le clavier d'un environnement de bureau.
Ils ont appris à Claude à analyser les images et à compter les pixels entre la position actuelle du curseur et l'endroit ou il devrait se trouver pour accomplir la tâche.
Le modèle obtient 15% sur le benchmark OS World qui mesure les capacités des modèles à réaliser des tâches dans un environnement de bureau.
Le podium est toujours à Agent S avec 20% mais on reste loin de la moyenne d'un utilisateur humain qui est de 77%.
Agent.exe est une application Macos poqui permet de tester ces capacités
Un nouveau benchmark qui se concentre sur la résolution de problèmes mathématiques de niveau d'olympiades (compétitions internationales)
Le classement est dominé de très loin par o1 d'OpenAI avec 60% pour o1-mini et 52% pour o1-preview.
Les résultats suivants sont 36% pour Qwen2.5-MATH-72b-instruct (un modèle spécialisé en math donc), GPT-4o est à 30% et Claude 3.5 Sonnet à 26%.
Sans surprise, le modèle o1 avec sa chaine de pensée interne remporte la palme.
C'est assez étrange de voir o1-mini devant o1-preview d'ailleurs.
Agent S est un framework d'Agent conçu spécialement pour interagir avec un ordinateur comme un humain.
Il est capable de comprendre et manipuler des interfaces pour réaliser des tâches.
Il s'appuie sur un outil permettant de manipuler les interfaces au clique mais aussi de la recherche en ligne et une mémoire des actions réalisées précédemment.
Un nouveau benchmark qui vise à évaluer les capacités des LLMs à résoudre des tâche de ML engineering.
Concrètement, on leur pose des problèmes de MLE comme entrainer des modèles, préparer des dataset ou exécuter des expérimentations.
Certaines tâches ont été résolues par les modèles avec plus de 200 étapes et plusieurs heures de calcul.
Sans surprise, c'est le modèle o1 de OpenAI qui obtient la meilleure place avec 16.9% des problèmes résolus. On trouve ensuite GPT4-o avec 8.7%, Claude 3.5 Sonnet avec 7.6% et LlaMa 3.1 avec 3%
NotebookLM est une manière très simple de faire un RAG à partir de document présents sur Google Drive (mais pas que)
Il suffit de créer un Notebook, de sélectionner des sources et de poser des questions comme dans ChatGPT.
Les sources possibles pour le moment:
- Google Slides
- Google Doc
- Site web
- Vidéo Youtube
- Texte brut
C'est très facile à mettre en place et ça fonctionne plutôt bien.
La feature avec effet Whaou mais valeur à prouver c'est la possibilité de créer un "podcast" d'une conversation fictive à propos des documents que vous avez envoyé pour résumer les thèmes clés.
Un comparatif des capacités des bases de données vectorielles.
Mon conseil sur ce sujet c'est de ne pas se prendre trop la tête et d'utiliser les capacités de recherche vectorielle de la DB que vous utilisez déjà:
- Postgres: pgvector
- Mongo Atlas: Atlas Vector Search
- Elasticsearch: knn vector search
Si vous avez besoin de recherche avancée avec filtrage, scoring, BM25 (keyword search) et scalabilité alors Elasticsearch reste la meilleure option.
Si vous avez besoin de quelque chose de léger qui tourne dans le même process que votre application, il y a Qdrant (Python) ou LanceDB (Javascript) selon votre techno.
Frames est un benchmark (plutôt un dataset) de Google pour mesurer les capacités des RAGs.
Il contient +800 questions/réponses/articles qui nécessite de récupérer des informations depuis 2 à 15 articles de Wikipédia pour y répondre.
Concrètement cela veut dire que pour tester les performances de son RAG, il suffit de mettre les articles de Wikipédia anglophone en base de connaissances et de poser les questions du dataset une à une.
Pour arriver à répondre à ces questions, il faut que le RAG soit capable d'extraire des informations de plusieurs documents, de traiter des données numérique, des tableaux et de gérer des contraintes ou des données temporelles.
Microsoft propose un framework pour l'inférence de modèles à 1bit.
Cela signifie que la précision du modèle est à 1 seul bit au lieu des 32 bits habituels pour un float. Réduire le nombre de bits de précision est le processus de "quantization" et cela permet de réduire les exigences en terme de hardware pour un modèle.
D'ailleurs, la précision n'est pas de 1 bit mais plutôt une moyenne de 1.58 bit car la représentation interne des poids du modèle se fait avec des ternaires (1, 0 ou -1) et il faut donc 1 ou 2 bits pour les représenter.
Ainsi, un modèle "quantizé" à 16, 8, 4 voir 1 bit aura un meilleur débit de token et pourra fonctionner sur du matériel moins puissant au prix d'une diminution des capacités de "raisonnement" du modèle.
Alors oui ça peut être utile pour faire tourner des modèles sur du matériel de consommateur (ordinateur, téléphone) mais il y quand même un inconvénient majeur il faudrait ré-entrainer le modèle de 0 par rapport aux techniques habituelles de quantization qui peuvent simplement s'appliquer un modèle déjà entrainé.
Il est possible d'essayer des modèles 1 bit sur Huggingface et se faire une idée des capacités:
- bitnet_b1_58-3B (le modèle de Microsoft)
- Llama3-8B-1.58 (un LlaMa 3 "quantizé" à 1bit)
Le fork OpenSearch (Elasticsearch) d'Amazon Web Service inclut un RAG sur étagère.
On peut y déverser directement sa base de connaissance au format texte et ensuite l'interroger en mode RAG.
C'est pensé pour être utilisé dans une interface conversationnel et ils ont pensé à la persistance des conversations dans une entité "memory"
On peut choisir les modèles de LLM et aussi d'embeddings (ça reste limité aux modèles de OpenAI, Anthropic, Cohere et Bedrock)
C'est pratique pour monter rapidement un projet/prototype mais ensuite ça reste quand même une solution assez fermée si on veut pousser un peu plus loin dans le RAG.
OpenAI fait du caching automatique de prompts.
C'est une bonne nouvelle car ça permet de réduire la latence (jusqu'à 80%) et les coûts des tokens d'input (les tokens en cache sont 50% moins cher)
Ça fonctionne de manière transparente sur les derniers modèles d'OpenAI.
Pour optimiser le caching, il est conseillé de mettre les instructions statiques au début du prompt. Si vous avez une instruction statique après du contenu dynamique, elle ne sera pas caché.
Ça apporte une sacré contrainte au niveau de la construction des prompts si on veut maximiser le caching mais dans des cas d'usage ou la latence est importante ça peut vraiment changer les choses.
Mistral sort deux nouveaux SLM avec une version 3B et une version 8B (un peu gros pour un SLM quand même)
Le but affiché est de concurrencer les autres Small Language Model Open Source comme Phi de Microsoft ou Gemma de Google.
Les modèles ont de meilleures performances que les mêmes modèles de la même catégorie, ce qui pourrait en faire les meilleures SLM du marché pour l'instant.
Attention car les modèles sont release avec la MNPL et donc pas d'application commercial sans passer par la case licence.