最近,Prompt大神李继刚在即刻抛出一个问题:
随即,就有很多大神在群里讨论起来,大家总体的看法是Prompt会更加重要,RAG和微调可能会消失或者变成另一种形式而存在。
而讨论这个问题大家可能需要先了解模型训练的一些基本原理(以下总结来自社恐患者杨老师):
目前模型训练有几个瓶颈亟待突破:
1、模型无法进行实时增量训练,现在预训练完成之后,再微调还是RLHF都无法让模型学到新的知识。模型参数无法动态更新。
2、上下文长度限制,这个与transformer架构有很大关系,模型上下文长度,限制了token的吞吐量,即使RAG在不断推陈出新,也不能解决这一核心问题。模型需要建立更加高效的短期记忆与长期记忆的范式。
3、没必要纠结Prompt,因为Prompt的存在核心是希望模型可以按照cot的方式,约束它的输出。而如果模型真的某一天具备逻辑推理的可能性之后,就不需要专门的Prompt来约束输出,模型会自动匹配寻找局部最优解的路线。当然前提是模型真的可以实现逻辑推理。
今天,我们就先来看看RAG的工作原理,以及数据科学家 Avi Chawla 对RAG的5种切分策略。看完或许有新的认识。
什么是 RAG?
RAG(Retrieval Augmented Generation)是一种利用额外信息增强语言模型生成能力的技术。其工作流程如下:
a.切分: 将大型文档分割成较小的部分。
b.向量化: 将切分后的文本片段转换为向量表示。
c.检索: 将输入查询与向量数据库中的向量进行匹配,找到最相似的文本片段。
d.生成: 将检索到的相关信息与查询一起传递给大型语言模型 (LLM),生成最终的响应。
以下是典型的RAG应用工作流程(来自Avi Chawla):
RAG:将额外信息存储为向量,将传入的查询与这些向量匹配,并将最相似的信息与查询一起传递给大语言模型(LLM)。
由于额外的文档可能非常大,第1步还需要进行切分操作,将大文档分割成较小、易于管理的部分。
这一步至关重要,它确保文本能够适应嵌入模型的输入大小。此外,它提高了检索步骤的效率和准确性,这直接影响生成响应的质量。
以下是RAG的五种切分策略:
让我们今天来了解它们!
01 固定大小切分
最直观的切分方法是根据预定的字符数、单词数或Token数量将文本均匀分割成若干段落。
由于直接切分可能会破坏语义流畅性,建议在连续段落间保留一些重叠(如上图的蓝色部分)。
这种方法易于实现,而且所有段落大小相同,有助于简化批处理。
但它存在一个大问题:通常会在句子(或想法)中途切分,导致重要信息可能分散在不同段落中。
02 语义切分
概念很简单。
a.根据句子、段落或主题部分等有意义的单元来切分文档。
b.接着,为每个段落生成嵌入。
c.假设从第一个段落及其嵌入开始。
如果第一个段落的嵌入与第二个段落的嵌入余弦相似度较高,则两个段落组成一个切片。
这个过程持续进行,直到余弦相似度显著下降。
一旦下降,我们就开始一个新切片并重复此过程。
输出可能如下所示:
这种方式与固定大小切片不同,能够保持语言的自然流畅性,并保留完整的思想。
由于每个切片语义更为丰富,它提高了检索准确度,进而使LLM生成的响应更加连贯且相关。
一个小问题是,确定余弦相似度下降的阈值在不同文档间可能有所不同。
03 递归切分
这个方法也非常简单。
首先,基于内在的分隔符(如段落或章节)进行切分。
然后,如果某个切片的大小超过预定义的切片大小限制,就将其进一步分割。如果切片符合大小限制,则不再进行切分。
输出结果可能如下所示:
如上所示:
首先,我们定义了两个切片(紫色的两个段落)。
接下来,第1段被进一步分割成较小的切片。
与固定大小的切片不同,这种方法也保持了语言的自然流畅性,并保留了完整的思想。
不过,在实现和计算复杂性方面有一些额外的开销。
04 基于文档结构的切分
这是一种直观的方法。
利用文档内在的结构(如标题、章节或段落)定义切片边界。
这种方式能保持文档的结构完整性,确保切片与文档的逻辑部分对齐。
该方法假设文档结构清晰,但这可能并非总是如此。此外,切片长度可能不同,甚至超过模型的Token限制。可以尝试与递归切分结合使用。
输出结果可能如下所示:
05 基于LLM的切分
由于每种方法都有其优缺点,为什么不让LLM来生成切片呢?
LLM可以通过提示词生成语义隔离且有意义的切片。
显然,这种方法确保了高语义准确性,因为LLM能理解上下文和意义,远超简单的启发式方法。
唯一的问题是,这种方式的计算成本是五种方法中最高的。
此外,由于LLM通常有上下文窗口限制,需要对此加以处理。
每种技术都有各自的优劣。
我发现语义切分在许多情况下效果不错,但仍然需要测试。
最终的选择将取决于内容的性质、嵌入模型的能力和计算资源等。
我们很快会进行这些策略的实际操作演示。
Avi Chawla 对RAG的5种切分策略原文链接:
https://blog.dailydoseofds.com/p/5-chunking-strategies-for-rag?=
Last but not least
所以站在3年后,甚至更远的未来看今天,模型能力无比强大,回归到现在,我们能做什么,应该怎么调整方向,这才是一个值得思考的问题。
最后,技术无论怎么发展,或许你现在研究的,在未来会被取代甚至毫无用处,我都向你致敬,你都是推动科技进步的一份子,这个世界需要你这样的人。
关注公众号,用极客视角洞察未来!
往期精彩文章推荐: