在许多现实世界应用中,数据并不纯粹是文本的,其中可能包括图像,表和图表,这些图表和图表有助于加强叙述。多模式报告生成器允许您将文本和图像同时合并到最终输出中,从而使您的报告更具动态性和视觉上的丰富。
本文概述了如何使用以下方式构建这样的管道
学习目标
> > data Science Blogathon的一部分。 目录的>>
>设置完成后,管道将处理PDF文档,将其内容解析到结构化文本中,并渲染诸如表和图表之类的视觉元素。然后关联了这些解析的元素,创建一个统一的数据集。构建了一个摘要,以启用高级见解,并开发了结构化的查询引擎,以生成将文本分析与相关视觉效果融合的报告。结果是一个动态和交互式报告生成器,该生成器将静态文档转换为用于用户查询的丰富的多模式输出。
>>按照本详细指南构建多模式报告生成器,从设置依赖项到使用集成的文本和图像生成结构化输出。每个步骤都确保Llamaindex,Llamaparse和Arize Phoenix的无缝整合,以进行有效而动态的管道。
您需要在Python 3.9.9上运行的以下库:
!pip install -U llama-index-callbacks-arize-phoenix import nest_asyncio nest_asyncio.apply()>步骤2:设置可观察性
例如:
步骤3:加载数据 - 获取幻灯片甲板
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" )进行示范,我们使用Conocophillips的2023年投资者会议幻灯片。我们下载了PDF:
>检查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")>步骤4:设置模型
>您需要嵌入模型和LLM。在此示例中:
接下来,您将其注册为LlamainDex的默认值:
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")步骤5:用llamaparse
解析文件 Llamaparse可以提取文本和图像(通过多模式大型模型)提取文本和图像。对于每个PDF页面,它返回:
from llama_index.core import Settings Settings.embed_model = embed_model Settings.llm = llmmarkdown Text
(带表,标题,子弹点等)
print(f"Parsing slide deck...") md_json_objs = parser.get_json_result("data/conocophillips.pdf") md_json_list = md_json_objs[0]["pages"]
print(md_json_list[10]["md"])
!pip install -U llama-index-callbacks-arize-phoenix import nest_asyncio nest_asyncio.apply()
我们为每个页面创建一个>> textnode
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" )
摘要确保您可以轻松地检索或生成整个文档上的高级摘要。
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")>步骤8:定义结构化输出模式
我们的管道旨在产生带有交织的文本块和图像块的最终输出。为此,我们创建了一种自定义的pydantic模型(使用Pydantic V2或确保兼容性),具有两种块类型-e
和> imageBlock - 和一个父母模型 关键点:
reportOutput需要至少一个图像块,确保最终答案是多模式的。
from llama_index.core import Settings Settings.embed_model = embed_model Settings.llm = llm
print(f"Parsing slide deck...") md_json_objs = parser.get_json_result("data/conocophillips.pdf") md_json_list = md_json_objs[0]["pages"]
print(md_json_list[10]["md"])
结论
>可以随意将此管道适应您自己的文档,为大型档案添加检索步骤,或集成特定领域的模型以分析基础图像。在这里铺设的基础,您可以创建动态,互动和视觉上丰富的报告,这些报告远远超出了简单的基于文本的查询。
非常感谢Llamaindex的Jerry Liu开发了这款惊人的管道。
以上是使用LlamainDex的多模式财务报告生成的详细内容。更多信息请关注PHP中文网其他相关文章!