提升RAG性能:分塊后,Chunk Enrichment的2個關(guān)鍵優(yōu)化步驟不可錯過 精華
背景
在 Retrieval Augmented Generation (RAG,檢索增強(qiáng)生成) 系統(tǒng)中,分塊(chunking)是一個基礎(chǔ)而關(guān)鍵的步驟,它將較大的文檔分割成更小的文本塊,以便后續(xù)處理和檢索。雖然分塊能夠提高文檔處理效率,但這些分塊可能仍然包含冗余信息、噪聲或缺乏上下文支持,從而影響檢索和生成的效果。為了提升檢索質(zhì)量,微軟提出了**“Chunk Enrichment Phase”**(分塊優(yōu)化階段)這一概念,通過對文本塊進(jìn)行清理和增強(qiáng),顯著提高 RAG 系統(tǒng)的性能。
本文將詳細(xì)探討 chunk enrichment(分塊優(yōu)化)如何優(yōu)化 RAG 系統(tǒng),重點介紹其兩個關(guān)鍵步驟——分塊清理(chunk cleaning)和分塊增強(qiáng)(chunk augmentation),并討論大模型在其中的作用及其成本考量。
1. 什么是 Chunk Enrichment,它為何重要?
Chunk enrichment(分塊優(yōu)化)是對分塊后的文檔塊進(jìn)行修改和增強(qiáng)的過程,主要包括兩個方面:
- 分塊清理:通過去除噪聲和冗余信息,提升文本向量的語義質(zhì)量。
- 分塊增強(qiáng):通過附加元數(shù)據(jù)(如標(biāo)題、摘要、關(guān)鍵詞等),擴(kuò)展文本塊的上下文信息,提升檢索的靈活性和準(zhǔn)確性。
在 RAG 系統(tǒng)中,分塊的目的是為了使得信息檢索更加精準(zhǔn),而chunk enrichment則通過增強(qiáng)文本塊的語義匹配度和擴(kuò)展查詢能力,進(jìn)一步提升檢索和生成的效果。例如,清理后的文本能夠提高向量數(shù)據(jù)庫在進(jìn)行相似性檢索時的精度,而豐富的元數(shù)據(jù)則可以支持更復(fù)雜的查詢,例如關(guān)鍵詞檢索、條件過濾等。
增強(qiáng)以后的數(shù)據(jù)
2. Chunk Enrichment 的兩個關(guān)鍵步驟
2.1 核心概念
為了更好地理解 chunk enrichment,首先需要明確一些關(guān)鍵概念:
- 分塊(chunking):將較大的文檔分割成更小的文本塊,每個文本塊包含一個主題或一個完整的單元。
- 向量檢索(vector search):將文本轉(zhuǎn)換為向量表示,通過比較查詢與文本塊向量之間的相似度,來檢索最相關(guān)的內(nèi)容。
- 語義匹配(semantic matching):通過向量的語義表示,而非字面匹配,來提高匹配精度。
- 元數(shù)據(jù)(metadata):附加到分塊上的附加信息,用于過濾、排序或增強(qiáng)搜索能力。
2.2 分塊清理(Chunk Cleaning):提升向量檢索性能
分塊清理的目的是提升向量的語義一致性,減少噪聲。主要步驟包括:
- 統(tǒng)一字符形式(Standardizing character forms):例如,將繁體字轉(zhuǎn)換為簡體字,確保文本的一致性。
- 去除停用詞(Removing stop words):去除無實際意義的詞(如“的”、“是”等),以減少向量中的噪聲。
- 清理標(biāo)點符號(Removing punctuation):去掉中文中的標(biāo)點符號(如“?!薄ⅰ?,”,)以消除不必要的干擾。
- 分詞與詞形標(biāo)準(zhǔn)化(Tokenization and text normalization):例如,對中文文本進(jìn)行正確分詞,并糾正拼寫錯誤或非標(biāo)準(zhǔn)字符。
- 數(shù)字和特殊字符處理(Handling numerals and special characters):將數(shù)字和特殊符號轉(zhuǎn)換為對應(yīng)的文字形式,提高語義一致性。
示例:假設(shè)我們有一段原始文本:原文:我今天吃了兩個蘋果。
- 分詞(Tokenization):我 | 今天 | 吃 | 了 | 兩 | 個 | 蘋果
- 去除停用詞(Removing stop words):我 | 吃 | 兩 | 個 | 蘋果
- 簡體字轉(zhuǎn)換(Simplifying characters):如果文本是繁體字,則轉(zhuǎn)換為簡體字。
- 去除標(biāo)點(Removing punctuation):我吃兩個蘋果。
這些清理步驟幫助去除文本中的噪聲,提升向量在檢索時的匹配精度。
為什么要同時存儲原始版本和清理后的版本?存儲原始的未清理文本非常重要,因為用戶很可能希望查看完整的原始文檔,而不希望在清理過程中做任何修改。清理后的文本塊主要用于向量嵌入和向量檢索,但當(dāng)檢索結(jié)果返回給用戶時,原始文本塊能夠確保與源文檔的一致性。
2.3 分塊增強(qiáng)(Chunk Augmentation):擴(kuò)展檢索能力
分塊增強(qiáng)通過添加元數(shù)據(jù)來擴(kuò)展檢索能力,常見的元數(shù)據(jù)包括:
- ID:為每個分塊分配唯一標(biāo)識符,用于去重和管理。
- 標(biāo)題與摘要(Title and Summary):生成簡短的標(biāo)題和詳細(xì)的摘要,幫助提高檢索效率和準(zhǔn)確性。
- 關(guān)鍵詞與實體(Keywords and Entities):提取分塊中的關(guān)鍵信息或命名實體,如人名、地名、組織名等。
- 可回答的問題(Questions the chunk can answer):為每個分塊生成可能的提問,幫助系統(tǒng)在查詢時更好地匹配相關(guān)內(nèi)容。
示例:假設(shè)我們對“我今天吃了兩個蘋果”這段文本進(jìn)行增強(qiáng):
- 標(biāo)題:今日蘋果食用記錄
- 摘要:描述了今天吃了兩個蘋果的事件。
- 關(guān)鍵詞:蘋果、吃、今天
- 問題:今天吃了什么?吃了幾個蘋果?
例如,通過為每個文本塊生成標(biāo)題和摘要,用戶可以在查詢時首先查看文本塊的簡要信息,提高查詢效率。此外,生成關(guān)鍵詞和實體可以增強(qiáng)關(guān)鍵詞檢索的準(zhǔn)確性,尤其是在面對大規(guī)模數(shù)據(jù)時,能夠幫助更好地定位到相關(guān)的文檔片段。
上圖展示了完全豐富內(nèi)容的 JSON,并描述了搜索平臺如何使用元數(shù)據(jù)。
3. 大模型在 Chunk Enrichment 中的作用
3.1 語言模型如何用于 Chunk Enrichment?
在 chunk enrichment 中,大語言模型(如 GPT 系列、Claude、BERT 等)主要用于生成和擴(kuò)展元數(shù)據(jù)。具體應(yīng)用包括:
- 生成元數(shù)據(jù):語言模型能夠自動生成標(biāo)題、摘要、關(guān)鍵詞等元數(shù)據(jù),減少人工干預(yù)。
- 語義擴(kuò)展:通過生成語義上等效的文本變體(如同義詞替換或改寫),幫助擴(kuò)展檢索范圍。
- 文本清理:語言模型能夠?qū)ξ谋具M(jìn)行自動清理,提升文本的語義一致性,避免噪聲干擾。
例如,使用大模型可以根據(jù)文本塊內(nèi)容生成一段簡潔的標(biāo)題或一份詳細(xì)的摘要,使得文本塊在檢索時更加易于識別。
3.2 Chunk Enrichment 的成本考量
盡管大模型在分塊優(yōu)化中發(fā)揮著重要作用,但其計算成本和經(jīng)濟(jì)成本不容忽視。具體而言:
- 計算成本(Computational cost):大模型進(jìn)行文本清理和元數(shù)據(jù)生成時需要消耗大量的計算資源,特別是處理大規(guī)模數(shù)據(jù)時。
- 經(jīng)濟(jì)成本(Monetary cost):大規(guī)模的 chunk enrichment 可能涉及高昂的云計算費用,尤其是在使用大模型進(jìn)行文本處理時。
因此,在實際應(yīng)用中,需要權(quán)衡成本和效益。對于一些小規(guī)?;蛑械纫?guī)模的項目,可能不需要對所有數(shù)據(jù)塊都進(jìn)行增強(qiáng),而是根據(jù)查詢需求選擇性地對分塊進(jìn)行優(yōu)化。
4. 總結(jié)
通過chunk enrichment(分塊優(yōu)化),我們可以顯著提高 RAG 系統(tǒng)的檢索和生成效果。通過清理文本和增強(qiáng)元數(shù)據(jù),chunk enrichment 不僅提升了向量檢索的精度,還增強(qiáng)了檢索過程中的靈活性。大模型在此過程中起到了重要作用,尤其是在生成元數(shù)據(jù)、語義擴(kuò)展以及文本清理方面,能夠減少人工干預(yù)并提升處理效率。然而,優(yōu)化的成本問題也需考慮,在實際應(yīng)用中需平衡性能和經(jīng)濟(jì)性。
未來,隨著大模型和向量檢索技術(shù)的進(jìn)一步發(fā)展,chunk enrichment 可能會得到更加高效和創(chuàng)新的應(yīng)用,進(jìn)一步提升 RAG 系統(tǒng)的整體性能。希望本文能為讀者提供一個清晰的框架,幫助理解如何通過分塊優(yōu)化提升 RAG 系統(tǒng)的檢索能力和生成效果。
參考鏈接
- ??https://learn.microsoft.com/en-us/azure/architecture/ai-ml/guide/rag/rag-enrichment-phase??
- ??https://jsaer.com/download/vol-7-iss-8-2020/JSAER2020-7-8-205-210.pdf??
- ??https://licor.me/post/chinese-text-cluster-hands-on??
- ??https://huggingface.co/heack/HeackMT5-ZhCleanText1ML??
本文轉(zhuǎn)載自 ??非架構(gòu)??,作者: 非架構(gòu)
