大模型实战-FinGLM解析金融财报做RAG经验参考篇

2024-08-28 18:44

本文主要是介绍大模型实战-FinGLM解析金融财报做RAG经验参考篇,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

大模型实战-FinGLM金融财报解析实战

https://modelscope.cn/datasets/modelscope/chatglm_llm_fintech_raw_dataset/summary

详细解读:

https://modelscope.cn/models/finglm/FinGLM/summary

背景:解读pdf版本的公司财务年报,构建问答模型,能回答一些金融领域相关的问题。包含答案抽取,以及答案推理。

一 数据处理步骤

以下是我们推荐的处理步骤:

1、**PDF文本和表格提取:**您可以使用如pdfplumber、pdfminer等工具包提取PDF文件中的文本和表格数据。

「pdfplumber:」pdfplumber库按页处理 pdf ,获取页面文字,提取表格等操作。学习文档:https://github.com/jsvine/pdfplumber「pypdf2:」PyPDF2 是一个纯 Python PDF 库,可以读取文档信息(标题,作者等)、写入、分割、合并PDF文档,它还可以对pdf文档进行添加水印、加密解密等。官方文档:https://pythonhosted.org/PyPDF2

2、数据切分:根据PDF文件的目录、子目录和章节信息,对内容进行精确的切块处理。

3、构建基础金融数据库:依据金融知识和PDF内容,设计专业的金融数据库字段和格式。例如,定义资产负债表、现金流量表和利润表等。

4、信息提取:使用大模型的信息提取能力和NLP技术来抽取对应的金融字段信息。例如,请使用json方式输出目录的内容,其中章节的名称作为key,页码作为value。同时,请详细地抽取表格内的数据,以JSON格式输出。

5、构建金融知识问答库:结合构建的金融数据库,应用大模型构建基础的金融问答库。例如,

    {"question":"某公司2021年的财务费用为多少元?", "answer": "某公司2021年的财务费用为XXXX元。"}prompt:用多种句式修改question及answer的内容。{"question":"为什么财务费用可以是负的?", "answer": ""}prompt:请模仿上面的question给出100个类似的问题与对应的答案,用json输出。

6、构建向量库:借助于如Word2Vec、Text2Vec等技术,从原始文本数据中提取出语义向量。使用pgvector这种基于PostgreSQL的扩展来存储和索引这些向量,从而建立起一个可供高效查询的大规模向量库。

7、应用:结合向量库、大模型、langchain等工具,提升应用效果。

二 实战教程参考
https://tianchi.aliyun.com/forum/post/573555
https://zhuanlan.zhihu.com/p/659585193  [大模型绝密技巧]ChatGLM金融开源FinGLM学习笔记,让你升职加薪!
https://zhuanlan.zhihu.com/p/648760946  SMP 2023金融大模型挑战赛实践优化调试分享(三https://www.zhihu.com/question/585107192/answer/3196812752 ChatGPT实现自然语言转SQL有采用特定的算法或模型吗?
https://zhuanlan.zhihu.com/p/648860146?spm=a2c22.21852664.0.0.225e41f48Z5Swa SMP 2023 chatglm大模型比赛第一名经验总结https://lslfd0slxc.feishu.cn/base/GaJqbfQpRatYkRsf6Ioc0D7ynfb?table=tblrZ5Aq8iM6X4i3&view=vewQx72054  一些问题的答疑https://space.bilibili.com/3493270982232856/channel/collectiondetail?sid=1610943  b站视频讲解
三 详解步骤
1 数据处理 pdf转txt

image-20231010114216188

2.数据入库,提取pdf中表格的数据,变成结构化数据,入数据库

image-20231010114234353

3.回答问题

1)首先对输入问句做问句分类,也就是意图识别,看是哪类问题
前提:总结问题都有哪些类型。
问题类型识别:可以关键词,或者问法写规则

2)再次提取句子中的实体,定义关键实体:时间,公司,字段

3)不同问题类型,构建prompt,需要使用实体上文提到的实体。
#如果是计算题,大模型效果不好,需要给示例让大模型计算。如果直接提取数据定义公式,计算出结果, 再放到prompt中,拼接生成答案。

#如果是开放题,世界让大模型回答

#不能给大模型太多信息,不然它会找不到

​ 4)prompt转为sql从存储数据库中查数据

image-20231010114353221

  1. 具体详细流程

    https://mp.weixin.qq.com/s/-eA2yfcutjE-kinFb1XdGg

图片

5.代码解读

1)数据转txt 、转html

2)收集关键词,调用chatglm组合成mysql命令。

1.FinQwen 金融大模型项目-基于大模型构建金融场景智能问答系统。
比赛介绍 https://tianchi.aliyun.com/competition/entrance/532172/introduction?spm=a2c22.28136470.0.0.d5cd4a0aIgpnA4&from=search-list代码  https://github.com/Tongyi-EconML/FinQwen
可参考的RAG技巧
  1. 对用户输入的query做意图识别,问题分类,不同问题不同处理。也可以用关键词识别意图,来分类问题。

    image-20240710172445377

  2. 基于pymupdf或者pdfplumber解析pdf,最小召回单元为“行"

  3. 对问题做粗召的时候,用Elastic search。

  4. 对用户问题,基于LLM抽取关键词,用关键词做检索,提升检索的准确率。原问题直接用于检索,准确率低。

    image-20240710172401622

  5. 使用少量标注数据,得到微调后的LLM,用该LLM抽取领域内关键词更准确

    采用人工标注少量30-60个样本,微调LLM模型,基本解决了表名列名不匹配问题,能较好理
    
  6. 召回的片段,做精排,用cross-encoder模型或者TF-IDF余弦相似度

    image-20240710172653384

    image-20240711154604898

  7. 对生成的答案,做幻觉检查,对答案做校验与修正,去除冗余,修正单位,或者答案检查再尝试功能。对答案中搜索,如果答案中有:对不起,抱歉,无法 等字眼,就再retry请求答案。

    image-20240710172744162

  8. Prompt的设计很重要

    prompt设计原则:
    • 系统角色定义清晰:(你是一名XX的专家)
    • 清晰明确的任务描述  (任务原则是1 2 3 )
    • 详细的问题拆解与提示:(步骤是 1 2 3) 
    • Few-shot提示样本的多样化:(以下是一些示例,示例1 示例2 )
    • 参考内容在模型输入中的位置: (优先根据文档原文来回答每个问题)
    
  9. 使用金融领域的语料下的embedding模型,或者微调过的embedding模型对输入做embedding。(预训练embedding的语境与金融领域语境差别大)

2.AI大模型用于智能汽车检索问答
天池比赛 https://tianchi.aliyun.com/competition/entrance/532154/introduction?spm=a2c22.28136470.0.0.69114a0axVi2sw&from=search-list
代码
1:Tianchi-LLM-retrieval     https://github.com/poisonwine/Tianchi-LLM-retrieval  
2: tianchi-LLM-QA    https://github.com/aiwq2/tianchi-LLM-QA
3:Tianchi-LLM-QA   https://github.com/dawoshi/Tianchi-LLM-QA?tab=readme-ov-file

这篇关于大模型实战-FinGLM解析金融财报做RAG经验参考篇的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!


原文地址:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.chinasem.cn/article/1115577

相关文章

Redis过期删除机制与内存淘汰策略的解析指南

《Redis过期删除机制与内存淘汰策略的解析指南》在使用Redis构建缓存系统时,很多开发者只设置了EXPIRE但却忽略了背后Redis的过期删除机制与内存淘汰策略,下面小编就来和大家详细介绍一下... 目录1、简述2、Redis http://www.chinasem.cn的过期删除策略(Key Expir

Go学习记录之runtime包深入解析

《Go学习记录之runtime包深入解析》Go语言runtime包管理运行时环境,涵盖goroutine调度、内存分配、垃圾回收、类型信息等核心功能,:本文主要介绍Go学习记录之runtime包的... 目录前言:一、runtime包内容学习1、作用:① Goroutine和并发控制:② 垃圾回收:③ 栈和

Spring组件实例化扩展点之InstantiationAwareBeanPostProcessor使用场景解析

《Spring组件实例化扩展点之InstantiationAwareBeanPostProcessor使用场景解析》InstantiationAwareBeanPostProcessor是Spring... 目录一、什么是InstantiationAwareBeanPostProcessor?二、核心方法解

深入解析 Java Future 类及代码示例

《深入解析JavaFuture类及代码示例》JavaFuture是java.util.concurrent包中用于表示异步计算结果的核心接口,下面给大家介绍JavaFuture类及实例代码,感兴... 目录一、Future 类概述二、核心工作机制代码示例执行流程2. 状态机模型3. 核心方法解析行为总结:三

springboot项目中使用JOSN解析库的方法

《springboot项目中使用JOSN解析库的方法》JSON,全程是JavaScriptObjectNotation,是一种轻量级的数据交换格式,本文给大家介绍springboot项目中使用JOSN... 目录一、jsON解析简介二、Spring Boot项目中使用JSON解析1、pom.XML文件引入依

Python中文件读取操作漏洞深度解析与防护指南

《Python中文件读取操作漏洞深度解析与防护指南》在Web应用开发中,文件操作是最基础也最危险的功能之一,这篇文章将全面剖析Python环境中常见的文件读取漏洞类型,成因及防护方案,感兴趣的小伙伴可... 目录引言一、静态资源处理中的路径穿越漏洞1.1 典型漏洞场景1.2 os.path.join()的陷

C#代码实现解析WTGPS和BD数据

《C#代码实现解析WTGPS和BD数据》在现代的导航与定位应用中,准确解析GPS和北斗(BD)等卫星定位数据至关重要,本文将使用C#语言实现解析WTGPS和BD数据,需要的可以了解下... 目录一、代码结构概览1. 核心解析方法2. 位置信息解析3. 经纬度转换方法4. 日期和时间戳解析5. 辅助方法二、L

详解如何使用Python从零开始构建文本统计模型

《详解如何使用Python从零开始构建文本统计模型》在自然语言处理领域,词汇表构建是文本预处理的关键环节,本文通过Python代码实践,演示如何从原始文本中提取多尺度特征,并通过动态调整机制构建更精确... 目录一、项目背景与核心思想二、核心代码解析1. 数据加载与预处理2. 多尺度字符统计3. 统计结果可

Java Spring 中的监听器Listener详解与实战教程

《JavaSpring中的监听器Listener详解与实战教程》Spring提供了多种监听器机制,可以用于监听应用生命周期、会话生命周期和请求处理过程中的事件,:本文主要介绍JavaSprin... 目录一、监听器的作用1.1 应用生命周期管理1.2 会话管理1.3 请求处理监控二、创建监听器2.1 Ser

Apache 高级配置实战之从连接保持到日志分析的完整指南

《Apache高级配置实战之从连接保持到日志分析的完整指南》本文带你从连接保持优化开始,一路走到访问控制和日志管理,最后用AWStats来分析网站数据,对Apache配置日志分析相关知识感兴趣的朋友... 目录Apache 高级配置实战:从连接保持到日志分析的完整指南前言 一、Apache 连接保持 - 性