RAG 中文本分塊全攻略,這個(gè)項(xiàng)目讓效率狂飆
在構(gòu)建 Retrieval-Augmented Generation(RAG)系統(tǒng)時(shí),文本分塊作為關(guān)鍵前置環(huán)節(jié),其質(zhì)量直接影響檢索精度與生成內(nèi)容的相關(guān)性。今天給大家推薦一個(gè)自己近期整理的項(xiàng)目 ——Awesome-Chunker,一站式聚合并復(fù)現(xiàn)了當(dāng)下主流的文本分塊技術(shù),從經(jīng)典方法到前沿算法應(yīng)有盡有,助你在 RAG 開(kāi)發(fā)中少走彎路!
1、項(xiàng)目核心價(jià)值
讓分塊不再是難題
在 RAG 任務(wù)的探索之路上,相信不少研究者都和我一樣,為尋找一個(gè)能系統(tǒng)提升分塊質(zhì)量的項(xiàng)目而苦惱。各種解決方案零散瑣碎,難以滿足從基礎(chǔ)到前沿的全流程需求。于是,索性親手復(fù)現(xiàn)并精心整理出 Awesome-Chunker 這個(gè)項(xiàng)目。
Awesome-Chunker 的目標(biāo)十分明確:為 RAG 研究者打造一個(gè)全面的文本分塊資源庫(kù)。不管你是想了解基礎(chǔ)的字符分塊邏輯,還是探索基于大模型的語(yǔ)義分塊技術(shù),在這里都能找到對(duì)應(yīng)的學(xué)術(shù)原理、算法解析和代碼實(shí)現(xiàn)。項(xiàng)目不僅整合了多種分塊方法,還貼心地提供了模型下載和環(huán)境配置指南,讓小伙伴們能快速上手實(shí)踐。
2、已實(shí)現(xiàn)的分塊方案
經(jīng)典分塊:穩(wěn)扎穩(wěn)打的基礎(chǔ)方案
經(jīng)典分塊方法就基于字符、文檔類型等基礎(chǔ)維度進(jìn)行分塊,簡(jiǎn)單高效且實(shí)用性強(qiáng)。
字符分割:支持手動(dòng)設(shè)定固定字符長(zhǎng)度分割,也集成了 LangChain 的 CharacterTextSplitter 和 Llama Index 的 SentenceSplitter,滿足不同場(chǎng)景下的字符級(jí)分塊需求,代碼都在 classic_chunker/character_splitting.py 中。
文檔特定分割:針對(duì) Markdown、Python、JavaScript 等不同類型文檔,有專門(mén)的分割策略,代碼位于 classic_chunker/document_specific_splitting.py。
遞歸字符文本分割:利用 LangChain 的 RecursiveCharacterTextSplitter,基于不同分隔符層級(jí)進(jìn)行遞歸分割,讓分塊更符合文本結(jié)構(gòu),代碼在 classic_chunker/recursive_character_text_splitting.py。
基于Sentence Transformer語(yǔ)義分塊
語(yǔ)義分塊是提升 RAG 效果的關(guān)鍵一環(huán),它基于語(yǔ)義相似度對(duì)文本塊進(jìn)行聚類和合并。核心代碼在 semantic_chunker/core.py,其中 sentence_order.py 保持句子順序不變,sentence_disorder.py 則通過(guò)語(yǔ)義聚類重新組織,
Dense X Retrieval:以命題為單位的檢索革新
該方法提出以 “命題” 作為新的搜索單元,顛覆了傳統(tǒng)分塊粒度。基于 Dense X Retrieval 論文的分塊方法,在 dense_x_retrieval/dense_x_retrieval.py 提供了簡(jiǎn)單運(yùn)行示例。方法的詳細(xì)說(shuō)明可查看 dense_x_retrieval/doc 相關(guān)文檔。
LumberChunker:大模型驅(qū)動(dòng)的動(dòng)態(tài)分塊
LumberChunker 借助大語(yǔ)言模型的理解能力,通過(guò)迭代提示 LLM 來(lái)識(shí)別內(nèi)容轉(zhuǎn)換點(diǎn),將文檔動(dòng)態(tài)分割為語(yǔ)義獨(dú)立的塊。示例代碼在 LumberChunker/Code 文件夾下,算法詳細(xì)解讀在 LumberChunker/doc 中。
Meta-Chunking:介于句子與段落間的邏輯紐帶
Meta-chunking 文本分塊方法是一種通過(guò)句子之間的困惑度動(dòng)態(tài)調(diào)整窗口大小并結(jié)合語(yǔ)義理解來(lái)實(shí)現(xiàn)更精準(zhǔn)文本分段的技術(shù),能有效處理不同長(zhǎng)度文本的語(yǔ)義單元?jiǎng)澐帧?/span>
完整代碼在Meta-Chunking文件夾,算法詳細(xì)解讀在Meta-Chunking/doc中。
3、邀你一起共建
文本分塊技術(shù)仍在不斷發(fā)展,Awesome-Chunker 期待更多開(kāi)發(fā)者加入共建,分享更多優(yōu)質(zhì)的分塊方法、優(yōu)化思路或使用經(jīng)驗(yàn)。如果你在 RAG 任務(wù)中遇到分塊難題,不妨試試這個(gè)項(xiàng)目,或許能找到意想不到的解決方案。
現(xiàn)在就點(diǎn)擊鏈接(https://github.com/jinbo0906/Awesome-Chunker)star 項(xiàng)目,讓我們一起在 RAG 的世界里,用更智能的分塊技術(shù),解鎖更強(qiáng)大的RAG能力!