in

Revue LlamaIndex : applications LLM faciles et augmentées par le contexte

« Transformez les données de votre entreprise en applications LLM prêtes pour la production », proclame la page d'accueil de LlamaIndex en caractères de 60 points. Alors ok. Le sous-titre est « LlamaIndex est le principal cadre de données pour la création d'applications LLM. » Je ne suis pas sûr que ce soit le cas le cadre de données de pointe, mais je serais certainement d'accord pour dire que c'est un cadre de données de premier plan pour la construction avec de grands modèles de langage, ainsi que LangChain et Semantic Kernel, dont nous parlerons plus tard.

LlamaIndex propose actuellement deux frameworks open source et un cloud. Un framework est en Python ; l'autre est en TypeScript. LlamaCloud (actuellement en version préliminaire privée) propose le stockage, la récupération, des liens vers des sources de données via LlamaHub et un service d'analyse propriétaire payant pour les documents complexes, LlamaParse, qui est également disponible en tant que service autonome.

LlamaIndex possède des atouts dans le chargement de données, le stockage et l'indexation de vos données, l'interrogation en orchestrant les flux de travail LLM et l'évaluation des performances de votre application LLM. LlamaIndex s'intègre à plus de 40 magasins de vecteurs, plus de 40 LLM et plus de 160 sources de données. Le référentiel Python LlamaIndex compte plus de 30 000 étoiles.

Les applications LlamaIndex typiques effectuent des questions et réponses, des extractions structurées, des discussions en ligne ou des recherches sémantiques et/ou servent d'agents. Ils peuvent utiliser la génération augmentée par récupération (RAG) pour ancrer les LLM avec des sources spécifiques, souvent des sources qui n'étaient pas incluses dans la formation initiale des modèles.

LlamaIndex est en concurrence avec LangChain, Semantic Kernel et Haystack. Tous n'ont pas exactement la même portée et les mêmes capacités, mais en ce qui concerne la popularité, le référentiel Python de LangChain compte plus de 80 000 étoiles, soit près de trois fois celui de LlamaIndex (plus de 30 000 étoiles), tandis que le noyau sémantique, beaucoup plus récent, compte plus de 18 000 étoiles. un peu plus de la moitié de celui de LlamaIndex, et le dépôt de Haystack compte plus de 13 000 étoiles.

L’âge du référentiel est pertinent car les étoiles s’accumulent avec le temps ; c'est aussi pourquoi je qualifie les chiffres par « plus ». Les étoiles sur les dépôts GitHub sont vaguement corrélées à la popularité historique.

LlamaIndex, LangChain et Haystack comptent tous parmi leurs utilisateurs un certain nombre de grandes entreprises, dont certaines utilisent plusieurs de ces frameworks. Semantic Kernel vient de Microsoft, qui ne prend généralement pas la peine de faire connaître ses utilisateurs, sauf pour des études de cas.

lamaindex 01 IDG

Le framework LlamaIndex vous aide à connecter des données, des intégrations, des LLM, des bases de données vectorielles et des évaluations dans des applications. Ceux-ci sont utilisés pour les questions et réponses, l’extraction structurée, le chat, la recherche sémantique et les agents.

Fonctionnalités de LlamaIndex

À un niveau élevé, LlamaIndex est conçu pour vous aider à créer des applications LLM augmentées par le contexte, ce qui signifie essentiellement que vous combinez vos propres données avec un grand modèle de langage. Des exemples d'applications LLM augmentées par le contexte incluent les chatbots de réponse aux questions, la compréhension et l'extraction de documents et les agents autonomes.

Les outils fournis par LlamaIndex effectuent le chargement, l'indexation et le stockage des données, l'interrogation de vos données avec des LLM et l'évaluation des performances de vos applications LLM :

  • Les connecteurs de données ingèrent vos données existantes à partir de leur source et format natifs.
  • Les index de données, également appelés intégrations, structurent vos données en représentations intermédiaires.
  • Les moteurs fournissent un accès en langage naturel à vos données. Ceux-ci incluent des moteurs de requête pour répondre aux questions et des moteurs de discussion pour les conversations multi-messages sur vos données.
  • Les agents sont des travailleurs du savoir propulsés par LLM et complétés par des outils logiciels.
  • Les intégrations d'observabilité/évaluation vous permettent d'expérimenter, d'évaluer et de surveiller votre application.

Augmentation du contexte

Les LLM ont été formés sur de grands corps de texte, mais pas nécessairement sur des textes concernant votre domaine. Il existe trois manières principales d'effectuer une augmentation de contexte et d'ajouter des informations sur votre domaine, en fournissant des documents, en effectuant du RAG et en affinant le modèle.

La méthode d'augmentation de contexte la plus simple consiste à fournir des documents au modèle avec votre requête, et pour cela vous n'aurez peut-être pas besoin de LlamaIndex. La fourniture de documents fonctionne correctement, sauf si la taille totale des documents est supérieure à la fenêtre contextuelle du modèle que vous utilisez, ce qui était un problème courant jusqu'à récemment. Il existe désormais des LLM avec des fenêtres contextuelles contenant un million de jetons, qui vous permettent d'éviter de passer aux étapes suivantes pour de nombreuses tâches. Si vous envisagez d'effectuer de nombreuses requêtes sur un corpus d'un million de jetons, vous souhaiterez mettre les documents en cache, mais c'est un sujet pour une autre fois.

La génération augmentée par récupération combine le contexte avec les LLM au moment de l'inférence, généralement avec une base de données vectorielle. Les procédures RAG utilisent souvent l'intégration pour limiter la longueur et améliorer la pertinence du contexte récupéré, ce qui contourne les limites de la fenêtre de contexte et augmente la probabilité que le modèle voie les informations dont il a besoin pour répondre à votre question.

Essentiellement, une fonction d'intégration prend un mot ou une phrase et le mappe à un vecteur de nombres à virgule flottante ; ceux-ci sont généralement stockés dans une base de données prenant en charge un index de recherche vectorielle. L'étape de récupération utilise ensuite une recherche de similarité sémantique, utilisant souvent le cosinus de l'angle entre l'intégration de la requête et les vecteurs stockés, pour trouver des informations « à proximité » à utiliser dans l'invite augmentée.

Le réglage fin des LLM est un processus d'apprentissage supervisé qui consiste à ajuster les paramètres du modèle à une tâche spécifique. Cela se fait en entraînant le modèle sur un ensemble de données plus petit, spécifique à une tâche ou à un domaine, étiqueté avec des exemples pertinents pour la tâche cible. Le réglage fin prend souvent des heures, voire des jours, en utilisant de nombreux GPU au niveau du serveur et nécessite des centaines, voire des milliers d'exemples balisés.

Installation de LlamaIndex

Vous pouvez installer la version Python de LlamaIndex de trois manières : à partir du code source dans le référentiel GitHub, en utilisant le llama-index installation de démarrage, ou en utilisant llama-index-core ainsi que des intégrations sélectionnées. L'installation du démarreur ressemblerait à ceci :

pip install llama-index

Cela intègre les LLM et les intégrations OpenAI en plus du noyau LlamaIndex. Vous devrez fournir votre clé API OpenAI (voir ici) avant de pouvoir exécuter des exemples qui l'utilisent. L'exemple de démarrage de LlamaIndex est assez simple, essentiellement cinq lignes de code après quelques étapes de configuration simples. Il existe de nombreux autres exemples dans le dépôt, avec documentation.

L'installation personnalisée pourrait ressembler à ceci :

pip install llama-index-core llama-index-readers-file llama-index-llms-ollama llama-index-embeddings-huggingface

Cela installe une interface pour les intégrations Ollama et Hugging Face. Il existe un exemple de démarrage local qui accompagne cette installation. Quelle que soit la manière dont vous démarrez, vous pouvez toujours ajouter d'autres modules d'interface avec pip.

Si vous préférez écrire votre code en JavaScript ou TypeScript, utilisez LlamaIndex.TS (repo). L'un des avantages de la version TypeScript est que vous pouvez exécuter les exemples en ligne sur StackBlitz sans aucune configuration locale. Vous devrez toujours fournir une clé API OpenAI.

LlamaCloud et LlamaParse

LlamaCloud est un service cloud qui vous permet de télécharger, d'analyser et d'indexer des documents et de les rechercher à l'aide de LlamaIndex. Il est en phase alpha privée et je n'ai pas pu y accéder. LlamaParse est un composant de LlamaCloud qui vous permet d'analyser des PDF en données structurées. Il est disponible via une API REST, un package Python et une interface utilisateur Web. Il est actuellement en version bêta publique. Vous pouvez vous inscrire pour utiliser LlamaParse moyennant des frais minimes basés sur l'utilisation après les 7 000 premières pages par semaine. L'exemple donné comparant LlamaParse et PyPDF pour le dépôt Apple 10K est impressionnant, mais je ne l'ai pas testé moi-même.

LamaHub

LlamaHub vous donne accès à une large collection d'intégrations pour LlamaIndex. Ceux-ci incluent les agents, les rappels, les chargeurs de données, les intégrations et environ 17 autres catégories. En général, les intégrations se trouvent dans le référentiel LlamaIndex, PyPI et NPM, et peuvent être chargées avec pip install ou npm install.

créer-llama CLI

create-llama est un outil de ligne de commande qui génère des applications LlamaIndex. C'est un moyen rapide de démarrer avec LlamaIndex. L'application générée dispose d'un frontal alimenté par Next.js et d'un choix de trois back-ends.

CLI CHIFFON

RAG CLI est un outil de ligne de commande permettant de discuter avec un LLM des fichiers que vous avez enregistrés localement sur votre ordinateur. Ce n’est qu’un des nombreux cas d’utilisation de LlamaIndex, mais il est assez courant.

Composants LlamaIndex

Les guides des composants LlamaIndex vous fournissent une aide spécifique pour les différentes parties de LlamaIndex. La première capture d'écran ci-dessous montre le menu du guide des composants. La seconde affiche le guide des composants pour les invites, défilé jusqu'à une section sur la personnalisation des invites.

lamaindex 02 IDG

Les guides des composants LlamaIndex documentent les différents éléments qui composent le cadre. Il y a pas mal de composants.

lamaindex 03 IDG

Nous examinons les modèles d'utilisation des invites. Cet exemple particulier montre comment personnaliser une invite de questions-réponses pour répondre dans le style d'une pièce de Shakespeare. Il s'agit d'une invite de tir zéro, car elle ne fournit aucun exemple.

Apprendre LlamaIndex

Une fois que vous avez lu, compris et exécuté l'exemple de démarrage dans votre langage de programmation préféré (Python ou TypeScript), je vous suggère de lire, comprendre et essayer autant d'autres exemples qu'ils vous semblent intéressants. La capture d'écran ci-dessous montre le résultat de générer un fichier appelé essay en exécutant essay.ts, puis en posant des questions à ce sujet à l'aide de chatEngine.ts. Ceci est un exemple d'utilisation de RAG pour Q&A.

Le programme chatEngine.ts utilise les composants ContextChatEngine, Document, Settings et VectorStoreIndex de LlamaIndex. Quand j'ai regardé le code source, j'ai vu qu'il reposait sur le modèle OpenAI gpt-3.5-turbo-16k ; cela peut changer avec le temps. Le module VectorStoreIndex semblait utiliser la base de données vectorielles Qdrant open source basée sur Rust, si je lisais correctement la documentation.

lamaindex 04 IDG

Après avoir configuré l'environnement du terminal avec ma clé OpenAI, j'ai exécuté essay.ts pour générer un fichier d'essai et chatEngine.ts pour répondre aux requêtes sur l'essai.

Apporter du contexte aux LLM

Comme vous l'avez vu, LlamaIndex est assez simple à utiliser pour créer des applications LLM. J'ai pu le tester avec des LLM OpenAI et une source de données de fichier pour une application RAG Q&A sans problème. Pour rappel, LlamaIndex s'intègre à plus de 40 magasins de vecteurs, plus de 40 LLM et plus de 160 sources de données ; il fonctionne pour plusieurs cas d'utilisation, notamment les questions-réponses, l'extraction structurée, le chat, la recherche sémantique et les agents.

Je suggérerais d'évaluer LlamaIndex avec LangChain, Semantic Kernel et Haystack. Il est probable qu’un ou plusieurs d’entre eux répondront à vos besoins. Je ne peux pas recommander l'un par rapport aux autres de manière générale, car différentes applications ont des exigences différentes.

Avantages

  1. Aide à créer des applications LLM pour les questions et réponses, l'extraction structurée, le chat, la recherche sémantique et les agents
  2. Prend en charge Python et TypeScript
  3. Les frameworks sont gratuits et open source
  4. Beaucoup d'exemples et d'intégrations

Les inconvénients

  1. Le cloud est limité à l'aperçu privé
  2. Le marketing est légèrement exagéré

Coût

Source ouverte : gratuit. Service d'importation LlamaParse : 7 000 pages par semaine gratuites, puis 3 $ pour 1 000 pages.

Plate-forme

Python et TypeScript, ainsi que Cloud SaaS (actuellement en version préliminaire privée).

Copyright © 2024 IDG Communications, Inc.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

GIPHY App Key not set. Please check settings

    Cameroun : Marc Brys intéresse le Nigéria

    ils sont de gauche mais ne voteront jamais pour le Nouveau Front populaire