当前位置: 首页 > news >正文

Datawhale AI夏令营 第三期 task2 稍微改进

在打造基于大语言模型(LLM)+文档检索的问答系统中,财经研报类文档是最具挑战的场景之一。它包含图文混排、精细定位需求(页码、文件名)、问题措辞高度多样化等一系列复杂性。
下面的内容是大模型辅助整理的:
本项目围绕一个目标:给定一个用户问题,从数百份PDF财经报告中找出相关信息并生成准确答案,并给出其出处(文件名和页码),通过逐步优化 chunk 策略、向量检索和 LLM 提示工程

在train数据集上的得分为0.663,测试集目前为0.29679(排名第三)

更新:加入了文档来源的大模型输出和元数据的比对,切换大模型为Qwen3-32B,目前分数:0.36493(排名第一)

在这里插入图片描述

评分标准分三部分,总分 1:

维度 权重 说明
文件名匹配度 0.25 答案中的文件名是否与参考答案一致
页码匹配度 0.25 答案中页码是否准确
答案内容相似度 0.5 使用字符级 Jaccard 相似度度量回答文本差异

🏁 初始方案:页面粒度chunk(Baseline)
做法:
每一页作为一个chunk

用FAISS构建向量索引

每次检索返回最相似的几页

问题:
粒度太大,LLM难以定位具体内容

过度信息干扰答案质量

无法定位到确切页码和文件名

📉 得分:0.002

🔧 改进一:递归Chunk + 直接向量检索
每页文本递归分块

每个chunk保留其来源元数据 {filename, page_number}

用文本嵌入直接构建向量索引

📈 得分显著提升

🧩 页码匹配精度优化
一个核心挑战是:如何让LLM生成答案时,引用准确的页码?

采取的策略:

从文档解析阶段开始,全程保留元数据:
每一段文本、每张图片都保留 {filename, page_number}

在提示中引导 LLM 输出来源信息

请用如下格式回答:
{“answer”: “…”, “filename”: “…”, “page”: …}
🔁 检索优化策略
多路召回:
双路召回:将检索向量划分为两种策略:全文语义 vs. 精准短句(如问句特征)

重排(Re-ranking)策略:
采用 RRF(Reciprocal Rank Fusion):

多路召回的结果融合排序

提高相关 chunk 的综合得分,提升命中率

🔍 LLM输出页码不准的问题
即使检索相关 chunk 的元数据正确,LLM有时也会:

忽略页码

捏造页码或文件名

输出格式错误(影响JSON解析)

解决:
构建严格提示模板,限制输出格式

增加后处理逻辑,验证输出格式合法性,出错回退使用 chunk 元数据

引入 _safe_parse() 工具,对返回结果进行强健解析

🧱 持续挑战

  1. 格式输出不稳定
    LLM容易输出错 JSON,或 hallucinate 来源信息
    强化提示模板
    后处理校验修复

  2. 问题表达方式高度自由
    用户问法与文档表达方式差距大

优化嵌入模型选择(支持中文财经语料)

其实分数还可以再高,因为现在的文件名是提取的大模型的回答,只用8B的大模型,会有很多错误,比如本来正确的名字输出为繁体,或者汉字输出为字母等,所以这个地方需要大模型+元数据同时判断,还没有用mineru或者其他的文档结构化转换工具,现在分块方法还是太朴素了,也还没用引入多模态(表格解析和图像解析)

http://www.lryc.cn/news/611449.html

相关文章:

  • 山东省天地图API申请并加载到QGIS和ArcGIS Pro中
  • 数据结构 实现单链表
  • LeetCode347.前K个高频元素(hash表+桶排序)
  • Chisel芯片开发入门系列 -- 18. CPU芯片开发和解释8(流水线架构的代码级理解)
  • 思途Mybatis学习 0805
  • LeetCode 刷题【31. 下一个排列】
  • 《Python基础》第3期:使用PyCharm编写Hello World
  • C++ 变量初始化方式总结 | 拷贝初始化 | 列表初始化 | 值初始化
  • 【C语言】动态内存管理详解
  • Kafka 的基本操作(1)
  • 国内办公安全平台新标杆:iOA一体化办公安全解决方案
  • 【基础】第八篇 Java 位运算符详解:从基础到实战应用
  • 【java】大数据insert的几种技术方案和优缺点
  • 一种基于机器学习的关键安全软件WCET分析方法概述与实际工作原理举例
  • 多传感器融合
  • 机器人权利:真实还是虚幻,机器人权利研究如何可能,道德权利与法律权利
  • nodejs 编程基础01-NPM包管理
  • 《计算机“十万个为什么”》之 面向对象 vs 面向过程:编程世界的积木与流水线
  • 【android bluetooth 协议分析 01】【HCI 层介绍 30】【hci_event和le_meta_event如何上报到btu层】
  • 零基础人工智能学习规划之路
  • 电路基础相关知识
  • HBM Basic(VCU128)
  • 翻译的本质:人工翻译vs机器翻译的核心差异与互补性
  • NumPy字符串与数学函数全解析:从基础到实战应用
  • 3. 为什么 0.1 + 0.2 != 0.3
  • ubuntu自动重启BUG排查指南
  • 前端遇到页面卡顿问题,如何排查和解决?
  • C语言:20250805学习(文件预处理)
  • 集成学习与随机森林:从原理到实践指南
  • 高通平台Wi-Fi Display学习-- 调试 Wi-Fi Display 问题