大模型超长上下文对 RAG 是降维打击

前言

越来越多的大模型支持了超长的上下文 (context length),例如 Google gemini 一发布就支持 2M。超长上下文的特性大大方便了文档问答应用的开发。而 RAG 作为文档问答的解决方案,是否会被超长上下文 LLM 降维打击甚至完全替代?这篇文章就超长上下文和 RAG 这两种方案做了对比实验,并总结了两种方案的优缺点。

实验文档的选择

这里选择了香港优才计划的申请指引:優秀人才入境計劃申請須知。这个 PDF 包含繁体中文文本,文档段落结构清晰,有标题、有加粗、有编号。除了封面 PDF 里没有图片,不需要使用 OCR 来提取文本。这个 PDF 包含少量的简单表格,可以观察 LLM 或 RAG 方案对表格的解析能力。

这个 PDF 问答总计 26 页,每页有 900~1400 个中文字符,换算成 GPT4 的 token,每页的 token 数目是 1000~1800,整个 PDF 总计有 27k 个 token。

注意:这个 PDF 可能已包含在大模型的训练数据里,因此可能出现大模型不依据文档而基于自身数据自行回答,导致评测结果不够严谨

评测问题的设计

基于文档专门设计了 10 个问题,方便考察某些方面的能力,如:

  • 跨分片总结。即如果使用 RAG 方案,就涉及到文档切片,问题答案在多个分片中
  • PDF 表格解析。即答案来自表格,需要 RAG 方案能正确解析表格
评测问题考察点
优才申请的条件跨分片总结
综合计分制包含哪些方面跨分片总结
资产数额的要求是多少无明确答案
哪些学校的学位可以额外加分无明确答案
需要哪些证明文件,详细列出来
35 岁可以计多少分PDF表格解析
哪些国家不可以申请优才计划跨分片内容修订
递交的申请需要多长时间审批完成无明确答案
怎样递交申请材料
语言能力需要证明文件吗跨分片内容修订

评测的模型

这次选择了三种模型(或 RAG 应用),来对比长上下文文档的 QA 问答效果:

  • kimi chat:官方宣称支持 20 万字的上下文,且 chat 页面就支持上传 pdf 进行文档问答。
  • 字节的 Coze:使用 Coze 的 bot,选择 GPT4-128k 模型,并上传 pdf 文档生存知识库做问答。上传 PDF 文档创建知识库时,分别测试了知识库切片长度为 800 token 和 2000 token 的两种方案。
  • 原生 GPT4-128k:使用我自己的 GPT4-128k api,把整个文档内容放到 prompt 里提问,测试文档不切片时的 GPT4-128k 模型问答效果。

评测结果

对 10 个问题的问答正确与否,汇总如下:

总结

kimi chat 来自国内大模型创业公司中的新星——moonshot(月之暗面),它具有 20w 字的超长上下文,在本次测试中效果可谓惊艳:

  • 正确率高。10 个问题中只有 1 个问题回答失败,但完善 prompt 后能回答成功。
  • 答案详尽、格式友好。kimi chat 输出的 Markdown 格式的答案,层次清晰、重点突出,并且答案里辅以关键数值。
  • 速度快。kimi chat 的回答速度比 Coze 中使用的 gpt4-128k 响应更快。

Coze 是字节跳动推出的机器人开发平台,有国内版(基于字节的云雀大模型)和海外版(基于 GPT4),本文测试的是海外版。基于 Coze 的知识库问答是典型的 RAG 方案,其重要一环就是文档切片(Segment)。然而,不管是单分片是 800 token 还是 2000 token,都显著暴露了 RAG 方案的缺点:

  • 跨分片总结和推理能力弱。这是基于 RAG 方案自身原理导致的。
  • 文档有序性被打破。这是基于 RAG 方案自身原理导致的。
  • 表格解析失败。这一点很诧异。虽然在业内把 PDF 解析为结构化文本,本就是一个难题。但是 Coze 对 PDF 的解析结果甚至不如我直接用 pypdf 这个开源 Python 组件解析的效果好。说明 Coze 这个产品对细节的打磨还不够好。

原生 GPT-128k 问答结果,是用来验证不用 RAG 分片+向量召回的方案,GPT4 大模型依然能输出正确的答案。因此 Coze 方案的缺点来自于 RAG 本身而非模型。

总的来说,RAG 技术方案里包含了 ”文档分片 → 向量召回 → rerank → prompt组装 → 大模型回答” 这些环节,而每个环节的成功率都会影响大模型回答的效果。

  • 文档分片。常规的分片方案,会把文档的目录层次结构打破,而 PDF 的解析本就困难,导致大模型看到的文档可能是 “支离破碎” 的。
  • 向量召回。如果文档分片不合理,则文档的向量表征质量也低,导致召回文档准确性不足。为了弥补准确性,可能又不得不召回大数目的文档片段,又导致的最终 prompt 的长度很大。
  • rerank。rerank 相对来说是一个新的技术,不知道 Coze 的知识库文档是否有 rerank。
  • 大模型回答。一旦召回和 rerank 后的文档质量不高,就打打增加了阅读理解的难度,直接影响大模型回答的质量,也容易产生幻觉

结论

大模型长上下文对 RAG 技术就是降维打击。不期望大模型都达到 200K、2M 这种级别的上下文长度,但至少应该达到 32K、64K 的长度且保证模型质量不下降。长上下文可以极大的简化 RAG 方案,使得开发文档问答应用变得更简单


Comments

Leave a Reply

Your email address will not be published. Required fields are marked *