Maison > Périphériques technologiques > IA > Génération de rapports financiers multimodaux à l'aide de Llamaindex

Génération de rapports financiers multimodaux à l'aide de Llamaindex

尊渡假赌尊渡假赌尊渡假赌
Libérer: 2025-03-09 12:45:12
original
153 Les gens l'ont consulté

Dans de nombreuses applications du monde réel, les données ne sont pas purement textuelles - il peut inclure des images, des tables et des graphiques qui aident à renforcer le récit. Un générateur de rapports multimodal vous permet d'incorporer à la fois du texte et des images dans une sortie finale, ce qui rend vos rapports plus dynamiques et visuellement riches.

Cet article décrit comment construire un tel pipeline en utilisant:

  • llamaindex pour orchestrer des moteurs d'analyse de documents et de requête,
  • Openai Modèles linguistiques pour l'analyse textuelle,
  • llamaparse pour extraire à la fois du texte et des images de documents PDF,
  • Une configuration d'observabilité utilisant Arisez Phoenix (via Llamatrace) pour l'exploitation forestière et le débogage.

Le résultat final est un pipeline qui peut traiter un jeu de diapositives PDF entier - à la fois le texte et les visuels - et générer un rapport structuré contenant à la fois du texte et des images.

Objectifs d'apprentissage

  • Comprendre comment intégrer le texte et les visuels pour une génération efficace de rapport financier à l'aide de pipelines multimodaux.
  • Apprenez à utiliser Llamaindex et Llamaparse pour une génération de rapports financiers améliorée avec des résultats structurés.
  • Explorez le llamaparse pour extraire efficacement le texte et les images des documents PDF.
  • Configurez l'observabilité en utilisant Arize Phoenix (via Llamatrace) pour l'exploitation forestière et le débogage des pipelines complexes.
  • Créez un moteur de requête structuré pour générer des rapports qui entrelacer les résumés de texte avec des éléments visuels.

Cet article a été publié dans le cadre du Data Science Blogathon.

Table of contents

  • Overview of the Process
  • Step-by-Step Implementation
    • Step 1: Install and Import Dependencies
    • Step 2: Set Up Observability
    • Step 3: Load the data – Obtain Your Slide Deck
    • Step 4: Set Up Models
    • Step 5: Parse the Document with LlamaParse
    • Step 6: Associate Text and Images
    • Step 7: Build a Summary Index
    • Step 8: Define a Structured Output Schema
    • Step 9: Create a Structured Query Engine
  • Conclusion
  • Frequently Asked Questions

Aperçu du processus

La construction d'un générateur de rapport multimodal implique la création d'un pipeline qui intègre de manière transparente des éléments textuels et visuels à partir de documents complexes comme les PDF. Le processus commence par l'installation des bibliothèques nécessaires, telles que Llamaindex pour l'analyse de documents et l'orchestration de requête, et Llamaparse pour extraire à la fois du texte et des images. L'observabilité est établie en utilisant Arize Phoenix (via Llamatrace) pour surveiller et déboguer le pipeline.

Une fois la configuration terminée, le pipeline traite un document PDF, analysant son contenu en texte structuré et rendant des éléments visuels comme les tables et les graphiques. Ces éléments analysés sont ensuite associés, créant un ensemble de données unifié. Un SummaryIndex est conçu pour permettre des informations de haut niveau, et un moteur de requête structuré est développé pour générer des rapports qui mélangent une analyse textuelle avec des visuels pertinents. Le résultat est un générateur de rapports dynamique et interactif qui transforme les documents statiques en sorties multimodales riches adaptées aux requêtes utilisateur.

Implémentation étape par étape

Suivez ce guide détaillé pour créer un générateur de rapport multimodal, de la configuration des dépendances à la génération de sorties structurées avec du texte et des images intégrés. Chaque étape garantit une intégration transparente de Llamaindex, Llamaparse et Arize Phoenix pour un pipeline efficace et dynamique.

Étape 1: Installer et importer les dépendances

Vous aurez besoin des bibliothèques suivantes en cours d'exécution sur Python 3.9.9:

  • llama-index
  • LLAMA-PARSE (Pour l'analyse de l'image texte)
  • llama-index-callbacks-aze-phoenix (pour observabilité / journalisation)
  • NEST_ASYNCIO (Pour gérer les boucles d'événements asynchrones dans les cahiers)
!pip install -U llama-index-callbacks-arize-phoenix

import nest_asyncio

nest_asyncio.apply()
Copier après la connexion
Copier après la connexion

Étape 2: Configurer l'observabilité

Nous nous intégrons à API Llamatrace - Llamacloud (Arize Phoenix). Tout d'abord, obtenez une clé API à Llamatrace.com, puis configurez des variables d'environnement pour envoyer des traces à Phoenix.

La clé de l'API Phoenix peut être obtenue en s'inscrivant à Llamatrace ici, puis accédez au panneau inférieur gauche et cliquez sur «Clés» où vous devriez trouver votre clé API.

Par exemple:

PHOENIX_API_KEY = "<PHOENIX_API_KEY>"
os.environ["OTEL_EXPORTER_OTLP_HEADERS"] = f"api_key={PHOENIX_API_KEY}"
llama_index.core.set_global_handler(
    "arize_phoenix", endpoint="https://llamatrace.com/v1/traces"
)
Copier après la connexion
Copier après la connexion

Étape 3: Chargez les données - Obtenez votre pont de diapositives

Pour la démonstration, nous utilisons le jeu de diapositives de la réunion des investisseurs de ConocoPhillips. Nous téléchargeons le PDF:

import os
import requests

# Create the directories (ignore errors if they already exist)
os.makedirs("data", exist_ok=True)
os.makedirs("data_images", exist_ok=True)

# URL of the PDF
url = "https://static.conocophillips.com/files/2023-conocophillips-aim-presentation.pdf"

# Download and save to data/conocophillips.pdf
response = requests.get(url)
with open("data/conocophillips.pdf", "wb") as f:
    f.write(response.content)

print("PDF downloaded to data/conocophillips.pdf")
Copier après la connexion
Copier après la connexion

Vérifiez si le jeu de diapositives PDF se trouve dans le dossier de données, sinon le placez-le dans le dossier de données et nommez-le comme vous le souhaitez.

Étape 4: Configurer les modèles

Vous avez besoin d'un modèle d'incorporation et d'un LLM. Dans cet exemple:

from llama_index.llms.openai import OpenAI
from llama_index.embeddings.openai import OpenAIEmbedding
embed_model = OpenAIEmbedding(model="text-embedding-3-large")
llm = OpenAI(model="gpt-4o")
Copier après la connexion
Copier après la connexion

Ensuite, vous les enregistrez comme par défaut pour Llamaindex:

from llama_index.core import Settings
Settings.embed_model = embed_model
Settings.llm = llm
Copier après la connexion
Copier après la connexion

Étape 5: Analyser le document avec Llamaparse

llamaparse peut extraire du texte et des images (via un grand modèle multimodal). Pour chaque page PDF, il revient:

  • Texte de marque (avec des tables, des en-têtes, des puces, etc.)
  • Une image rendue (enregistrée localement)
print(f"Parsing slide deck...")
md_json_objs = parser.get_json_result("data/conocophillips.pdf")
md_json_list = md_json_objs[0]["pages"]
Copier après la connexion
Copier après la connexion

Génération de rapports financiers multimodaux à l'aide de Llamaindex

print(md_json_list[10]["md"])
Copier après la connexion
Copier après la connexion

Génération de rapports financiers multimodaux à l'aide de Llamaindex

print(md_json_list[1].keys())
Copier après la connexion

Génération de rapports financiers multimodaux à l'aide de Llamaindex

!pip install -U llama-index-callbacks-arize-phoenix

import nest_asyncio

nest_asyncio.apply()
Copier après la connexion
Copier après la connexion

Génération de rapports financiers multimodaux à l'aide de Llamaindex

Étape 6: Associer le texte et les images

Nous créons une liste d'objets TextNode (structure de données de Llamaindex) pour chaque page. Chaque nœud a des métadonnées sur le numéro de page et le chemin du fichier d'image correspondant:

PHOENIX_API_KEY = "<PHOENIX_API_KEY>"
os.environ["OTEL_EXPORTER_OTLP_HEADERS"] = f"api_key={PHOENIX_API_KEY}"
llama_index.core.set_global_handler(
    "arize_phoenix", endpoint="https://llamatrace.com/v1/traces"
)
Copier après la connexion
Copier après la connexion

Génération de rapports financiers multimodaux à l'aide de Llamaindex

Étape 7: Créez un indice de résumé

Avec ces nœuds de texte en main, vous pouvez créer un résumé deindex:

import os
import requests

# Create the directories (ignore errors if they already exist)
os.makedirs("data", exist_ok=True)
os.makedirs("data_images", exist_ok=True)

# URL of the PDF
url = "https://static.conocophillips.com/files/2023-conocophillips-aim-presentation.pdf"

# Download and save to data/conocophillips.pdf
response = requests.get(url)
with open("data/conocophillips.pdf", "wb") as f:
    f.write(response.content)

print("PDF downloaded to data/conocophillips.pdf")
Copier après la connexion
Copier après la connexion

Le Résumé de l'Index garantit que vous pouvez facilement récupérer ou générer des résumés de haut niveau sur l'ensemble du document.

Étape 8: Définissez un schéma de sortie structuré

Notre pipeline vise à produire une sortie finale avec des blocs de texte entrelacés et des blocs d'image. Pour cela, nous créons un modèle pydontique personnalisé (en utilisant le V2 pyndante ou assurant la compatibilité) avec deux types de blocs— textblock et ImageBlock - et un modèle parent Reportoutput :

from llama_index.llms.openai import OpenAI
from llama_index.embeddings.openai import OpenAIEmbedding
embed_model = OpenAIEmbedding(model="text-embedding-3-large")
llm = OpenAI(model="gpt-4o")
Copier après la connexion
Copier après la connexion

Le point clé: reportoutput nécessite au moins un bloc d'image, en s'assurant que la réponse finale est multimodale.

Étape 9: Créez un moteur de requête structuré

llamaindex vous permet d'utiliser un «LLM structuré» (c'est-à-dire un LLM dont la sortie est automatiquement analysée dans un schéma spécifique). Voici comment:

from llama_index.core import Settings
Settings.embed_model = embed_model
Settings.llm = llm
Copier après la connexion
Copier après la connexion

Génération de rapports financiers multimodaux à l'aide de Llamaindex

print(f"Parsing slide deck...")
md_json_objs = parser.get_json_result("data/conocophillips.pdf")
md_json_list = md_json_objs[0]["pages"]
Copier après la connexion
Copier après la connexion

Génération de rapports financiers multimodaux à l'aide de Llamaindex

print(md_json_list[10]["md"])
Copier après la connexion
Copier après la connexion

Génération de rapports financiers multimodaux à l'aide de Llamaindex

Génération de rapports financiers multimodaux à l'aide de Llamaindex

Conclusion

En combinant Llamaindex, Llamaparse et OpenAI, vous pouvez construire un générateur de rapports multimodal qui traite un PDF entier (avec du texte, des tables et des images) en une sortie structurée. Cette approche offre des résultats plus riches et plus informatifs - expressément ce dont les parties prenantes ont besoin pour glaner des informations critiques à partir de documents d'entreprise ou techniques complexes.

N'hésitez pas à adapter ce pipeline à vos propres documents, à ajouter une étape de récupération pour les grandes archives ou à intégrer des modèles spécifiques au domaine pour analyser les images sous-jacentes. Avec les fondations présentées ici, vous pouvez créer des rapports dynamiques, interactifs et visuellement riches qui vont bien au-delà des simples requêtes textuelles.

Un grand merci à Jerry Liu de Llamaindex pour avoir développé ce pipeline incroyable.

Les plats clés

  • Transformez les PDF avec du texte et des visuels en formats structurés tout en préservant l'intégrité du contenu original en utilisant Llamaparse et Llamaindex.
  • générer des rapports enrichis visuellement qui entrelacent des résumés textuels et des images pour une meilleure compréhension contextuelle.
  • La génération de rapports financiers peut être améliorée en intégrant à la fois des éléments de texte et visuels pour des sorties plus perspicaces et dynamiques.
  • Tirer parti de Llamaindex et Llamaparse rationalise le processus de génération de rapports financiers, garantissant des résultats précis et structurés.
  • Récupérer les documents pertinents avant le traitement pour optimiser la génération de rapports pour les grandes archives.
  • Améliorer l'analyse visuelle, incorporer des analyses spécifiques au graphique et combiner des modèles pour le traitement du texte et de l'image pour des informations plus profondes.

Les questions fréquemment posées

Q1. Qu'est-ce qu'un «générateur de rapports multimodal»?

a. Un générateur de rapports multimodal est un système qui produit des rapports contenant plusieurs types de contenu - de texte et d'images, dans une sortie cohérente. Dans ce pipeline, vous analysez un PDF en éléments textuels et visuels, puis les combinez en un seul rapport final.

Q2. Pourquoi ai-je besoin d'installer Llama-Index-Callbacks-aze-Phoenix et de configurer l'observabilité?

a. Des outils d'observabilité comme Arize Phoenix (via Llamatrace) vous permettent de surveiller et de déboguer le comportement du modèle, de suivre les requêtes et les réponses et d'identifier les problèmes en temps réel. Il est particulièrement utile pour traiter des documents importants ou complexes et plusieurs étapes basées sur LLM.

Q3. Pourquoi utiliser Llamaparse au lieu d'un extracteur de texte PDF standard?

a. La plupart des extracteurs de texte PDF ne gèrent que du texte brut, perdant souvent le formatage, les images et les tables. Llamaparse est capable d'extraire à la fois du texte et des images (images de page rendues), ce qui est crucial pour construire des pipelines multimodaux où vous devez vous référer à des tables, des graphiques ou d'autres visuels.

Q4. Quel est l'avantage de l'utilisation d'un résumé de l'Index?

a. SummaryIndex est une abstraction Llamaindex qui organise votre contenu (par exemple, les pages d'un PDF) afin qu'il puisse générer rapidement des résumés complets. Il aide à recueillir des informations de haut niveau à partir de longs documents sans avoir à les repousser manuellement ou à exécuter une requête de récupération pour chaque élément de données.

Q5. Comment puis-je m'assurer que le rapport final comprend au moins un bloc d'image?

a. Dans le modèle Pyndantique ReportOutput, appliquez que la liste des blocs nécessite au moins un ImageBlock. Ceci est indiqué dans votre invite de système et votre schéma. Le LLM doit suivre ces règles, ou il ne produira pas de sortie structurée valide.

Le média présenté dans cet article ne appartient pas à l'analyse vidhya et est utilisé à la discrétion de l'auteur.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal