GPT4-Turbor 128k ? 还不够?还不够!

本篇通译自:dev.to/maximsaplin...

OpenAI 去年11月 推出的GPT-4 Turbo模型,具有128K的上下文窗口,这比此前 GPT4 的最大上下文值 32K 提升了四倍。

128K 上下文提示语,是一个什么样的概念?

这个大小可以容纳 1684 条推文或 123 个 StackOverflow 问题;

但却只有 Linux 内核中最大的源文件的 1/540 。

这里带来了一些数据对比,看看 128K 能容纳哪些内容:

完整的对比数据在这里:docs.google.com

核心观点

所以,先来阐述一下本篇文章的核心观点:

  • 目前 128K 的上下文对于许多实际处理任务来说仍然不够

  • 它勉强能够容纳单个网页的原始HTML,或者搜索一个复杂知识的文档内容。

  • RAG(检索增强生成)是一种解决方案,但输入的文本片段不足以支撑检索复杂知识库,它们可能是无序的、不相关的。

  • 不能期望 100% 的上下文窗口内容都能被有效利用,在达到 50% 的时候,LLM 的性能就开始下降。

  • 提升上下文窗口容量(10-100倍)或扩充多模态,可能是一种前进的方向。

文本的转换问题

LLM 大型语言模型只能处理文本,虽然可以通过多种方式可以将给定的文档/对象/实体转换为文本,但并没有很完美的方式,能保留所有信息的同时转换不同类型的对象。

例如:转换文档为文本可能会丢失样式、结构、媒体内容,甚至某些文本信息本身(例如超链接的URL)。

例如,这个 StackOverflow 问题:

如果我在浏览器中选择部分内容并复制/粘贴到文本编辑器,它显示如下:

可以看到:点赞计数变成了单一数字,代码块没有格式化,链接的URL也缺失了。

Markdown 格式的文本有细微差异:

将源文本(而不是纯文本)提供给 LLM ,LLM 能够理解结构化的输入,这在 XML、HTML、JSON 等源文本提示中,

而不是屏幕上看到的纯文本提供给LLM是有意义的。LLM能够理解结构化输入,在XML、HTML、JSON等格式提示中有很多例子,LLM 有更好的表现。

从 TXT 复制到源文件复制,大小就会发生变化,并不是所有源文件都想 Markdown 那样轻量。

示例 Token 数 大小差异
Google Results Page (copy/paste, txt) 975
Google Results Page (source, HTML) 246781 253x
apple.com(copy/paste, txt) 997
apple.com(source, HTML) 92091 92x
Wikipedia page (Albania, copy/paste, txt) 42492
Wikipedia page (Albania, source, wikitext) 76462 1.8x

这里,我深有感触,比如写 提示语 直接复制到 GPT 对话框中,某些纯文本的提示语,就不会保存链接格式,要先复制到 markdown 中。这个替代方案某些情景适用,但并不是所有源文件,markdown 都支持,GPT 为什么不能进一步支持源文件格式的文本呢?

比如:HTML 源文件很大,里面包含了 JS、CSS,需要更大的上下文窗口容量支持。

RAG

以下是 Google 的检索 Google 结果:

它包含了:搜索框、搜索结果、侧边栏、图块等等,像这样的页面,纯用粘贴复制功能,贴到 GPT 上下文提示语框中,128K 的大小限制是足够的,因为它会丢失样式、链接、布局、交互性等信息;

如果是贴源文件,那么 128K 的大小就不够用了。

这个时候,如果用到 RAG ------ 生成式检索增强,它能通过 API 调用,请求页面或读取文件,优化检索数据,缩小文本或标记梳理,同时保留必要信息;然后使用文本分割器,将文档转换为段落、代码块,确定每段落大小;接着进行语义索引、并存储在向量数据库;在回复用户生成的内容前,选择与用户初始请求语义相关的段落块,插入到提示中。

这里的关键就是:细化结果并保留信息,嵌入相关性片段并连接相关信息。

假设我们想读取任意网页,并不清楚其中的结构,根本无法实现提取特定信息,比如:提取都带有 search-result CSS类的<div>元素;RAG 则可以帮我们解决这一问题,是一种较好的解决方案,帮助理解页面结构,也无需太大的上下文提示语容量。

一图胜千言

我们如何构建一个通用的、上述 RAG 代理,它能爬取网页、分析结构、深入分析,再提取相关数据?

在这篇 《The Dawn of LMMs: Preliminary Explorations with GPT-4V(ision)》 探索GPT-4V(ision)能力的论文中,有一个很好的"图形用户界面导航"使用案例:

"一图胜千言"这句话本身就体现了:如何通过改变信息模态将成百上千的 token 转变为可操作的信息片段的。

上下文长度限制的"骗局"

首先我们想想为什么提示语有长度限制?

当进行推理时,输入提示双倍增加(请求中的token数量)会使CPU和内存需求增加4倍;并且会延长2倍的请求时间、4倍的完成时间。

为了让大模型在理解、操作更多的上下文时仍保证有效,就必须在更大的上下文窗口上进行训练,这也需要更多的计算资源。

个别开发者通过实证研究和测试,宣传的上下文数量限制与实际有效上下文数量限制之间的严峻差异;当越接近上下文的最大限制时,LLM 越会忘记或错过提示中的某些信息。

GPT-4 Turbo的一项测试表明,只有当上下文不超过 71k token长度,约最大值的 55% ,才有可能一直保持上下文的信息处理能力。

这项测试现象在 GPT-3.5 也被得到证明;

虽然说极值是 128K,但实际到一半的时候,就开始出现前后不连贯的情况了。。

小结

所以,本瓜认为:我们几乎可以断定,目前的 128K 上下文提示语容量还有点"虚",并且还不够!

期待通过 RAG 等方式进一步解决这个问题,并且在未来,持续提升上下文提示语的数量、容量大小、文本类型等还是非常有必要的一项工作!


我们不断发现:成长与发展是学习与工作的主旋律 ,说到这里,自荐一下我和机械工业出版社联合出版的 《程序员成长手记》 一书:全书分为3大模块、8个章节:从入门程序员到程序员自驱成长,回归纸质阅读,相信能给你一个更全局的程序员视野,提供成长帮助。京东搜"程序员成长手记"

OK,以上便是本次分享,希望各位喜欢~ 欢迎点赞、收藏、评论 🤟 我是安东尼 🤠 人气技术博主 💥 坚持千日更文 ✍ 关注我,安东尼陪你一起度过漫长编程岁月

相关推荐
我爱学Python!9 小时前
基于 LangChain 的自动化测试用例的生成与执行
人工智能·自然语言处理·langchain·自动化·llm·测试用例·大语言模型
牛右刀薛面14 小时前
launcher.py: error: the following arguments are required: --output_dir
llm·sft·llamafactory
学习前端的小z14 小时前
【AIGC】ChatGPT提示词解析:如何打造个人IP、CSDN爆款技术文案与高效教案设计
人工智能·chatgpt·aigc
wgggfiy1 天前
chatgpt学术科研prompt模板有哪些?chatgpt的学术prompt有哪些?学术gpt,学术科研
论文阅读·人工智能·gpt·chatgpt·prompt·aigc
⊙月1 天前
CMU 10423 Generative AI:lec15(Scaling Laws 大规模语言模型的扩展法则)
人工智能·aigc
杭州刘同学1 天前
chatgpt用于数据分析的弊端
chatgpt
程序员陆通1 天前
如何使用ChatGPT API及Bito插件
开发语言·chatgpt·lua
JasonLiu19191 天前
论文推荐 |【Agent】自动化Agent设计系统
人工智能·自动化·llm·agent·智能体
ulimpid1 天前
LLM | Xinference 安装使用(支持CPU、Metal、CUDA推理和分布式部署)
llm·xinference