LlamaIndex : ajouter des données personnelles aux LLMs
LlamaIndex est votre allié données pour créer des applications basées sur des LLMs. Ingestez, gérez et retrouvez aisément des données privées et spécifiques à votre domaine en langage naturel.
LlamaIndex est un framework de données pour des applications basées sur des grands modèles de langage (LLMs). Des LLMs comme GPT-4 sont préentraînés sur d’immenses jeux de données publics, ce qui leur confère d’emblée des capacités remarquables de traitement du langage naturel. Toutefois, leur utilité reste limitée sans accès à vos propres données privées.
LlamaIndex vous permet d’ingérer des données depuis des API, des bases de données, des PDF, et plus encore, via des connecteurs flexibles. Ces données sont indexées en représentations intermédiaires optimisées pour les LLMs. LlamaIndex autorise ensuite des requêtes et des conversations en langage naturel avec vos données via des moteurs de requête, des interfaces de chat et des agents pilotés par LLM. Il permet à vos LLMs d’accéder à des données privées et de les interpréter à grande échelle, sans réentraîner le modèle sur des données plus récentes.
Que vous soyez débutant et cherchiez un moyen simple d’interroger vos données en langage naturel, ou utilisateur avancé nécessitant une personnalisation poussée, LlamaIndex fournit les bons outils. L’API de haut niveau permet de démarrer en cinq lignes de code, tandis que les API de bas niveau offrent un contrôle total sur l’ingestion, l’indexation, la recherche, et plus encore.
Comment fonctionne LlamaIndex ?
LlamaIndex s’appuie sur des systèmes de génération augmentée par la recherche (RAG) qui combinent de grands modèles de langage à une base de connaissances privée. Cela comprend généralement deux étapes : l’indexation et l’interrogation.
Lors de la phase d’indexation, LlamaIndex indexe efficacement les données privées dans un index vectoriel. Cette étape permet de créer une base de connaissances interrogeable, propre à votre domaine. Vous pouvez fournir des documents texte, des enregistrements de base de données, des graphes de connaissances, et d’autres types de données.
Concrètement, l’indexation convertit les données en vecteurs numériques (embeddings) qui capturent leur sens sémantique. Cela autorise des recherches par similarité rapides dans le contenu.
Phase d’interrogation
Pendant la phase d’interrogation, le pipeline RAG recherche les informations les plus pertinentes à partir de la requête de l’utilisateur. Ces informations sont ensuite fournies au LLM, avec la requête, pour produire une réponse précise.
Ce processus donne au LLM accès à des informations actuelles et mises à jour qui n’ont pas nécessairement été incluses lors de son entraînement initial.
Le principal défi à cette étape consiste à récupérer, organiser et raisonner sur potentiellement plusieurs bases de connaissances.
Pour en savoir plus sur RAG, suivez notre code-along Retrieval Augmented Generation with PineCone.
Configuration de LlamaIndex
Avant d’entrer dans le tutoriel et le projet LlamaIndex, nous devons installer le package Python et configurer l’API.
Nous pouvons simplement installer LlamaIndex avec pip.
Par défaut, LlamaIndex utilise le modèle OpenAI GPT-3 text-davinci-003. Pour utiliser ce modèle, vous devez définir une variable OPENAI_API_KEY. Vous pouvez créer un compte gratuit et obtenir une clé API en vous connectant au nouveau jeton d’API d’OpenAI.
import os
os.environ["OPENAI_API_KEY"]="INSERT OPENAI KEY"Propulsé par
Assurez-vous également d’avoir installé le package openai.
Ajouter des données personnelles aux LLMs avec LlamaIndex
Dans cette section, nous allons utiliser LlamaIndex pour créer un lecteur de CV. Vous pouvez télécharger votre CV depuis votre page de profil LinkedIn, en cliquant sur Plus, puis Enregistrer en PDF.
Notez que nous utilisons DataLab pour exécuter le code Python. Vous pouvez accéder à tout le code et aux sorties dans le workbook LlamaIndex : ajouter des données personnelles aux LLMs ; vous pouvez facilement créer votre propre copie pour tout exécuter sans rien installer sur votre ordinateur !
Avant toute exécution, nous devons installer llama-index, openai et pypdf. Nous installons pypdf pour pouvoir lire et convertir des fichiers PDF.
Nous avons un répertoire nommé « Private-Data » qui contient un seul fichier PDF. Nous allons utiliser SimpleDirectoryReader pour le lire puis le convertir en index à l’aide de TreeIndex.
from llama_index import TreeIndex, SimpleDirectoryReader
resume = SimpleDirectoryReader("Private-Data").load_data()
new_index = TreeIndex.from_documents(resume)Propulsé par
Exécuter une requête
Une fois les données indexées, vous pouvez commencer à poser des questions avec as_query_engine(). Cette fonction vous permet d’interroger des informations précises au sein du document et d’obtenir une réponse correspondante avec l’aide du modèle OpenAI GPT-3 text-davinci-003.
Nous pouvons poser une autre question sur la certification. Il semble que LlamaIndex ait bien compris le profil du candidat, ce qui peut être précieux pour des entreprises à la recherche de profils spécifiques.
response = query_engine.query("What is the name of certification that Abid received?")print(response)Propulsé par
Créer un index peut prendre du temps. Nous pouvons éviter de le reconstruire en sauvegardant le contexte. Par défaut, la commande suivante enregistre le magasin d’index dans le répertoire ./storage.
Une fois cela fait, nous pouvons rapidement recharger le contexte de stockage et recréer un index.
from llama_index import StorageContext, load_index_from_storage
storage_context = StorageContext.from_defaults(persist_dir="./storage")
index = load_index_from_storage(storage_context)Propulsé par
Pour vérifier que tout fonctionne, nous allons poser au moteur de requête une question issue du CV. Il semble que nous ayons bien rechargé le contexte.
query_engine = index.as_query_engine()
response = query_engine.query("What is Abid's job title?")print(response)Propulsé par
Plutôt qu’un simple questions-réponses, nous pouvons aussi utiliser LlamaIndex pour créer un chatbot personnel. Il suffit d’initialiser l’index avec la fonction as_chat_engine().
Nous allons poser une question simple.
query_engine = index.as_chat_engine()
response = query_engine.chat("What is the job title of Abid in 2021?")print(response)Propulsé par
Abid's job title in2021is Data Science Consultant.Propulsé par
Et sans fournir de contexte supplémentaire, nous allons poser des questions de suivi.
response = query_engine.chat("What else did he do during that time?")print(response)Propulsé par
In 2021, Abid worked as a Data Science Consultant for Guidepoint, a Writer for Towards Data Science and Towards AI, a Technical Writer for Machine Learning Mastery, an Ambassador for Deepnote,and a Technical Writer for Start It Up.Propulsé par
Il est manifeste que le moteur de chat fonctionne parfaitement.
Ensuite, nous devons installer les packages nécessaires. Le package elevenlabs nous permet de convertir facilement du texte en parole via une API.
%pip install llama-index openai elevenlabsPropulsé par
À l’aide de SimpleDirectoryReader, nous allons charger les données et convertir le fichier TXT en magasin vectoriel avec VectorStoreIndex.
from llama_index import VectorStoreIndex, SimpleDirectoryReader
from IPython.display import Markdown, display
from llama_index.tts import ElevenLabsTTS
from IPython.display import Audio
documents = SimpleDirectoryReader("data").load_data()
index = VectorStoreIndex.from_documents(documents)Propulsé par
Requête
Notre objectif est de poser une question générale sur le pays et de recevoir une réponse du query_engine du LLM.
query ="Tell me an interesting fact about the country?"
query_engine = index.as_query_engine()
response = query_engine.query(query)
display(Markdown(f"<b>{query}</b>"))
display(Markdown(f"<p>{response}</p>"))Propulsé par
Texte en parole
Ensuite, nous utiliserons le module llama_index.tts pour accéder à l’API ElevenLabsTTS. Vous devez fournir une clé API ElevenLabs pour lancer la génération audio. Vous pouvez obtenir une clé API gratuitement sur le site ElevenLabs.
import os
elevenlabs_key = os.environ["ElevenLabs_key"]
tts = ElevenLabsTTS(api_key=elevenlabs_key)Propulsé par
Nous allons passer la réponse à la fonction generate_audio pour générer une voix naturelle. Pour écouter l’audio, nous utiliserons la fonction Audio de IPython.display.
audio = tts.generate_audio(str(response))
Audio(audio)Propulsé par
Ceci est un exemple simple. Vous pouvez combiner plusieurs modules pour créer votre assistant, comme Siri, qui répond à vos questions en s’appuyant sur vos données privées. Pour plus d’informations, reportez-vous à la documentation LlamaIndex.
LlamaIndex fournit une boîte à outils complète pour créer des applications basées sur le langage. En plus, vous pouvez exploiter divers chargeurs de données et outils d’agent depuis Llama Hub afin de développer des applications complexes aux multiples fonctionnalités.
Vous pouvez connecter des sources de données personnalisées à votre LLM avec un ou plusieurs plugins Data Loaders.
En bref, vous pouvez utiliser LlamaIndex pour créer :
Questions-réponses sur des documents
Chatbots
Agents
Données structurées
Application web full-stack
Déploiement privé
Pour approfondir ces cas d’usage, consultez la documentation LlamaIndex.
Conclusion
LlamaIndex propose une boîte à outils puissante pour construire des systèmes de génération augmentée par la recherche, combinant la force des grands modèles de langage et des bases de connaissances personnalisées. Il permet de créer un magasin indexé de données spécifiques à un domaine et de l’exploiter à l’inférence pour fournir au LLM le contexte pertinent et générer des réponses de haute qualité.
Dans ce tutoriel, nous avons découvert LlamaIndex et son fonctionnement. Nous avons également construit un lecteur de CV et un projet de synthèse vocale avec seulement quelques lignes de code Python. Créer une application LLM avec LlamaIndex est simple, et vous bénéficiez d’une vaste bibliothèque de plugins, chargeurs de données et agents.
Pour devenir un expert du développement LLM, la prochaine étape naturelle est de vous inscrire au cours Master Large Language Models Concepts. Ce cours vous apportera une compréhension approfondie des LLMs, de leurs applications, de leurs méthodes d’entraînement, des considérations éthiques et des dernières avancées de la recherche.
En tant que data scientist certifié, je suis passionné par l'utilisation des technologies de pointe pour créer des applications innovantes d'apprentissage automatique. Avec une solide expérience en reconnaissance vocale, en analyse de données et en reporting, en MLOps, en IA conversationnelle et en NLP, j'ai affiné mes compétences dans le développement de systèmes intelligents qui peuvent avoir un impact réel. En plus de mon expertise technique, je suis également un communicateur compétent, doué pour distiller des concepts complexes dans un langage clair et concis. En conséquence, je suis devenu un blogueur recherché dans le domaine de la science des données, partageant mes idées et mes expériences avec une communauté grandissante de professionnels des données. Actuellement, je me concentre sur la création et l'édition de contenu, en travaillant avec de grands modèles linguistiques pour développer un contenu puissant et attrayant qui peut aider les entreprises et les particuliers à tirer le meilleur parti de leurs données.
Apprenez l'essentiel de l'architecture d'un entrepôt de données, des composants clés aux meilleures pratiques, pour construire un système de données évolutif et efficace !
Découvrez les fonctions lambda Python, leur utilité et quand les utiliser. Comprend des exemples pratiques et des bonnes pratiques pour une mise en œuvre efficace.
Initiez-vous aux structures de données de Python : apprenez-en plus sur les types de données et les structures de données primitives et non primitives, telles que les chaînes de caractères, les listes, les piles, etc.
LlamaIndex est un framework de données pour des applications basées sur des grands modèles de langage (LLMs). Des LLMs comme GPT-4 sont préentraînés sur d’immenses jeux de données publics, ce qui leur confère d’emblée des capacités remarquables de traitement du langage naturel. Toutefois, leur utilité reste limitée sans accès à vos propres données privées.
LlamaIndex vous permet d’ingérer des données depuis des API, des bases de données, des PDF, et plus encore, via des connecteurs flexibles. Ces données sont indexées en représentations intermédiaires optimisées pour les LLMs. LlamaIndex autorise ensuite des requêtes et des conversations en langage naturel avec vos données via des moteurs de requête, des interfaces de chat et des agents pilotés par LLM. Il permet à vos LLMs d’accéder à des données privées et de les interpréter à grande échelle, sans réentraîner le modèle sur des données plus récentes.
Que vous soyez débutant et cherchiez un moyen simple d’interroger vos données en langage naturel, ou utilisateur avancé nécessitant une personnalisation poussée, LlamaIndex fournit les bons outils. L’API de haut niveau permet de démarrer en cinq lignes de code, tandis que les API de bas niveau offrent un contrôle total sur l’ingestion, l’indexation, la recherche, et plus encore.
Comment fonctionne LlamaIndex ?
LlamaIndex s’appuie sur des systèmes de génération augmentée par la recherche (RAG) qui combinent de grands modèles de langage à une base de connaissances privée. Cela comprend généralement deux étapes : l’indexation et l’interrogation.
Image tirée des concepts de haut niveau
Phase d’indexation
Lors de la phase d’indexation, LlamaIndex indexe efficacement les données privées dans un index vectoriel. Cette étape permet de créer une base de connaissances interrogeable, propre à votre domaine. Vous pouvez fournir des documents texte, des enregistrements de base de données, des graphes de connaissances, et d’autres types de données.
Concrètement, l’indexation convertit les données en vecteurs numériques (embeddings) qui capturent leur sens sémantique. Cela autorise des recherches par similarité rapides dans le contenu.
Phase d’interrogation
Pendant la phase d’interrogation, le pipeline RAG recherche les informations les plus pertinentes à partir de la requête de l’utilisateur. Ces informations sont ensuite fournies au LLM, avec la requête, pour produire une réponse précise.
Ce processus donne au LLM accès à des informations actuelles et mises à jour qui n’ont pas nécessairement été incluses lors de son entraînement initial.
Le principal défi à cette étape consiste à récupérer, organiser et raisonner sur potentiellement plusieurs bases de connaissances.
Pour en savoir plus sur RAG, suivez notre code-along Retrieval Augmented Generation with PineCone.
Configuration de LlamaIndex
Avant d’entrer dans le tutoriel et le projet LlamaIndex, nous devons installer le package Python et configurer l’API.
Nous pouvons simplement installer LlamaIndex avec pip.
Par défaut, LlamaIndex utilise le modèle OpenAI GPT-3 text-davinci-003. Pour utiliser ce modèle, vous devez définir une variable
OPENAI_API_KEY. Vous pouvez créer un compte gratuit et obtenir une clé API en vous connectant au nouveau jeton d’API d’OpenAI.Assurez-vous également d’avoir installé le package
openai.Ajouter des données personnelles aux LLMs avec LlamaIndex
Dans cette section, nous allons utiliser LlamaIndex pour créer un lecteur de CV. Vous pouvez télécharger votre CV depuis votre page de profil LinkedIn, en cliquant sur Plus, puis Enregistrer en PDF.
Notez que nous utilisons DataLab pour exécuter le code Python. Vous pouvez accéder à tout le code et aux sorties dans le workbook LlamaIndex : ajouter des données personnelles aux LLMs ; vous pouvez facilement créer votre propre copie pour tout exécuter sans rien installer sur votre ordinateur !
Avant toute exécution, nous devons installer
llama-index,openaietpypdf. Nous installonspypdfpour pouvoir lire et convertir des fichiers PDF.Charger les données et créer l’index
Nous avons un répertoire nommé « Private-Data » qui contient un seul fichier PDF. Nous allons utiliser
SimpleDirectoryReaderpour le lire puis le convertir en index à l’aide deTreeIndex.Exécuter une requête
Une fois les données indexées, vous pouvez commencer à poser des questions avec
as_query_engine(). Cette fonction vous permet d’interroger des informations précises au sein du document et d’obtenir une réponse correspondante avec l’aide du modèle OpenAIGPT-3 text-davinci-003.Remarque : vous pouvez configurer l’API OpenAI dans DataLab en suivant le tutoriel Utiliser GPT-3.5 et GPT-4 via l’API OpenAI en Python.
Comme on peut le voir, le modèle LLM a répondu avec précision à la requête. Il a parcouru l’index et trouvé l’information pertinente.
Nous pouvons poser une autre question sur la certification. Il semble que LlamaIndex ait bien compris le profil du candidat, ce qui peut être précieux pour des entreprises à la recherche de profils spécifiques.
Sauvegarder et recharger le contexte
Créer un index peut prendre du temps. Nous pouvons éviter de le reconstruire en sauvegardant le contexte. Par défaut, la commande suivante enregistre le magasin d’index dans le répertoire
./storage.Une fois cela fait, nous pouvons rapidement recharger le contexte de stockage et recréer un index.
Pour vérifier que tout fonctionne, nous allons poser au moteur de requête une question issue du CV. Il semble que nous ayons bien rechargé le contexte.
Chatbot
Plutôt qu’un simple questions-réponses, nous pouvons aussi utiliser LlamaIndex pour créer un chatbot personnel. Il suffit d’initialiser l’index avec la fonction
as_chat_engine().Nous allons poser une question simple.
Et sans fournir de contexte supplémentaire, nous allons poser des questions de suivi.
Il est manifeste que le moteur de chat fonctionne parfaitement.
Après avoir créé votre application de langage, la prochaine étape de votre feuille de route consiste à lire les avantages et inconvénients de l’utilisation de LLMs dans le cloud versus leur exécution en local. Cela vous aidera à déterminer l’approche la mieux adaptée à vos besoins.
Créer une lecture vocale de textes Wikipedia avec LlamaIndex
Notre prochain projet consiste à développer une application capable de répondre à des questions issues de Wikipedia et de les convertir en parole.
Le code source et des informations complémentaires sont disponibles dans ce workbook DataLab.
Web scraping d’une page Wikipedia
Nous allons d’abord extraire les données de la page Italy - Wikipedia et les enregistrer dans un fichier
italy_text.txtdans le dossierdata.Charger les données et construire l’index
Ensuite, nous devons installer les packages nécessaires. Le package
elevenlabsnous permet de convertir facilement du texte en parole via une API.À l’aide de
SimpleDirectoryReader, nous allons charger les données et convertir le fichier TXT en magasin vectoriel avecVectorStoreIndex.Requête
Notre objectif est de poser une question générale sur le pays et de recevoir une réponse du
query_enginedu LLM.Texte en parole
Ensuite, nous utiliserons le module
llama_index.ttspour accéder à l’API ElevenLabsTTS. Vous devez fournir une clé API ElevenLabs pour lancer la génération audio. Vous pouvez obtenir une clé API gratuitement sur le site ElevenLabs.Nous allons passer la réponse à la fonction
generate_audiopour générer une voix naturelle. Pour écouter l’audio, nous utiliserons la fonctionAudiodeIPython.display.Ceci est un exemple simple. Vous pouvez combiner plusieurs modules pour créer votre assistant, comme Siri, qui répond à vos questions en s’appuyant sur vos données privées. Pour plus d’informations, reportez-vous à la documentation LlamaIndex.
En complément de LlamaIndex, LangChain permet également de créer des applications basées sur des LLMs. Vous pouvez aussi lire Introduction à LangChain pour l’ingénierie des données et les applications data pour une vue d’ensemble de ce que vous pouvez faire avec LangChain, y compris les problèmes que LangChain résout et des cas d’usage data.
Cas d’usage de LlamaIndex
LlamaIndex fournit une boîte à outils complète pour créer des applications basées sur le langage. En plus, vous pouvez exploiter divers chargeurs de données et outils d’agent depuis Llama Hub afin de développer des applications complexes aux multiples fonctionnalités.
Vous pouvez connecter des sources de données personnalisées à votre LLM avec un ou plusieurs plugins Data Loaders.
Data Loaders depuis Llama Hub
Vous pouvez également utiliser des Agent tools pour intégrer des outils et API tiers.
Agent Tools depuis Llama Hub
En bref, vous pouvez utiliser LlamaIndex pour créer :
Pour approfondir ces cas d’usage, consultez la documentation LlamaIndex.
Conclusion
LlamaIndex propose une boîte à outils puissante pour construire des systèmes de génération augmentée par la recherche, combinant la force des grands modèles de langage et des bases de connaissances personnalisées. Il permet de créer un magasin indexé de données spécifiques à un domaine et de l’exploiter à l’inférence pour fournir au LLM le contexte pertinent et générer des réponses de haute qualité.
Dans ce tutoriel, nous avons découvert LlamaIndex et son fonctionnement. Nous avons également construit un lecteur de CV et un projet de synthèse vocale avec seulement quelques lignes de code Python. Créer une application LLM avec LlamaIndex est simple, et vous bénéficiez d’une vaste bibliothèque de plugins, chargeurs de données et agents.
Pour devenir un expert du développement LLM, la prochaine étape naturelle est de vous inscrire au cours Master Large Language Models Concepts. Ce cours vous apportera une compréhension approfondie des LLMs, de leurs applications, de leurs méthodes d’entraînement, des considérations éthiques et des dernières avancées de la recherche.