Intelligence Artificielle
LlamaIndex : améliorez facilement vos applications LLM avec des données personnalisées

Les grands modèles linguistiques (LLM), comme la série GPT d'OpenAI, ont été entraînés sur un large éventail de données accessibles au public, démontrant des capacités remarquables en matière de génération de texte, de synthèse, de réponse aux questions et de planification. Malgré leur polyvalence, une question fréquemment posée porte sur l'intégration transparente de ces modèles avec des données personnalisées, privées ou propriétaires.
Les entreprises et les particuliers sont inondés de données uniques et personnalisées, souvent hébergées dans diverses applications telles que Notion, Slack et Salesforce, ou stockées dans des fichiers personnels. Pour exploiter les LLM pour ces données spécifiques, plusieurs méthodologies ont été proposées et expérimentées.
Réglage fin L'approche « Ajuster les pondérations du modèle » représente une telle approche. Elle consiste à ajuster les pondérations du modèle pour intégrer les connaissances issues d'ensembles de données spécifiques. Cependant, ce processus comporte des défis. Il exige un travail considérable de préparation des données, ainsi qu'une procédure d'optimisation complexe, nécessitant une certaine expertise en apprentissage automatique. De plus, les implications financières peuvent être importantes, notamment lorsqu'il s'agit de traiter de grands ensembles de données.
L'apprentissage en contexte est apparu comme une alternative, donnant la priorité à l'élaboration d'intrants et d'invites pour fournir au LLM le contexte nécessaire pour générer des résultats précis. Cette approche atténue le besoin d'un recyclage approfondi du modèle, offrant un moyen plus efficace et plus accessible d'intégrer des données privées.
Mais l'inconvénient est qu'elle repose sur les compétences et l'expertise de l'utilisateur. ingénierie rapideDe plus, l'apprentissage contextuel n'est pas toujours aussi précis ni fiable que le réglage fin, notamment lorsqu'il s'agit de données hautement spécialisées ou techniques. Le pré-entraînement du modèle sur un large éventail de textes Internet ne garantit pas la compréhension d'un jargon ou d'un contexte spécifique, ce qui peut conduire à des résultats inexacts ou non pertinents. Cela est particulièrement problématique lorsque les données privées proviennent d'un domaine ou d'un secteur de niche.
De plus, la quantité de contexte pouvant être fournie dans une seule invite est limitée et les performances du LLM peuvent se dégrader à mesure que la complexité de la tâche augmente. Il existe également un défi en matière de confidentialité et de sécurité des données, car les informations fournies dans l'invite peuvent potentiellement être sensibles ou confidentielles.
À mesure que la communauté explore ces techniques, des outils comme LamaIndex retiennent désormais l'attention.
Il a été lancé par Jerry Liu, ancien chercheur chez Uber. Lors de ses expérimentations avec GPT-3 l'automne dernier, Liu a constaté les limites du modèle concernant la gestion des données privées, comme les fichiers personnels. Cette observation a conduit au lancement du projet open source LlamaIndex.
L'initiative a attiré des investisseurs, garantissant 8.5 millions de dollars lors d’un récent cycle de financement de démarrage.
LlamaIndex facilite l'augmentation des LLM avec des données personnalisées, comblant ainsi le fossé entre les modèles pré-entraînés et les cas d'utilisation de données personnalisées. Grâce à LlamaIndex, les utilisateurs peuvent exploiter leurs propres données avec des LLM, libérant ainsi la génération de connaissances et le raisonnement avec des informations personnalisées.
Les utilisateurs peuvent fournir de manière transparente aux LLM leurs propres données, favorisant ainsi un environnement où la génération de connaissances et le raisonnement sont profondément personnalisés et perspicaces. LlamaIndex répond aux limites de l'apprentissage en contexte en fournissant une plate-forme plus conviviale et plus sécurisée pour l'interaction des données, garantissant que même ceux ayant une expertise limitée en apprentissage automatique peuvent exploiter tout le potentiel des LLM avec leurs données privées.
Concepts de haut niveau et quelques idées
1. Génération augmentée de récupération (RAG):
Le RAG est un processus en deux étapes conçu pour coupler les LLM à des données personnalisées, améliorant ainsi la capacité du modèle à fournir des réponses plus précises et plus éclairées. Ce processus comprend :
- Étape d'indexation: Il s'agit de la phase préparatoire où sont posées les bases de la création d'une base de connaissances.
- Étape de requête: Ici, la base de connaissances est parcourue pour trouver le contexte pertinent pour aider les LLM à répondre aux requêtes.
Parcours d'indexation avec LlamaIndex:
- Connecteurs de donnéesConsidérez les connecteurs de données comme le passeport de vos données vers LlamaIndex. Ils permettent d'importer des données de sources et de formats variés, en les encapsulant dans une représentation simplifiée de type « Document ». Les connecteurs de données sont disponibles dans LlamaHub, un référentiel open source proposant des chargeurs de données. Ces chargeurs sont conçus pour une intégration facile, permettant une expérience plug-and-play avec n'importe quelle application LlamaIndex.
- Documents / Nœuds: Un document est comme une valise générique pouvant contenir divers types de données, qu'il s'agisse d'un PDF, d'une sortie API ou d'entrées de base de données. D'un autre côté, un nœud est un extrait ou un « morceau » d'un document, enrichi de métadonnées et de relations avec d'autres nœuds, garantissant une base solide pour une récupération précise des données ultérieurement.
- Index de donnéesAprès l'ingestion des données, LlamaIndex facilite leur indexation dans un format récupérable. En coulisses, il décompose les documents bruts en représentations intermédiaires, calcule les intégrations vectorielles et en déduit les métadonnées. Parmi les index, « VectorStoreIndex » est souvent le choix de prédilection.
Types d'index dans LlamaIndex : clé des données organisées
LlamaIndex propose différents types d'index, chacun répondant à des besoins et des cas d'utilisation spécifiques. Au cœur de ces index se trouvent les « nœuds », comme indiqué précédemment. Essayons de comprendre les indices LlamaIndex, leurs mécanismes et leurs applications.
1. Index de liste:
- Mécanisme: Un index de liste aligne les nœuds séquentiellement comme une liste. Après avoir divisé les données d'entrée en nœuds, elles sont disposées de manière linéaire, prêtes à être interrogées soit séquentiellement, soit via des mots-clés ou des intégrations.
- MSP Corp: Ce type d'index brille lorsque le besoin est d'effectuer des requêtes séquentielles. LlamaIndex garantit l'utilisation de l'intégralité de vos données d'entrée, même si elles dépassent la limite de jetons du LLM, en interrogeant intelligemment le texte de chaque nœud et en affinant les réponses au fur et à mesure qu'il parcourt la liste.
2. Index des magasins de vecteurs:
- Mécanisme: Ici, les nœuds se transforment en plongements vectoriels, stockés soit localement, soit dans une base de données vectorielles spécialisée comme Milvus. Lorsqu'il est interrogé, il récupère les nœuds top_k les plus similaires, les canalisant vers le synthétiseur de réponses.
- MSP Corp: Si votre flux de travail dépend de la comparaison de texte pour la similarité sémantique via la recherche vectorielle, cet index peut être utilisé.
3. Index des arbres:
- Mécanisme: Dans un index arborescent, les données d'entrée évoluent vers une structure arborescente, construite de bas en haut à partir de nœuds feuilles (les morceaux de données d'origine). Les nœuds parents émergent sous la forme de résumés de nœuds feuilles, créés à l'aide de GPT. Au cours d'une requête, l'index de l'arborescence peut passer du nœud racine aux nœuds feuilles ou construire des réponses directement à partir des nœuds feuilles sélectionnés.
- MSP Corp: Avec un index arborescent, l'interrogation de longs morceaux de texte devient plus efficace et l'extraction d'informations à partir de divers segments de texte est simplifiée.
4. Index des mots clés:
- Mécanisme: Une cartographie des mots-clés vers les nœuds constitue le cœur d'un index de mots-clés. Lorsqu'ils sont interrogés, les mots-clés sont extraits de la requête et seuls les nœuds mappés sont mis en évidence.
- MSP Corp: Lorsque vous avez des requêtes utilisateur claires, un index de mots clés peut être utilisé. Par exemple, passer au crible les documents de santé devient plus efficace en se concentrant uniquement sur les documents pertinents au COVID-19.
Installation de LlamaIndex
L'installation de LlamaIndex est un processus simple. Vous pouvez choisir de l'installer soit directement depuis Pip, soit depuis la source. (Assurez-vous que Python est installé sur votre système ou vous pouvez utiliser Google Colab)
1. Installation Ă partir de Pip:
- Exécutez la commande suivante:
pip install llama-index
- Note: Lors de l'installation, LlamaIndex peut télécharger et stocker des fichiers locaux pour certains packages comme NLTK et HuggingFace. Pour spécifier un répertoire pour ces fichiers, utilisez la variable d'environnement « LLAMA_INDEX_CACHE_DIR ».
2. Installation Ă partir des sources:
- Tout d'abord, clonez le référentiel LlamaIndex depuis GitHub :
git clone https://github.com/jerryjliu/llama_index.git
- Une fois cloné, accédez au répertoire du projet.
- Vous aurez besoin de Poetry pour gérer les dépendances des packages.
- Maintenant, créez un environnement virtuel en utilisant Poetry :
poetry shell
- Enfin, installez les exigences du package de base avec :
poetry install
Configuration de votre environnement pour LlamaIndex
1. Configuration d'OpenAI:
- Par défaut, LlamaIndex utilise OpenAI
gpt-3.5-turbo
pour la génération de texte ettext-embedding-ada-002
pour la récupération et les intégrations. - Pour utiliser cette configuration, vous aurez besoin d'un
OPENAI_API_KEY
Obtenez-en un en vous inscrivant sur le site Web d'OpenAI et en créant un nouveau jeton API. - Vous avez la possibilité de personnaliser le Large Language Model (LLM) sous-jacent en fonction des besoins de votre projet. En fonction de votre fournisseur LLM, vous aurez peut-être besoin de clés et de jetons d'environnement supplémentaires.
2. Configuration de l'environnement local:
- Si vous préférez ne pas utiliser OpenAI, LlamaIndex passe automatiquement aux modèles locaux –
LlamaCPP
etllama2-chat-13B
pour la génération de texte, etBAAI/bge-small-en
pour la récupération et les intégrations. - Utiliser
LlamaCPP
, suivez le guide d'installation fourni. Assurez-vous d'installer lellama-cpp-python
package, idéalement compilé pour prendre en charge votre GPU. Cette configuration utilisera environ 11.5 Go de mémoire sur le CPU et le GPU. - Pour les intégrations locales, exécutez
pip install sentence-transformers
. Cette configuration locale utilisera environ 500 Mo de mémoire.
Avec ces configurations, vous pouvez personnaliser votre environnement pour tirer parti de la puissance d'OpenAI ou exécuter des modèles localement, en vous alignant sur les exigences et les ressources de votre projet.
Un cas d'utilisation simple : interroger des pages Web avec LlamaIndex et OpenAI
Voici un script Python simple pour montrer comment vous pouvez interroger une page Web pour obtenir des informations spécifiques :
!pip install llama-index html2text
import os from llama_index import VectorStoreIndex, SimpleWebPageReader # Enter your OpenAI key below: os.environ["OPENAI_API_KEY"] = "" # URL you want to load into your vector store here: url = "http://www.paulgraham.com/fr.html" # Load the URL into documents (multiple documents possible) documents = SimpleWebPageReader(html_to_text=True).load_data([url]) # Create vector store from documents index = VectorStoreIndex.from_documents(documents) # Create query engine so we can ask it questions: query_engine = index.as_query_engine() # Ask as many questions as you want against the loaded data: response = query_engine.query("What are the 3 best advise by Paul to raise money?") print(response)
The three best pieces of advice by Paul to raise money are: 1. Start with a low number when initially raising money. This allows for flexibility and increases the chances of raising more funds in the long run. 2. Aim to be profitable if possible. Having a plan to reach profitability without relying on additional funding makes the startup more attractive to investors. 3. Don't optimize for valuation. While valuation is important, it is not the most crucial factor in fundraising. Focus on getting the necessary funds and finding good investors instead.
Avec ce script, vous avez créé un outil puissant pour extraire des informations spécifiques d'une page Web en posant simplement une question. Ceci n'est qu'un aperçu de ce qui peut être réalisé avec LlamaIndex et OpenAI lors de l'interrogation de données Web.
LlamaIndex vs Langchain : choisir en fonction de votre objectif
Votre choix entre LlamaIndex et Langchain Cela dépendra de l'objectif de votre projet. Si vous souhaitez développer un outil de recherche intelligent, LlamaIndex est un excellent choix, car il excelle comme mécanisme de stockage intelligent pour la récupération de données. En revanche, si vous souhaitez créer un système comme ChatGPT avec des fonctionnalités de plugin, Langchain est la solution idéale. Non seulement il facilite les instances multiples de ChatGPT et de LlamaIndex, mais il étend également ses fonctionnalités en permettant la construction d'agents multitâches. Par exemple, avec Langchain, vous pouvez créer des agents capables d'exécuter du code Python tout en effectuant une recherche Google simultanément. En résumé, si LlamaIndex excelle dans la gestion des données, Langchain orchestre plusieurs outils pour offrir une solution globale.

Illustration du logo LlamaIndex créée à l'aide de À mi-parcours