LLM中的分塊技術(shù):原理、應(yīng)用與展望
在大語(yǔ)言模型(LLM)飛速發(fā)展的當(dāng)下,分塊技術(shù)(Chunking)(RAG 中的分塊策略:從基礎(chǔ)到前沿的全面剖析)作為提升模型性能的關(guān)鍵手段,受到了廣泛關(guān)注。它在優(yōu)化信息處理、提高檢索效率、增強(qiáng)模型理解能力等方面發(fā)揮著不可或缺的作用。深入探究 LLMs 中的分塊技術(shù),對(duì)于推動(dòng)自然語(yǔ)言處理(NLP)領(lǐng)域的發(fā)展具有重要意義。
一、分塊技術(shù)的基本概念
分塊,簡(jiǎn)單來(lái)說(shuō),就是將連續(xù)的文本流分解為更小的、連貫的單元,這些單元被稱為 “塊”(chunks)。這些塊成為后續(xù)分析的基礎(chǔ),能助力信息檢索、情感分析、機(jī)器翻譯等多種任務(wù)。在構(gòu)建檢索增強(qiáng)生成(RAG)模型時(shí),分塊的有效性尤為關(guān)鍵,因?yàn)檩斎霐?shù)據(jù)的質(zhì)量和相關(guān)性會(huì)顯著影響模型的表現(xiàn)。不同的嵌入模型有不同的最大輸入長(zhǎng)度限制,傳統(tǒng)分塊方法常依據(jù)簡(jiǎn)單標(biāo)準(zhǔn),如標(biāo)記(token)、句子數(shù)量進(jìn)行劃分,而語(yǔ)義分塊則深入挖掘文本的潛在含義,旨在提取能捕捉內(nèi)容精髓的語(yǔ)義有意義片段。
二、分塊技術(shù)的重要性
- 信息獲取與質(zhì)量提升分塊能提高信息獲取的質(zhì)量。當(dāng)文本被拆分成小塊后,每一塊內(nèi)容更具針對(duì)性和意義,從而優(yōu)化搜索和信息檢索流程。例如,在文檔檢索系統(tǒng)中,用戶輸入特定查詢時(shí),分塊后的文本能更精準(zhǔn)地匹配相關(guān)內(nèi)容,返回更符合需求的結(jié)果。
- 存儲(chǔ)與成本優(yōu)化有效的分塊技術(shù)可以優(yōu)化存儲(chǔ)成本。較大的塊能降低存儲(chǔ)成本,而較小的塊雖然更精細(xì),但需要更多的存儲(chǔ)空間。在處理海量文本數(shù)據(jù)時(shí),合理選擇分塊大小可在存儲(chǔ)成本和數(shù)據(jù)處理效率之間找到平衡。
- 減少查詢延遲分塊有助于減少查詢延遲。較少的塊數(shù)量能實(shí)現(xiàn)更快的信息訪問(wèn),因?yàn)槟P驮谔幚頂?shù)據(jù)時(shí)需要檢索和分析的內(nèi)容更少,從而提高響應(yīng)速度,提升用戶體驗(yàn)。
三、分塊技術(shù)對(duì) LLMs 的影響
- 上下文理解與準(zhǔn)確性分塊有助于 LLMs 更好地理解上下文。但過(guò)多的上下文信息可能導(dǎo)致模型生成錯(cuò)誤信息,即 “幻覺(jué)” 現(xiàn)象。例如,在問(wèn)答任務(wù)中,如果分塊包含過(guò)多不相關(guān)信息,模型可能會(huì)基于這些干擾信息生成不準(zhǔn)確的答案。
- 效率與成本考量較大的塊能讓 LLMs 處理更多上下文,但這也會(huì)增加延遲和成本。在實(shí)際應(yīng)用中,需要根據(jù)具體場(chǎng)景權(quán)衡塊的大小,以確保在可接受的成本范圍內(nèi)實(shí)現(xiàn)最佳性能。
- 適應(yīng)不同問(wèn)題類型用戶提問(wèn)的類型決定了分塊策略。對(duì)于簡(jiǎn)短且具體的問(wèn)題,較小的塊可能更合適,因?yàn)樗鼈兡芨珳?zhǔn)地匹配問(wèn)題,提供針對(duì)性的答案;而對(duì)于復(fù)雜的綜合性問(wèn)題,則可能需要較大的塊來(lái)提供足夠的上下文信息。
四、分塊技術(shù)的具體方法
- 固定大小分塊
- 基于標(biāo)記(Token)的分塊在 Langchain 和 Llam Index 中,可使用 TokenTextSplitter 進(jìn)行基于標(biāo)記的分塊。其過(guò)程是先利用分詞器將文本轉(zhuǎn)換為標(biāo)記,然后根據(jù)設(shè)定的標(biāo)記大小(token_size)進(jìn)行截?cái)啵⒃O(shè)置重疊大小(overlap_size)。這種方法能較好地適應(yīng)模型對(duì)標(biāo)記的處理要求,但可能會(huì)在句子中間截?cái)啵瑢?dǎo)致一定的上下文損失。
- 基于字符的分塊該方法按固定數(shù)量的字符對(duì)文本進(jìn)行分塊,如將文檔拆分為每塊 500 字符。它簡(jiǎn)單直接,但可能會(huì)破壞單詞或句子結(jié)構(gòu),造成上下文丟失。可通過(guò) LangChain 中的 CharacterTextSplitter 嘗試這種方法,它依據(jù)特定分隔符進(jìn)行分塊。
- 基于單詞的分塊把文本分割成包含固定數(shù)量單詞的塊,例如每塊 100 個(gè)單詞。這種方式能保留單詞的完整性,但仍可能破壞句子邊界,影響上下文理解。
- 基于句子的分塊此技術(shù)依據(jù)句子邊界將文本分割成塊,保證每個(gè)塊包含完整的句子,從而更好地保留上下文。然而,這可能導(dǎo)致塊大小不一,給某些 AI 模型的處理帶來(lái)挑戰(zhàn)。實(shí)現(xiàn)基于句子的分塊有多種方法和工具,如簡(jiǎn)單的按句號(hào)和換行符分割(但這種方法無(wú)法處理所有特殊情況)、使用自然語(yǔ)言處理工具包(NLTK)、強(qiáng)大的 NLP 庫(kù) spaCy 以及 llama_index 中的 SentenceSplitter。
- 遞歸字符分塊遞歸字符分塊以分層迭代的方式,使用一組分隔符將輸入文本劃分為更小的塊。如果首次分割未得到理想大小或結(jié)構(gòu)的塊,該方法會(huì)遞歸調(diào)用自身,采用不同的分隔符或標(biāo)準(zhǔn),直到達(dá)到期望的塊大小或結(jié)構(gòu)。雖然塊大小不會(huì)完全一致,但能保持相近。在 LangChain 中,可通過(guò) RecursiveCharacterTextSplitter 來(lái)實(shí)現(xiàn)這種分塊方式。
- 語(yǔ)義分塊這是一種新的實(shí)驗(yàn)性分塊技術(shù),由 Greg Kamradt 首次提出。其核心原理是利用嵌入模型將語(yǔ)義相似的句子組合在一起。傳統(tǒng)的全局分塊大小機(jī)制可能無(wú)法考慮文檔內(nèi)各部分的語(yǔ)義關(guān)系,而語(yǔ)義分塊通過(guò)以下步驟解決這一問(wèn)題:首先將文檔拆分為句子;然后為每個(gè)句子創(chuàng)建包含其前后若干句子的組;接著為每個(gè)句子組生成嵌入,并與 “錨定” 句子關(guān)聯(lián);最后順序比較每個(gè)組之間的距離,當(dāng)主題或主題相同時(shí),相鄰句子組嵌入之間的距離較低,反之則較高,以此有效劃分不同的塊。LangChain 和 Llama Index 都支持語(yǔ)義分塊,且實(shí)現(xiàn)方式略有不同。
- 文檔特定分塊(Unstructured 庫(kù))Unstructured 庫(kù)支持多種文檔類型,包括.pdf、.docx、.doc 等。它提供自適應(yīng)分區(qū)策略,能根據(jù)文檔特征自動(dòng)選擇最合適的分區(qū)方法,還針對(duì)不同需求提供 “fast”“hi_res”“ocr_only” 等專門(mén)策略。在處理包含表格、圖像等復(fù)雜內(nèi)容的文檔時(shí),Unstructured 庫(kù)能更高效地提取信息并進(jìn)行分塊處理。
- 基于 LLM 的分塊 / LLM 輔助分塊這種前沿方法利用大語(yǔ)言模型對(duì)文本進(jìn)行分析,基于對(duì)內(nèi)容的理解來(lái)識(shí)別有意義的塊。雖然它能實(shí)現(xiàn)高度準(zhǔn)確和上下文感知的分塊,但計(jì)算成本高昂,且可能需要大量訓(xùn)練數(shù)據(jù)支持。
五、分塊技術(shù)在 RAG 中的應(yīng)用
檢索增強(qiáng)生成(RAG)是一種將信息檢索系統(tǒng)與大語(yǔ)言模型相結(jié)合的技術(shù),旨在克服 LLMs 在信息訪問(wèn)和處理方面的局限性。RAG 通過(guò) “神經(jīng)檢索器” 從大量數(shù)據(jù)源中提取相關(guān)信息,并利用這些信息生成更準(zhǔn)確、上下文更合適的響應(yīng)。
在 RAG 系統(tǒng)中,分塊起著至關(guān)重要的作用。它加快了信息檢索的速度,使檢索過(guò)程更高效,因?yàn)檩^小的塊能針對(duì)用戶查詢提供更具體、準(zhǔn)確的響應(yīng)。同時(shí),分塊有助于 LLMs 更好地理解上下文,確保模型檢索和使用正確的信息。此外,分塊還能優(yōu)化存儲(chǔ)和處理成本,根據(jù)實(shí)際需求選擇合適大小的塊,平衡存儲(chǔ)成本和模型性能。不同的查詢類型也決定了分塊策略的選擇,以滿足多樣化的用戶需求。
六、PDF 和 DOCX 文檔分塊的比較
- PDF 文檔PDF 格式能保持頁(yè)面、段落和行的一致格式,支持豐富的內(nèi)容,如圖片、表格和圖表。然而,其結(jié)構(gòu)復(fù)雜性較高,文本、圖像和表格的定位可能使處理變得復(fù)雜,部分 PDF 文件中的文本可能以圖像形式存儲(chǔ),需要光學(xué)字符識(shí)別(OCR)技術(shù)處理。在分塊應(yīng)用方面,基于行的分塊較困難,因?yàn)?PDF 中的行可能不連續(xù);而基于句子和段落的分塊,如果能正確檢測(cè)結(jié)構(gòu)元素,則更為高效。
- DOCX 文檔DOCX 作為基于 XML 的格式,更易于提取文本和樣式信息,結(jié)構(gòu)更規(guī)整、易管理。文本部分可根據(jù)標(biāo)題、段落、表格和樣式信息進(jìn)行劃分。雖然處理復(fù)雜表格或嵌入圖像可能耗時(shí),但總體復(fù)雜度低于 PDF。在分塊應(yīng)用中,基于句子或段落的分塊通常更成功,因?yàn)樘崛〗Y(jié)構(gòu)信息并相應(yīng)分割文本相對(duì)容易。
七、分塊技術(shù)的未來(lái)展望
隨著 LLMs 和 NLP 技術(shù)的不斷發(fā)展,分塊技術(shù)也將持續(xù)演進(jìn)。未來(lái),分塊技術(shù)可能會(huì)更加智能化和自適應(yīng)。結(jié)合深度學(xué)習(xí)和強(qiáng)化學(xué)習(xí)等技術(shù),分塊算法能夠根據(jù)文本的語(yǔ)義、語(yǔ)法以及用戶的使用習(xí)慣,動(dòng)態(tài)地調(diào)整分塊策略,以實(shí)現(xiàn)最優(yōu)的性能。同時(shí),在處理多模態(tài)數(shù)據(jù)(如文本、圖像、音頻結(jié)合的文檔)時(shí),分塊技術(shù)也需要進(jìn)一步拓展,以適應(yīng)復(fù)雜的數(shù)據(jù)結(jié)構(gòu)和多樣化的信息表示形式。此外,如何在資源受限的環(huán)境(如移動(dòng)設(shè)備、邊緣計(jì)算設(shè)備)中高效地實(shí)現(xiàn)分塊技術(shù),也是未來(lái)研究的重要方向。





























