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

Cette page décrit certains cas d'utilisation de la création d'applications LLM à l'aide de LlamaIndex intégré à Cloud SQL pour PostgreSQL. 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 à de grands modèles de langage (LLM). Vous pouvez utiliser LlamaIndex pour créer des applications qui accèdent à des informations à partir de données privées ou spécifiques au 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'assistants de connaissances avec des fonctionnalités de génération augmentée de récupération (RAG).

LlamaIndex est particulièrement 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 rapidité 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 de LlamaIndex.

Composants LlamaIndex

Cloud SQL pour PostgreSQL propose les interfaces LlamaIndex suivantes:

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

Découvrez comment utiliser LlamaIndex avec le guide de démarrage rapide de Cloud SQL pour PostgreSQL.

Vector Store

Cette intégration LlamaIndex vous permet d'utiliser la nature robuste et évolutive de Cloud SQL pour PostgreSQL pour stocker et gérer vos données LlamaIndex. En combinant les fonctionnalités d'indexation et de requête de LlamaIndex aux performances et à la fiabilité élevées de Cloud SQL pour PostgreSQL, vous pouvez créer des applications 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 des contenus des nœuds ingérés et le texte des nœuds. Un nœud, qui est un concept de première classe, contient du contenu textuel, des représentations vectorielles continues 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 utiliser des magasins de données vectorielles dans Cloud SQL pour PostgreSQL, utilisez la classe PostgresVectorStore. Pour en savoir plus, consultez la section Magasins de vecteurs LlamaIndex.

Stocker des embeddings vectoriels avec la classe PostgresVectorStore

Le guide Cloud SQL pour PostgreSQL sur le magasin de données vectorielles vous explique comment effectuer les opérations suivantes:

  • Initialiser une table pour stocker des embeddings vectoriels
  • Créez une instance de classe d'embedding à l'aide de n'importe quel modèle d'embedding de l'index Llama.
  • Initialisez un magasin de vecteurs PostgresVectorStore 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 efficacement les métadonnées.
  • Ajoutez un index ANN pour améliorer la latence de recherche.

Datastores de documents et d'index

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

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

Les index stores facilitent la gestion des index pour permettre une interrogation et une récupération rapide des données, par exemple, un résumé, un mot clé et un indice en arborescence. Index dans LlamaIndex est un stockage léger uniquement pour les métadonnées de nœud. Les mises à jour des métadonnées de nœud ne nécessitent pas de réindexation (génération d'un vecteur d'encapsulation de lecture) du nœud complet ni de tous les nœuds d'un document.

Pour en savoir plus, consultez la section LlamaIndex : magasins d'index.

Stocker des documents et des index

Le notebook Cloud SQL pour PostgreSQL sur les magasins de documents vous explique comment utiliser Cloud SQL pour PostgreSQL pour stocker des documents et des index à l'aide des classes PostgresDocumentStore et PostgresIndexStore. Vous allez apprendre à:

  • Créez un PostgresEngine à l'aide de PostgresEngine.from_instance().
  • Créez des tables pour DocumentStore et IndexStore.
  • Initialisez un PostgresDocumentStore par défaut.
  • Configurez un IndexStore Postgres.
  • Ajoutez des documents à Docstore.
  • Utilisez des magasins de documents avec plusieurs index.
  • Chargez les index existants.

Chat Stores

Les Chat Stores conservent l'historique des conversations et le contexte 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 dans une conversation, ce qui permet au LLM de conserver 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 explicitement fournies à chaque fois. En utilisant un magasin de chat, 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 de la conversation, 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 Cloud SQL pour PostgreSQL pour les magasins de chat vous explique comment utiliser Cloud SQL pour PostgreSQL pour stocker l'historique des discussions à l'aide de la classe PostgresChatStore. Vous allez apprendre à:

  • Créez un PostgresEngine à l'aide de PostgresEngine.from_instance().
  • Initialiser un PostgresChatStore. par défaut
  • Créez un objet ChatMemoryBuffer.
  • Créez une instance de classe LLM.
  • Utilisez PostgresChatStore sans contexte de stockage.
  • Utilisez PostgresChatStore avec un contexte de stockage.
  • Créez et utilisez Chat Engine.

Lecteur de documents

Le lecteur de documents récupère et transforme efficacement les données de Cloud SQL pour PostgreSQL en formats compatibles avec LlamaIndex à des fins d'indexation. L'interface Lecteur de documents 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 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 utilisés pour créer des index.

Pour en savoir plus, consultez le LlamaIndex Document Reader.

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

Le notebook Cloud SQL pour PostgreSQL pour Document Reader vous explique comment utiliser Cloud SQL pour PostgreSQL pour récupérer des données en tant que documents à l'aide de la classe PostgresReader. Vous allez apprendre à:

  • Créez un PostgresEngine à l'aide de PostgresEngine.from_instance().
  • Créez des PostgresReader.
  • Chargez des documents à l'aide de l'argument table_name.
  • Charger des documents à l'aide d'une requête SQL
  • Définissez le format du contenu de la page.
  • Chargez les documents.

Étape suivante