在处理PDF、PPT等格式的文档时,解析其中的复杂对象(如表格、图形等)一直是一个挑战。传统的解析技术往往难以准确解读和提取这些编码信息。为了应对这一普遍问题,软件开发社区推出了多种库和框架,如LLMSherpa和unstructured.io等,它们为解析复杂PDF提供了强大而灵活的解决方案。
最近,LlamaParse加入了这一工具列表。LlamaParse由Llama Index开发,这是一个备受推崇的LLM框架。因此,LlamaParse可以与Llama Index直接集成,这种无缝集成是一个显著优势,因为它简化了实施过程,并确保了两个工具之间的更高兼容性。总之,LlamaParse是一个有前景的新工具,它使解析复杂PDF变得更加容易和高效。
识别文档解析挑战:理解解析带有嵌入式对象的复杂PDF的困难。
LlamaParse介绍:了解LlamaParse是什么以及它与Llama Index的无缝集成。
设置和初始化:创建LlamaCloud账户,获取API密钥,并安装必要的库。
实现LlamaParse:按照步骤初始化LLM,加载和解析文档。
创建向量索引和查询数据:学习如何创建向量存储索引,设置查询引擎,并从解析的文档中提取特定信息。
使用LlamaParse在PDF上创建RAG应用程序的步骤
步骤1:获取API密钥
步骤2:安装所需的库
步骤3:设置环境变量
步骤4:初始化LLM和嵌入模型
步骤5:解析文档
步骤6:创建向量索引和查询引擎
步骤7:查询索引
步骤8:将所有内容整合在一起
步骤1:获取API密钥
LlamaParse是LlamaCloud平台的一部分,因此需要拥有LlamaCloud账户才能获得API密钥。首先,必须在LlamaCloud上创建账户并登录以创建API密钥。
步骤2:安装所需的库
现在打开Jupyter Notebook/Colab并安装所需的库。在这里,只需要安装两个库:llama-index和llama-parse。将使用OpenAI的模型进行查询和嵌入。
!pip install llama-index
!pip install llama-parse
步骤3:设置环境变量
import os
os.environ['OPENAI_API_KEY'] = 'sk-proj-****'
os.environ["LLAMA_CLOUD_API_KEY"] = 'llx-****'
步骤4:初始化LLM和嵌入模型
from llama_index.llms.openai import OpenAI
from llama_index.embeddings.openai import OpenAIEmbedding
from llama_index.core import Settings
embed_model = OpenAIEmbedding(model="text-embedding-3-small")
llm = OpenAI(model="gpt-3.5-turbo-0125")
Settings.llm = llm
Settings.embed_model = embed_model
步骤5:解析文档
from llama_parse import LlamaParse
from llama_index.core.node_parser import MarkdownElementNodeParser
documents = LlamaParse(result_type="markdown").load_data("./Table_2021.pdf")
node_parser = MarkdownElementNodeParser(llm=llm, num_workers=8)
nodes = node_parser.get_nodes_from_documents(documents)
base_nodes, objects = node_parser.get_nodes_and_objects(nodes)
步骤6:创建向量索引和查询引擎
from llama_index.core import VectorStoreIndex
recursive_index = VectorStoreIndex(nodes=base_nodes + objects)
recursive_query_engine = recursive_index.as_query_engine(similarity_top_k=5)
步骤7:查询索引
query = 'Extract the table as a dict and exclude any information about 2020. Also include % var'
response = recursive_query_engine.query(query)
print(response)
步骤8:将所有内容整合在一起
from llama_index.llms.openai import OpenAI
from llama_index.embeddings.openai import OpenAIEmbedding
from llama_index.core import Settings
from llama_parse import LlamaParse
from llama_index.core.node_parser import MarkdownElementNodeParser
from llama_index.core import VectorStoreIndex
embed_model = OpenAIEmbedding(model="text-embedding-3-small")
llm = OpenAI(model="gpt-3.5-turbo-0125")
Settings.llm = llm
Settings.embed_model = embed_model
documents = LlamaParse(result_type="markdown").load_data("./Table_2021.pdf")
node_parser = MarkdownElementNodeParser(llm=llm, num_workers=8)
nodes = node_parser.get_nodes_from_documents(documents)
base_nodes, objects = node_parser.get_nodes_and_objects(nodes)
recursive_index = VectorStoreIndex(nodes=base_nodes + objects)
recursive_query_engine = recursive_index.as_query_engine(similarity_top_k=5)
query = 'Extract the table as a dict and exclude any information about 2020. Also include % var'
response = recursive_query_engine.query(query)
print(response)
LlamaParse是一个高效的工具,可以从PDF文件等不同文档类型中提取复杂对象,只需几行代码。然而,需要注意的是,要充分利用这个工具,需要一定程度的LLM框架(如llama index)的工作经验。
LlamaParse在处理不同复杂性的任务中显示出其价值。然而,像技术领域的任何其他工具一样,它并非完全免疫于错误。因此,强烈建议独立进行彻底的应用程序评估或利用现有的评估工具。评估库,如Ragas、Truera等,提供了评估结果的准确性和可靠性的指标。这一步确保了潜在问题在应用程序推向生产环境之前被识别和解决。
LlamaParse是由Llama Index团队创建的工具。它能够从PDF等文档中提取复杂的嵌入式对象,只需几行代码。
LlamaParse提供免费和付费计划。免费计划允许每天解析多达1000页。
LlamaParse目前支持10+种文件类型(.pdf、.pptx、.docx、.html、.xml等)。
LlamaParse是LlamaCloud平台的一部分,因此需要LlamaCloud账户才能获得API密钥。
使用LlamaParse,可以用自然语言提供指令来格式化输出。它甚至支持图像提取。
Q1. Llama Index是什么?
A.LlamaIndex是构建LLM应用程序的主要LLM框架之一,与LangChain一起,它有助于将自定义数据源连接到大型语言模型(LLMs),是构建RAG应用程序的广泛使用的工具。
Q2. LlamaParse是什么?
A. LlamaParse是Llama Index提供的一个工具,可以从PDF、PPT等文档中提取复杂的表格和图形。因此,LlamaParse可以与Llama Index直接集成,允许使用Llama Index提供的广泛代理和工具。
Q3. LlamaParse与Llama Index有何不同?
A. Llama Index是一个用于构建自定义LLM应用程序的LLM框架,并提供各种工具和代理。LlamaParse专门专注于从文档中提取复杂的嵌入式对象,如PDF、PPT等。