企业年报问答RAG挑战赛冠军方案:从零到SotA,一战封神

RAG挑战赛是什么?

任务是基于企业年报构建问答系统。比赛日的流程简而言之:

  1. 解析阶段:获得100份随机企业的年报(PDF格式,每份最多1000页),限时2.5小时完成解析并构建数据库。
  2. 问答阶段:系统需在最短时间内回答100道根据模板生成的随机问题。

所有问题必须有明确答案类型,例如:

  • 是/非题;
  • 公司名称(或多选情况);
  • 管理层职位、新产品名称;
  • 数值指标:营收、门店数量等。

每个答案必须附带证据页码,确保系统真实检索而非杜撰。

冠军系统架构:

伊利亚·莱斯揭秘了他构建最佳RAG系统并在企业RAG挑战赛中夺冠的独门秘籍。他包揽了所有奖项类别和SotA排行榜的双料冠军。源代码

除了基础流程,获胜方案还包含两个路由器和LLM重排序模块

完整问答示例可查看这里

接下来将详细拆解系统构建的每一步,包括踩过的坑和发现的最佳实践。


RAG极速入门

RAG(检索增强生成)通过将大语言模型(LLM)与任意规模的知识库结合,扩展了LLM的能力边界。

基础RAG系统开发流程:

  1. 解析:将原始文档转换为文本并清洗噪声。
  2. 入库:构建并填充知识库。
  3. 检索:根据查询定位相关数据,通常采用向量数据库的语义搜索。
  4. 生成:用检索结果增强用户提问,通过LLM生成最终答案。

1. 解析:与PDF的搏斗

将PDF转为纯文本是个充满陷阱的战场:

  • 保留表格结构
  • 维护标题/列表等关键格式
  • 识别多栏文本
  • 处理图表/图像/公式/页眉页脚等

遇到的奇葩PDF问题(未解决版):

  • 90度旋转的表格 :解析后变成天书
  • 图文混合的图表:文字层和图片层打架
  • 字体编码陷阱 :肉眼可见但复制即乱码

趣味发现:部分乱码实为凯撒密码,每个单词的ASCII位移量不同。这是防抄袭还是转换事故?至今成谜。

解析器选型

测试了二十余种解析器后,IBM开发的Docling脱颖而出。但仍需魔改源码:

  • 新增JSON元数据输出
  • 支持MD/HTML格式表格转换
  • 通过GPU加速(租用4090显卡云服务器,每小时0.7美元)

最终40分钟解析15万页,速度碾压其他选手。


2. 入库:知识库的诞生

分块策略

  • 原始方案:整页作为块(约2000词)
  • 优化方案:300词分块+50词重叠(语义相关性提升30%)
  • 每个块记录元数据:ID+父页码

向量化

  • 数据库:100个独立FAISS库(每企业对应一个)
  • 索引类型:IndexFlatIP(暴力搜索保证精度)
  • 嵌入模型:text-embedding-3-large

3. 检索:寻找圣杯的旅程

混合搜索(弃用)

向量搜索+BM25关键词搜索的合体技,但效果不如预期。

重排序三选一

  1. 交叉编码器:精度高但速度慢(Jina Reranker表现佳)
  2. LLM重排序 :GPT-4o-mini打分,性价比之王
  3. 父页面检索:先定位相关块,再返回整页内容

最终方案组合拳:

  1. 向量搜索Top30块
  2. LLM重排序(权重0.7)
  3. 返回Top10完整页面

4. 生成:提示词的艺术

路由策略

  • 企业路由:用正则匹配问题中的公司名,秒级定位对应数据库
  • 问题类型路由:根据答案类型(数值/布尔/列表等)动态选择提示词模板

复合问题处理

示例问题:"苹果和微软谁的营收更高?"

  1. 拆解为:"苹果的营收?"+"微软的营收?"
  2. 分别检索后比较

思维链(CoT)的精髓

通过结构化输出强制LLM分步推理:

javascript 复制代码
class AnswerSchema(BaseModel):
    step_by_step_analysis: str  # 详细推理过程
    reasoning_summary: str      # 结论摘要
    relevant_pages: List[int]   # 证据页码
    final_answer: Union[str, int, float]  # 严格格式化答案

提示词打磨心法

  • 为每种问题类型定制指令(例如数值必须去除货币符号)
  • 包含单样本示例(示范完美回答格式)
  • 通过200+次迭代优化措辞

5. 性能与意外发现

速度

  • 全量100问仅需2分钟(利用OpenAI的TPM限速阈值)
  • 批处理25问/请求

反直觉结论

  • 表格序列化:虽酷炫但降低效果(干净表格无需额外处理)
  • 小模型潜力:Llama 8B击败80%参赛者

6. 终极秘籍

冠军系统的魔法不在某个"银弹",而在于:

  1. 深度理解问题:手动标注验证集200+问题
  2. 模块化设计:每个组件可单独调参测试
  3. 细节偏执:从PDF解析到提示词标点皆有规范

伊利亚开放了完整源码

相关推荐
没刮胡子几秒前
AI完全离线的ASR语音识别+TTS语音合成+大模型对话
人工智能·ai·语音识别·tts·asr
大数据魔法师15 分钟前
AI Agent - OpenAI从零开始完整学习教程(零基础入门+实战落地)
python
卷无止境21 分钟前
Python的魔术方法:那些藏在双下划线背后的魔法
后端·python
米码收割机22 分钟前
【Python】Django恒达科技门户网站(源码+文档)【独一无二】
数据库·python·科技
卷无止境35 分钟前
别再被"乱码"吓到了:Python文件操作的门道
后端·python
曦尧42 分钟前
BitChat:蓝牙 Mesh + Nostr 双轨加密通讯工具深度笔记
ai·自动化
STLearner1 小时前
ICML 2026 | LLM×Graph论文总结[2]【Graph4LLM,Graph4Agent,智能体记忆(Memory)
大数据·人工智能·python·深度学习·学习·机器学习·数据挖掘
神奇霸王龙10 小时前
国产音乐视频 Prompt 三段式屠夫榜:5 个国产视频模型实测对比
人工智能·ai·prompt·音视频·agent·ai编程·agi
JaydenAI10 小时前
[A2A协议与实现-06]如何将一个MAF Agent发布为A2A服务[JSON-RPC]
ai·agent·sse·a2a·maf
神奇霸王龙10 小时前
AI视频Prompt结构化实战指南:可灵/万相/豆包
人工智能·ai·prompt·aigc·音视频·ai编程