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

IBM RAG 挑战赛 挑战赛 冠军 RAG_Challenge 系统性理解

一、整体架构与核心流程

RAG_Challenge 项目是一个典型的“检索增强生成(RAG)”系统,旨在将非结构化的 PDF 年报等文档,通过一系列自动化流程,转化为可高效检索、可结构化问答的知识库,并结合大模型(LLM)实现高质量自动问答。其核心流程包括:

  1. 高质量解析(PDF → 结构化 JSON)

  2. 高效检索(混合检索)

  3. 智能路由(多模型/多API/多提示词/多公司名自动分发)

  4. LLM重排(相关性再排序)

  5. 提示词设计(Prompt Engineering)


二、各模块功能与实现要点

2.1 高质量解析

  • pdf_parsing.py

负责将原始 PDF 文档批量解析为结构化 JSON,利用 docling 库实现 OCR、表格结构识别、页码规整等。支持单进程和多进程两种模式,适合大规模数据处理。

  • tables_serialization.py

对解析出的表格进一步序列化,调用 LLM 结合上下文生成“上下文无关”的信息块,极大提升表格数据的可检索性和复用性。

  • parsed_reports_merging.py

对解析后的 JSON 进行规整与清洗,合并分块、修正特殊符号、插入表格描述,输出结构化、可读性强的文本,为后续分块和检索做准备。

2.2 高效检索

  • text_splitter.py

实现报告文本的分块(chunking),支持按页分块、表格内容插入、token 统计等,为向量化和检索提供高质量片段。

  • ingestion.py

构建两类检索索引:BM25(关键词)和向量(faiss),支持大规模批量处理,兼容多种嵌入模型(如 DashScope)。

  • retrieval.py

实现三种检索器:BM25Retriever、VectorRetriever、HybridRetriever。支持关键词、语义、混合检索,兼容多 provider,灵活适配不同场景,作者最终使用HybridRetriever混合检索

2.3 智能路由与API调用

  • api_requests.py

封装了 OpenAI、IBM、Gemini、DashScope 等主流 LLM API 的调用逻辑,统一接口,支持结构化输出、token 计费、异常重试等。APIProcessor 作为统一入口,自动路由到对应 provider。

  • api_request_parallel_processor.py

实现高效、健壮的 API 并发请求处理,支持流式读取、限流、自动重试和错误日志,适合大规模嵌入/生成任务。

2.4LLM重排与相关性优化

  • reranking.py

实现两种重排器:JinaReranker(多语言API)、LLMReranker(大模型相关性重排)。支持单条/批量重排、分数融合、多线程处理,极大提升检索结果与查询的相关性。

  • questions_processing.py

作为问答主流程“大脑”,负责问题解析、检索调度、重排、prompt 构建、LLM 调用、答案格式化等。支持单公司/多公司比较、断点续存、并行处理等复杂场景。

2.5 提示词设计与结构化输出

  • prompts.py

集中管理所有 LLM 调用的 prompt,包括 system prompt、user prompt、pydantic schema 及示例。支持多任务类型(如数值、布尔、名单、比较、重排等),保证输出风格和结构一致,便于 prompt 工程和调优。

三、系统亮点与工程价值

  1. 高质量解析链路:从 PDF 到结构化 JSON、表格序列化、文本规整,层层递进,保证数据质量和可用性。

  2. 多检索融合:支持 BM25、向量、混合检索,兼容多 provider,适应不同问答场景。

  3. 智能 API 路由:APIProcessor 统一封装多家 LLM API,便于灵活切换和扩展。

  4. LLM重排与分数融合:通过大模型对检索结果再排序,结合向量分数,显著提升最终答案的相关性和准确率。

  5. 结构化 Prompt 工程:所有 prompt、schema、示例集中管理,极大提升了系统的可维护性和 LLM 输出的结构化程度。

  6. 高并发与健壮性:支持大规模并发请求、限流、重试、流式处理,适合生产环境大批量任务。

四、典型流程梳理

  1. 数据准备:PDF → 解析(pdf_parsing)→ 规整(parsed_reports_merging)→ 表格序列化(tables_serialization)

  2. 知识库构建:分块(text_splitter)→ 索引构建(ingestion)

  3. 问答流程:问题解析(questions_processing)→ 检索(retrieval)→ LLM重排(reranking)→ prompt 构建(prompts)→ LLM 调用(api_requests)→ 答案输出

  4. 并发与批量:大规模任务通过 api_request_parallel_processor 实现高效分发与限流

五、个人理解与建议

  • 模块解耦性强,每个环节职责单一,便于独立优化和扩展。

  • Prompt 工程与 schema 设计是提升 LLM 输出质量的关键,建议持续优化和丰富示例。

  • 重排与分数融合是提升检索问答准确率的核心,值得深入研究不同融合策略的效果。

  • 高并发与健壮性为大规模生产部署提供了保障,建议在实际运行中持续监控和优化限流参数。

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

相关文章:

  • 微调大语言模型(生成任务),怎么评估它到底“变好”了?
  • dp进阶,树形背包(dfs+01)
  • 自动对焦技术助力TGV检测 半导体检测精度大突破
  • 本地部署 WordPress 博客完整指南(基于 XAMPP)
  • Bootstrap 5学习教程,从入门到精通,Bootstrap 5 侧边栏导航(Offcanvas) 语法知识点及案例(26)
  • oracle基础审计管理
  • Django实战:自定义中间件实现全链路操作日志记录
  • IPv6配置
  • MySQL主从备份
  • 16.2 Docker多阶段构建实战:LanguageMentor镜像瘦身40%,支持500+并发1.2秒响应!
  • 2025年智能营销产品发展和应用趋势
  • uniapp消息推送
  • 向量关于基的坐标向量
  • 图像分割模型中的空间信息、上下文信息、空间路径、上下文路径到底是什么?有什么作用?
  • 【C++】atoi和std::stoi
  • redisTemplate简单实现幂等性校验
  • 微信小程序进度条progress支持渐变色
  • 【vue3】打包配置webpack压缩,哈希值设置
  • CVE-2015-5531源码分析与漏洞复现(Elasticsearch目录遍历漏洞)
  • 高斯混合模型GMMK均值(十三-1)——K均值是高斯混合模型的特例
  • macOS,切换 space 失效,向右切换space(move right a space) 失效
  • [论文阅读] 人工智能 | 真实场景下 RAG 系统的工程实践指南
  • JUC:7线程的五种状态与六种状态
  • AI歌手Yuri出道:GenAI,透露着新的AI产业机遇?
  • 增加寒武纪MLU270视频转码
  • 大数据赋能智能家居:打造你贴心的“数字管家”
  • STM32安全固件升级:使用自定义 bootloader 实现SD卡固件升级,包含固件加密
  • 【stm32】HAL库开发——CubeMX配置串口通讯(中断方式)
  • virtual box 配置ubuntu 22.04网络与SSH服务
  • A模块 系统与网络安全 第三门课 网络通信原理-2