Créer des applications basées sur un LLM avec LlamaIndex

Sélectionnez une version de la documentation :

Cette page décrit quelques cas d'utilisation pour la création d'applications basées sur un LLM à l'aide de LlamaIndex intégré à AlloyDB Omni. Des liens vers des notebooks sur GitHub sont fournis pour vous aider à explorer des approches ou à développer votre application.

LlamaIndex est un framework d'orchestration d'IA générative qui vous permet de connecter et d'intégrer des sources de données à des grands modèles de langage (LLM). Vous pouvez utiliser LlamaIndex pour créer des applications qui accèdent à des informations issues de données privées ou spécifiques à un domaine et les interrogent à l'aide de requêtes en langage naturel.

LlamaIndex sert de pont entre les données personnalisées et les LLM, ce qui facilite le développement d'applications d'assistant de connaissances avec des capacités de génération augmentée de récupération (RAG).

LlamaIndex est bien adapté aux applications axées sur les documents, car il met l'accent sur la gestion structurée des documents, ce qui simplifie l'indexation et la récupération. Ce framework propose des mécanismes de requête optimisés qui améliorent la vitesse et la pertinence de l'accès aux informations, ainsi qu'une gestion robuste des métadonnées pour un filtrage nuancé.

Pour en savoir plus sur le framework LlamaIndex, consultez la documentation produit LlamaIndex.

Composants LlamaIndex

AlloyDB Omni propose les interfaces LlamaIndex suivantes :

  • Vector Store
  • Document Store
  • Index Stores
  • Boutiques Chat
  • Lecteur de documents

Découvrez comment utiliser LlamaIndex avec le guide de démarrage rapide pour AlloyDB Omni.

Vector Store

Cette intégration LlamaIndex vous permet d'utiliser la robustesse et l'évolutivité d'AlloyDB Omni pour stocker et gérer vos données LlamaIndex. En combinant les capacités d'indexation et d'interrogation de LlamaIndex avec les performances et la fiabilité élevées d'AlloyDB Omni, vous pouvez créer des applications optimisées par LLM plus efficaces et évolutives.

LlamaIndex décompose un document (doc, texte et PDF) en composants appelés nœuds. Le VectorStore ne peut contenir que les vecteurs d'embedding du contenu des nœuds ingérés et le texte des nœuds. Un nœud contient du contenu textuel, des embeddings vectoriels et des métadonnées. Vous pouvez appliquer des filtres à ces champs de métadonnées pour limiter la récupération des nœuds à ceux qui correspondent aux critères de métadonnées spécifiés.

Pour travailler avec des magasins de vecteurs dans AlloyDB Omni, utilisez la classe AlloyDBVectorStore. Pour en savoir plus, consultez LlamaIndex Vector Stores.

Stocker des embeddings vectoriels avec la classe AlloyDBVectorStore

Le notebook AlloyDB Omni pour le magasin de vecteurs vous explique comment effectuer les opérations suivantes :

  • Créez un AlloyDBEngine pour vous connecter à votre instance AlloyDB Omni à l'aide de AlloyDBEngine.from_connection_string().
  • Initialisez une table pour stocker les embeddings vectoriels.
  • Créez une instance de classe d'embedding à l'aide d'un modèle d'embedding Llama Index.
  • Initialisez un magasin de vecteurs AlloyDBVectorStore par défaut.
  • Créez et interrogez un index à partir du magasin de vecteurs à l'aide de VectorStoreIndex.
  • Créez un magasin de vecteurs personnalisé pour stocker et filtrer les métadonnées.
  • Ajoutez un index ANN pour améliorer la latence de recherche.

Magasins de documents et d'index

L'intégration LlamaIndex Document Stores gère le stockage et la récupération de documents structurés, en optimisant les fonctionnalités de LlamaIndex axées sur les documents. Document Store stocke le contenu lié aux vecteurs dans le magasin de vecteurs.

Pour en savoir plus, consultez la documentation produit Magasins de documents LlamaIndex.

Les magasins d'index facilitent la gestion des index pour permettre l'interrogation et la récupération rapides des données (par exemple, les index de résumé, de mots clés et d'arborescence). Index dans LlamaIndex est un stockage léger réservé aux métadonnées des nœuds. Les mises à jour des métadonnées de nœud ne nécessitent pas de réindexer (générer des embeddings) le nœud complet ni tous les nœuds d'un document.

Pour en savoir plus, consultez LlamaIndex Index Stores.

Stocker des documents et des index

Le notebook AlloyDB Omni pour les magasins de documents vous montre comment utiliser AlloyDB Omni pour stocker des documents et des index à l'aide des classes AlloyDBDocumentStore et AlloyDBIndexStore. Vous allez apprendre à :

  • Créez un AlloyDBEngine pour vous connecter à votre instance AlloyDB Omni à l'aide de AlloyDBEngine.from_connection_string().
  • Créez des tables pour DocumentStore et IndexStore.
  • Initialisez un AlloyDBDocumentStore par défaut.
  • Configurez un AlloyDBIndexStore.
  • Ajoutez des documents à Docstore.
  • Utilisez des magasins de documents avec plusieurs index.
  • Chargez les index existants.

Boutiques Chat

Les Chat Stores conservent l'historique et le contexte des conversations pour les applications basées sur le chat, ce qui permet des interactions personnalisées. Les Chat Stores fournissent un dépôt central qui stocke et récupère les messages de chat au sein d'une conversation, ce qui permet au LLM de maintenir le contexte et de fournir des réponses plus pertinentes en fonction du dialogue en cours.

Les grands modèles de langage sont sans état par défaut, ce qui signifie qu'ils ne conservent pas les entrées précédentes, sauf si elles sont fournies explicitement à chaque fois. En utilisant un chat store, vous pouvez préserver le contexte de la conversation, ce qui permet au modèle de générer des réponses plus pertinentes et cohérentes au fil du temps.

Le module de mémoire de LlamaIndex permet de stocker et de récupérer efficacement le contexte conversationnel, ce qui permet des interactions plus personnalisées et contextuelles dans les applications de chat. Vous pouvez intégrer le module de mémoire dans LlamaIndex avec un ChatStore et un ChatMemoryBuffer. Pour en savoir plus, consultez LlamaIndex Chat Stores.

Stocker l'historique des discussions

Le notebook AlloyDB Omni pour les Chat Stores vous montre comment utiliser AlloyDB for PostgreSQL pour stocker l'historique des discussions à l'aide de la classe AlloyDBChatStore. Vous allez apprendre à :

  • Créez un AlloyDBEngine pour vous connecter à votre instance AlloyDB Omni à l'aide de AlloyDBEngine.from_connection_string().
  • Initialisez un AlloyDBChatStore par défaut.
  • Créez un objet ChatMemoryBuffer.
  • Créez une instance de classe LLM.
  • Utilisez AlloyDBChatStore sans contexte de stockage.
  • Utilisez AlloyDBChatStore avec un contexte de stockage.
  • Créer et utiliser le moteur de chat

Lecteur de documents

Document Reader récupère et transforme efficacement les données d'AlloyDB Omni dans des formats compatibles avec LlamaIndex pour l'indexation. L'interface Document Reader fournit des méthodes permettant de charger des données à partir d'une source en tant que Documents.

Document est une classe qui stocke un extrait de texte et les métadonnées associées. Vous pouvez utiliser des lecteurs de documents pour charger les documents que vous souhaitez stocker dans des magasins de documents ou utiliser pour créer des index.

Pour en savoir plus, consultez LlamaIndex Document Reader.

Récupérer des données sous forme de documents

Le notebook AlloyDB Omni pour Document Reader vous montre comment utiliser AlloyDB Omni pour récupérer des données en tant que documents à l'aide de la classe AlloyDBReader. Vous allez apprendre à effectuer les opérations suivantes :

  • Créez un AlloyDBEngine pour vous connecter à votre instance AlloyDB Omni à l'aide de AlloyDBEngine.from_connection_string().
  • Créez des AlloyDBReader.
  • Chargez les documents à l'aide de l'argument table_name.
  • Chargez des documents à l'aide d'une requête SQL.
  • Définissez le format du contenu de la page.
  • Chargez les documents.

Étapes suivantes