如今,许多人专注于获取数据和训练定制模型,但往往忽略了现有数据处理流程的重要性,而这些流程可以利用结构化数据提供有价值的见解。
从资产负债表和其他财务报表中提取结构化财务数据,对于了解公司的成长情况至关重要。
资产管理公司(AMCs)、经纪人和投资者,都依赖准确的结构化财务数据来做出明智的决策。
在基于检索增强生成(RAG)和大语言模型(LLM)的工作流程中,结构化输出不仅提高了准确性和清晰度,还让数据更利于理解。
通过分析公司发布的财务报告,了解其财务状况和计划,是寻找投资机会的重要途径。
然而,这些文档通常是非结构化的,手动提取关键信息非常困难。结构化财务数据利于解决这一问题,简化了数据提取过程,提高了效率。
提取前准备
基于模板提取数据
基于模板提取数据非常简单。通过使用模式定义属性及其类型,可以轻松利用Pydantic等库进行提取。
为什么要使用Pydantic提取呢?
编写的代码很少。Pydantic利用类型提示进行模式验证和提示,这意味着需要学习的内容更少,编写的代码更少,并且有更好的IDE集成。
高度可定制。Pydantic允许自定义验证器、错误信息等,使其高度可定制。
使用场景广泛。Pydantic是最受欢迎的Python数据验证库,每月下载量超过1亿次。FastAPI、Typer等许多流行库都在使
关键组件
在从非结构化或半结构化数据中提取结构化数据时,需要使用下面组件。
Pydantic BaseModel。这是提取流程中的关键组件之一,因为准确命名带有类型的属性是成功提取的重要部分。
提示词。提示词越详细和具体,得到的结果就越好。在这里,我们仅提供一个Pydantic BaseModel作为输入。
Instructor和Indexify等框架会根据其定义的提示词模板,使用这个BaseModel生成提示词。这一步决定了LLM能否有效地产出所需结果。
大模型。在流程中,大模型基于提供的提示提取所有信息(参考给定文本),这意味着选择更好的大模型将获得更好的提取结果。这些信息块随后被用来提取属性并转换为JSON格式。
验证器。验证是为了确保大模型返回的结果准确。如果结果不正确,将报告错误并重新设计提示,流程重新进行提取过程。
实 施
你无需从头开始,可以利用Tensorlake的Indexify框架来提取关键数据。
Indexify是一个数据框架,用于构建非结构化数据的提取流程。
这些流程使用声明式配置,每个阶段可以使用AI大模型结构化提取数据。一旦数据被提取到Indexify中,流程就会立即开始运行,非常适合交互式应用和低延迟用例。
设置提取器
pip install indexify indexify-extractor-sdk`` ``curl https://getindexify.ai | sh`` ``sudo apt-get install -y poppler-utils`` ``indexify-extractor download tensorlake/chunk-extractor``indexify-extractor download tensorlake/minilm-l6``indexify-extractor download tensorlake/pdfextractor``indexify-extractor download tensorlake/marker``indexify-extractor download tensorlake/schema
安装所需库并下载服务器和提取器后,重启运行环境。然后继续运行带有提取器的Indexify服务器。
打开两个新终端,运行以下命令:
终端1
./indexify server -d
终端2
indexify-extractor join-server
放入PDF
将以下代码放在文件名为 main.py
中并下载PDF:
fromindexify_extractor_sdk import load_extractor,Content
从pydantic import BaseModel
# PDF 提取器初始化
pdfextractor,pdfconfig_cls = load_extractor(“indexify_extractors.pdfextractor.pdf_extractor:PDFExtractor”)
# 从 PDF 文件中提取内容
content = Content.from_file(“BalanceSheet.pdf”)
config = pdfconfig_cls()
pdf_result = pdfextractor.extract(content,config)
# PDF 中存在的文本内容
text_content = next(content.data.decode(‘utf-8’)for content in pdf_result if content.content_type == ‘text/plain’)
# 定义模式
class Invoice(BaseModel):
year:int
captial_deposit:int
total_liability:int
total_assests:int
ratio_of_assests_by_liabilities:float
bills_collection:int
increase_in_deposites_from_2021_to_2022:float
schema = Invoice.model_json_schema()
client = IndexifyClient()
withdrawal_graph_spec = f"“”
name: ‘pdf_schema_extractor’
withdrawal_policies:
- extractor: ‘tensorlake/marker’
name: ‘pdf_to_text’ - extractor: ‘tensorlake/schema’
name: ‘text_to_schema’
input_params:
service: ‘openai’
model_name: ‘gpt-3.5-turbo’
key: ‘YOUR_OPENAI_API_KEY’
schema_config: {schema}
additional_messages: ‘根据此模式提取 JSON 中的信息并仅返回输出。’
content_source: ‘pdf_to_text’
“”"
withdrawal_graph = ExtractionGraph.from_yaml(extraction_graph_spec)
result = client.create_extraction_graph(extraction_graph)
llm_content = next (content.data.decode( “utf-8” ) for content in result if content.content_type == “text/plain” )
# 输出所有提取的属性
print (llm_content)
将 YOUR_OPENAI_API_KEY
替换为你的实际大模型 API密钥。
现在你已经准备好从PDF中提取结构化数据了。
提取数据
激活由Indexify创建的默认虚拟环境来管理依赖项和防止包冲突。使用以下代码激活环境:
source ~/.indexify-extractors/ve/bin/activate
现在运行包含所有上述代码的 main.py
python3 main.py
输出将以结构化JSON格式显示,如下所示:
{ `` “年份”:2022 年,` `“总收入”:15592517400,` `“总负债”:20685350503,` `“总资产”:20685350503,` `“资产负债率”:1,` `“应收账款”:569680463,` `“从 2021 年到 2022 年的存款增加”:2423670192` `}
现在我们已经从PDF中提取了结构化数据,可以将这些提取的数据通过API集成到数据库中进行进一步处理。
如何学习大模型 AI ?
由于新岗位的生产效率,要优于被取代岗位的生产效率,所以实际上整个社会的生产效率是提升的。
但是具体到个人,只能说是:
“最先掌握AI的人,将会比较晚掌握AI的人有竞争优势”。
这句话,放在计算机、互联网、移动互联网的开局时期,都是一样的道理。
我在一线互联网企业工作十余年里,指导过不少同行后辈。帮助很多人得到了学习和成长。
我意识到有很多经验和知识值得分享给大家,也可以通过我们的能力和经验解答大家在人工智能学习中的很多困惑,所以在工作繁忙的情况下还是坚持各种整理和分享。但苦于知识传播途径有限,很多互联网行业朋友无法获得正确的资料得到学习提升,故此将并将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。
第一阶段(10天):初阶应用
该阶段让大家对大模型 AI有一个最前沿的认识,对大模型 AI 的理解超过 95% 的人,可以在相关讨论时发表高级、不跟风、又接地气的见解,别人只会和 AI 聊天,而你能调教 AI,并能用代码将大模型和业务衔接。
- 大模型 AI 能干什么?
- 大模型是怎样获得「智能」的?
- 用好 AI 的核心心法
- 大模型应用业务架构
- 大模型应用技术架构
- 代码示例:向 GPT-3.5 灌入新知识
- 提示工程的意义和核心思想
- Prompt 典型构成
- 指令调优方法论
- 思维链和思维树
- Prompt 攻击和防范
- …
第二阶段(30天):高阶应用
该阶段我们正式进入大模型 AI 进阶实战学习,学会构造私有知识库,扩展 AI 的能力。快速开发一个完整的基于 agent 对话机器人。掌握功能最强的大模型开发框架,抓住最新的技术进展,适合 Python 和 JavaScript 程序员。
- 为什么要做 RAG
- 搭建一个简单的 ChatPDF
- 检索的基础概念
- 什么是向量表示(Embeddings)
- 向量数据库与向量检索
- 基于向量检索的 RAG
- 搭建 RAG 系统的扩展知识
- 混合检索与 RAG-Fusion 简介
- 向量模型本地部署
- …
第三阶段(30天):模型训练
恭喜你,如果学到这里,你基本可以找到一份大模型 AI相关的工作,自己也能训练 GPT 了!通过微调,训练自己的垂直大模型,能独立训练开源多模态大模型,掌握更多技术方案。
到此为止,大概2个月的时间。你已经成为了一名“AI小子”。那么你还想往下探索吗?
- 为什么要做 RAG
- 什么是模型
- 什么是模型训练
- 求解器 & 损失函数简介
- 小实验2:手写一个简单的神经网络并训练它
- 什么是训练/预训练/微调/轻量化微调
- Transformer结构简介
- 轻量化微调
- 实验数据集的构建
- …
第四阶段(20天):商业闭环
对全球大模型从性能、吞吐量、成本等方面有一定的认知,可以在云端和本地等多种环境下部署大模型,找到适合自己的项目/创业方向,做一名被 AI 武装的产品经理。
- 硬件选型
- 带你了解全球大模型
- 使用国产大模型服务
- 搭建 OpenAI 代理
- 热身:基于阿里云 PAI 部署 Stable Diffusion
- 在本地计算机运行大模型
- 大模型的私有化部署
- 基于 vLLM 部署大模型
- 案例:如何优雅地在阿里云私有部署开源大模型
- 部署一套开源 LLM 项目
- 内容安全
- 互联网信息服务算法备案
- …
学习是一个过程,只要学习就会有挑战。天道酬勤,你越努力,就会成为越优秀的自己。
如果你能在15天内完成所有的任务,那你堪称天才。然而,如果你能完成 60-70% 的内容,你就已经开始具备成为一名大模型 AI 的正确特征了。