为什么分块在RAG技术中很重要?但又很没有存在感? 原创
RAG技术作为目前大模型应用比较火的一个领域,怎么做好一个RAG系统一直是很多人和企业都在思考的一个问题;但RAG并不是一个独立的技术,而是一个技术的集合体,涉及到多个不同的技术;比如说向量数据库,embedding,语义分析,搜索技术等等。
而在RAG技术中有一个不被大家所重视的一点就是——分块(chunk);什么是分块?
举个例子,西游记作为我国的四大名著之一,其有八十多万字;如果说把西游记作为一个整体向量化之后存储到向量数据库中,我们要想从中找到孙悟空三大白骨精的内容,就需要把整个西游记都过滤一遍才能找到需要的章节。
而且由于技术方面的原因,向量不擅长处理长文本数据,一般情况下都是把长文本按照某种方式切割成多个短的段落;然后一部分一部分的存储到向量数据库中。
而这一部分一部分的数据就是分块,每一块都是整体的一部分。
分块将大块文本切分成多个小块文本和段落,这使得文本更容易管理和处理;其使得更容易进行embedding(嵌入),并显著提升从向量数据库中召回的相关性与准确性。
文本分块——chunk
在RAG技术中,存在一个很大的难点就是怎么快速与高效以及准确地检索到用户所需要的内容;召回效率与质量是RAG系统的核心指标,如果一个RAG系统的召回效率和质量都很差,那么这个RAG系统不论使用什么高大上的技术都一文不值。
那应该怎么解决RAG的召回质量问题呢?
虽然为了提升RAG的召回质量,在RAG的每个环节都想方设法的优化;而分块作为RAG其中的一个重要步骤,当然也不能例外。
往小了说,分块是方便我们对大文本和长文本进行处理,往大了说分块能直接影响到RAG的召回质量和效率。
在实际操作中,分块的好处是多方面的。首先,它能够提高模型处理的效率,因为较小的文本段落更容易进行嵌入和检索。
其次,分块后的文本能够更精确地匹配用户查询,从而提供更相关的搜索结果。这对于需要高精度信息检索和内容生成的应用程序尤为重要。
通过优化内容的分块和嵌入策略,我们可以最大化LLM在各种应用场景中的性能。分块技术不仅提高了内容召回的准确性,还提升了整体系统的响应速度和用户体验。
因此,在构建和优化基于LLM的应用程序时,理解和应用分块技术是不可或缺的步骤。
当然,根据不同的应用场景,分块也有多种不同的方式,比如固定分块;句子分割,语义分块等多种分块方式。但不论哪种分块方式,目的都是为了让数据查询的速度更快,效率更高,结果更准确。
为什么分块会很重要?
Pinecone公司的Roie Schwaber-Cohen指出:“开始思考如何将我的内容分成更小的块的原因是,这样当我检索时,它实际上能够命中正确的内容。你将用户的查询嵌入,然后将其与内容的嵌入进行比较。
如果你嵌入的内容大小与用户查询的大小差异很大,你就更可能得到较低的相似度得分。”这句话强调了分块的关键作用:通过合理的分块,可以确保用户查询与内容之间的相似度得分更高,从而提高搜索结果的相关性和准确性。
本文转载自公众号AI探索时代 作者:DFires