长文本放提示词中还是采用 RAG?


上周我的 AI 实战营知识星球有一个同学提问:老师,请教下,现在大模型已经支持10多万输入token了,我有个项目提示词有7000来个字,是不是不用RAG也行,效果会比用RAG差?

长文本放提示词中还是采用 RAG?

这个问题非常典型,可能也会有很多朋友遇到类似的困惑,我把我的答案分享出来:

一、一些常识

1 通常来说,输入越长模型输出越慢,消耗 Tokens 越多,成本就越高

2 虽然很多国外先进模型已经支持 10W tokens,如 Gemini 2.5 Pro 已经支持 1,048,576 context,并不意味着 10W tokens 内的所有信息大模型都能够很好的理解和遵循,通常来说上下文越长,效果越差

3 现在大模型在实际处理长文本时存在“注意力稀释”和位置偏好问题,使得中间信息难以被准确关联到输出中。

详情参见:《Lost in the Middle: How Language Models Use Long Contexts》链接:https://arxiv.org/abs/2307.03172

二、放提示词还是采用RAG 的主要依据是什么?

我们可以把提示词分为指令部分和内容部分,提示词 7000 字通常应该包含了内容。

问题的关键在于:内容部分是否是模型回答必要的信息

情况1:如果整个内容都是必要的,那么放提示词更好

RAG 可能会导致部分切片没有被正确提取出来,导致模型获取不到足够的信息,导致回答错误。

哪怕采用 RAG 能保证全部提取出来,“如无必要勿增实体”,没必要新增一个环节,增加耗时和出错的风险。

情况2:如果并不是所有内容都是必须的

坏处

如果并不是所有内容都是必须的,如果都放在提示词中,会导致:

  • 提示词太长,模型性能下降

  • 模型响应时间变长

  • 消耗更多输入  tokens ,成本增加

解决办法有两个:手工选择、代码自动截取  或者 RAG

方法1:手工选择、代码自动截取

如果可以采用工程化的方式,提前手动选择或者程序自动提取关键信息,优先使用这种方式,通常比 RAG 准确率更高

方法2:采用 RAG  的方式动态提取最相关的信息

如果无法采用手动选择或代码自动截取,则可以采用 RAG  的方式提取。

需要注意的是,RAG 的召回率是否满足要求,如果你无法保证 RAG 提取的信息的完整性,还不如直接放提示词。

由于动态提取最关键的信息,上下文更短,效果更好,响应时间更短,消耗 tokens 更少,同时还降低了不相关的信息对 LLM 造成的干扰

详情参见:《Seven Failure Points When Engineering a Retrieval Augmented Generation System》链接:https://arxiv.org/abs/2401.05856

两篇论文均在  AI 实战营的 ima知识库  “AI 论文” 目录,实战营的同学可以在知识星球中通过提问的方式高效阅读。




长文本放提示词中还是采用 RAG?


如果大家感兴趣,欢迎扫描二维码,加入 AI 实战营知识星球,获得更多专业的 AI 工具推荐、AI 报告资料、AI 实战讲解等。


前沿技术大模型技术新闻资讯

🧠 大模型到底厉害在哪?看完这篇你就懂了!

2025-7-28 1:03:42

RAG技术前沿技术新闻资讯

Chonkie:开源、轻量、极速的 RAG 分块神器 🦛

2025-7-28 1:19:50

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
购物车
优惠劵
搜索