Suivez nous sur

LlamaIndex : amĂ©liorez facilement vos applications LLM avec des donnĂ©es personnalisĂ©es

Intelligence Artificielle

LlamaIndex : amĂ©liorez facilement vos applications LLM avec des donnĂ©es personnalisĂ©es

mm
LamaIndex

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.

Index des lamas

Index des lamas

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):

LlamaIndex RAG

LlamaIndex 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.
Index des lamas

Indexation LlamaIndex

  • É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.
ÉTAPE DE REQUÊTE LlamaIndex

Étape de requête LlamaIndex

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.
Centre de lama

Centre LlamaIndex (https://llamahub.ai/)

  • 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 et text-embedding-ada-002 pour la rĂ©cupĂ©ration et les intĂ©grations.
  • Pour utiliser cette configuration, vous aurez besoin d'un OPENAI_API_KEYObtenez-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 et llama2-chat-13B pour la gĂ©nĂ©ration de texte, et BAAI/bge-small-en pour la rĂ©cupĂ©ration et les intĂ©grations.
  • Utiliser LlamaCPP, suivez le guide d'installation fourni. Assurez-vous d'installer le llama-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.
Carnet d'index Google Colab Lama

Carnet d'index Google Colab Lama

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 Midjourney

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

J'ai passé les cinq dernières années à m'immerger dans le monde fascinant du Machine Learning et du Deep Learning. Ma passion et mon expertise m'ont amené à contribuer à plus de 50 projets de génie logiciel divers, avec un accent particulier sur l'IA/ML. Ma curiosité continue m'a également attiré vers le traitement automatique du langage naturel, un domaine que j'ai hâte d'explorer davantage.