国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

目錄
學(xué)習(xí)目標(biāo)
目錄
什麼是塊,為什麼重要?
要考慮的關(guān)鍵因素
抹布管道的分塊策略
1。固定尺寸的塊
2?;毒渥拥膲K
3。基於段落的塊
4?;墩Z義的塊
5。特定於模式的塊
6。滑動窗口塊
7。分層塊
8。內(nèi)容吸引的大塊
9。桌面塊
10?;洞鷰诺膲K
11?;秾嶓w的塊
12?;吨黝}的塊
13?;俄撁娴膲K
14?;蛾P(guān)鍵字的塊
15?;旌蠅K
針對不同方案進行優(yōu)化
大規(guī)模文檔的大塊
塊大小,檢索速度和準(zhǔn)確性之間的權(quán)衡
不同策略的用例
小文件或常見問題
長格式文件
混合文檔
多主題文檔
結(jié)論
關(guān)鍵要點
常見問題
首頁 科技週邊 人工智慧 15個構(gòu)建傑出破布系統(tǒng)的塊技術(shù)

15個構(gòu)建傑出破布系統(tǒng)的塊技術(shù)

Apr 08, 2025 am 09:13 AM

自然語言處理(NLP)已經(jīng)快速提高,特別是隨著檢索型發(fā)電(RAG)管道的出現(xiàn),該管道有效地解決了複雜,信息密集的查詢。通過將基於檢索的系統(tǒng)的精度與生成模型的創(chuàng)造力相結(jié)合,RAG管道可以增強具有高相關(guān)性和背景問題的能力,無論是通過從研究論文中提取部分,總結(jié)冗長的文檔還是基於廣泛的知識庫來解決用戶查詢的能力。但是,抹布管道中的一個主要挑戰(zhàn)是管理大型文檔,因為整個文本通常超過了諸如GPT-4之類的模型的令牌限制,因此必須有效的分解技術(shù)。

這需要文檔構(gòu)成技術(shù),該技術(shù)將文本分解為較小,更易於管理的零件,同時保留上下文和相關(guān)性,從而確保可以檢索到最有意義的信息以提高響應(yīng)準(zhǔn)確性。無論是通過固定尺寸,語義含義還是句子邊界,碎布管道的有效性都會受到塊狀策略的重大影響。在此博客中,我們將探索各種塊技術(shù),為每個塊提供代碼片段,並討論這些方法如何有助於構(gòu)建強大而有效的RAG管道。準(zhǔn)備發(fā)現(xiàn)分塊如何增強您的抹布管道?讓我們開始吧!

學(xué)習(xí)目標(biāo)

  • 清楚地了解什麼是塊狀及其在自然語言處理(NLP)和檢索功能生成(RAG)系統(tǒng)中的意義。
  • 熟悉各種構(gòu)造策略,包括其定義,優(yōu)勢,缺點和理想的實施用例。
  • 了解實踐實施:通過查看每個分塊策略的代碼示例獲取實踐知識,並演示如何在現(xiàn)實世界中實施它們。
  • 發(fā)展能夠評估不同塊方法之間權(quán)衡的能力,以及這些選擇如何影響檢索速度,準(zhǔn)確性和整體系統(tǒng)性能。
  • 為自己配備技能,以有效地將分塊策略整合到抹布管道中,從而提高文件檢索和響應(yīng)的質(zhì)量。

本文作為數(shù)據(jù)科學(xué)博客馬拉鬆的一部分發(fā)表。

目錄

  • 什麼是塊,為什麼重要?
  • 抹布管道的分塊策略
  • 針對不同方案進行優(yōu)化
  • 不同策略的用例
  • 結(jié)論
  • 常見問題

什麼是塊,為什麼重要?

在檢索型發(fā)電(RAG)管道的背景下,分塊是指將大型文檔分解為較小,易於管理的零件或塊的過程,以進行更有效的檢索和生成。由於像GPT-4這樣的大多數(shù)大型語言模型(LLMS)對他們可以立即處理的令牌數(shù)量有限制,因此分解可確保將文檔分為該部分可以處理該模型,同時保留準(zhǔn)確檢索所必需的上下文和意義。

如果沒有適當(dāng)?shù)姆纸?,則破布管道可能會錯過關(guān)鍵信息或提供不完整的,外觀的響應(yīng)。目的是創(chuàng)建大塊,在足夠大以保持含義和足夠小以適合模型的處理限制之間達到平衡。結(jié)構(gòu)良好的塊有助於確保檢索系統(tǒng)可以準(zhǔn)確識別文檔的相關(guān)部分,然後生成模型可以使用該部分來生成知情的響應(yīng)。

要考慮的關(guān)鍵因素

  • 塊的大?。?/b>每個塊的大小對於抹布管道的效率至關(guān)重要。塊可以基於令牌(例如,每塊300個令牌)或句子(例如,每塊2-5個句子)。對於像GPT-4這樣的模型,基於令牌的塊通常由於令牌限製而效果很好,但是基於句子的塊可能會提供更好的背景。權(quán)衡是在計算效率和保留含義之間:較小的塊速度更快,但可能會失去上下文,而較大的塊保持背景,但風(fēng)險超過令牌限制。
  • 上下文保存:分解對於維持文檔的語義完整性至關(guān)重要。如果塊切斷了中間句子或邏輯部分的中間,則檢索和生成過程可能會失去寶貴的背景。通過確保每個塊包含一個連貫的含義單元,例如完整的段落或完整的思想,諸如基於語義的塊或使用滑動窗口之類的技術(shù)可以幫助保護跨塊的上下文。
  • 處理不同的方式:抹布管道通常處理多模式文檔,其中可能包括文本,圖像和表。每種方式都需要不同的策略。文本可以通過句子或令牌分開,而表和圖像應(yīng)視為單獨的塊,以確保它們被正確檢索和呈現(xiàn)。特定於模式的塊確保了包含有價值信息的圖像或表格獨立保存和檢索,但與文本保持一致。

簡而言之,塊不僅在於將文本分成部分,而且是關(guān)於設(shè)計保留含義和上下文的正確塊,處理多種方式並適合模型的約束。正確的分解策略可以顯著提高檢索準(zhǔn)確性和管道產(chǎn)生的響應(yīng)質(zhì)量。

抹布管道的分塊策略

有效的塊有助於保持環(huán)境,提高檢索準(zhǔn)確性,並確保在抹布管道中的檢索和發(fā)電階段之間的平穩(wěn)相互作用。在下面,我們將介紹不同的分塊策略,解釋何時使用它們,並探索它們的優(yōu)勢和缺點 - 然後是代碼示例。

1。固定尺寸的塊

固定尺寸的塊將文檔分解成一個預(yù)定義尺寸的塊,通常是通過單詞計數(shù),令牌計數(shù)或字符計數(shù)。

何時使用:
當(dāng)您需要簡單,直接的方法時,文檔結(jié)構(gòu)並不重要。處理較小,較不復(fù)雜的文檔時,它運行良好。

優(yōu)點:

  • 易於實現(xiàn)。
  • 一致的塊大小。
  • 快速計算。

缺點:

  • 可能會破壞句子或段落,失去上下文。
  • 對於維持含義很重要的文件而言,這並不理想。
 def fixed_size_chunk(text,max_words = 100):
    單詞= text.split()
    返回[''.join(單詞[i:i max_words])在範(fàn)圍內(nèi)(0,len(words), 
    max_words)]

#應(yīng)用固定尺寸的大塊
fixe_chunks = fixed_size_chunk(sample_text)
對於fixe_chunks中的塊:
    打印(塊,'\ n --- \ n')

代碼輸出:此示例文本的輸出和以下代碼如下。最終結(jié)果將根據(jù)用例或所考慮的文件而有所不同。

 sample_text =“”
介紹

數(shù)據(jù)科學(xué)是一個跨學(xué)科領(lǐng)域,使用科學(xué)方法,過程,
 算法和系統(tǒng),以從結(jié)構(gòu)化和 
 非結(jié)構(gòu)化數(shù)據(jù)。它從統(tǒng)計學(xué),計算機科學(xué),機器學(xué)習(xí), 
 以及各種數(shù)據(jù)分析技術(shù)以發(fā)現(xiàn)模式,做出預(yù)測和 
 得出可行的見解。

數(shù)據(jù)科學(xué)可以在許多行業(yè)中應(yīng)用,包括醫(yī)療保健,金融,
 營銷和教育,它可以幫助組織做出數(shù)據(jù)驅(qū)動決策,
  優(yōu)化流程並了解客戶行為。

大數(shù)據(jù)概述

大數(shù)據(jù)是指隨著不斷增長而增長的大量,多樣的信息 
費率。它包括信息量,速度或速度 
是創(chuàng)建和收集的,數(shù)據(jù)點的多樣性或範(fàn)圍是 
覆蓋。

數(shù)據(jù)科學(xué)方法

數(shù)據(jù)科學(xué)有幾種重要方法:

1。回歸分析
2。分類
3。聚類
4。神經(jīng)網(wǎng)絡(luò)

數(shù)據(jù)科學(xué)的挑戰(zhàn)

 - 數(shù)據(jù)質(zhì)量:數(shù)據(jù)質(zhì)量差會導(dǎo)致結(jié)論不正確。
 - 數(shù)據(jù)隱私:確保敏感信息的隱私。
 - 可伸縮性:有效處理大量數(shù)據(jù)集。

結(jié)論

在許多行業(yè)中,數(shù)據(jù)科學(xué)仍然是驅(qū)動力,提供見解 
這可以導(dǎo)致更好的決策和優(yōu)化的結(jié)果。它仍然在不斷發(fā)展 
結(jié)合最新技術(shù)進步的領(lǐng)域。
”“”

15個構(gòu)建傑出破布系統(tǒng)的塊技術(shù)

2?;毒渥拥膲K

此方法根據(jù)自然句子邊界構(gòu)成文本。每個塊都包含一定數(shù)量的句子,並保留語義單元。

何時使用:
保持連貫的想法至關(guān)重要,而中間句子的分裂將導(dǎo)致失去意義。

優(yōu)點:

  • 保留句子級別的含義。
  • 更好的上下文保存。

缺點:

  • 零件尺寸不均勻,句子的長度各不相同。
  • 當(dāng)句子太長時,模型的令牌限制可能會超過令牌限制。
進出口
nlp = spacy.load(“ en_core_web_sm”)

def stone_chunk(文本):
    doc = nlp(文本)
    返回[已發(fā)送的doc.sent.text]

#應(yīng)用基於句子的塊
句子_chunks =句子_chunk(sample_text)
對於句子_chunks中的塊:
    打?。▔K,'\ n --- \ n')

代碼輸出:

15個構(gòu)建傑出破布系統(tǒng)的塊技術(shù)

3。基於段落的塊

該策略根據(jù)段落邊界將文本分配,將每個段落視為一部分。

何時使用:
最適合結(jié)構(gòu)化文檔,例如報告或文章,其中每個段落包含一個完整的想法或論點。

優(yōu)點:

  • 自然文檔細(xì)分。
  • 在段落中保留更大的上下文。

缺點:

  • 段落的長度各不相同,導(dǎo)致塊不平衡的大小。
  • 長段落可能仍然超過令牌限制。
 def段_chunk(文本):
    段落= text.split('\ n \ n')
    返回段落

#應(yīng)用基於段落的大塊
段落= chunks =段
段落中的塊:chunks:
    打印(塊,'\ n --- \ n')

代碼輸出:

15個構(gòu)建傑出破布系統(tǒng)的塊技術(shù)

4。基於語義的塊

該方法使用機器學(xué)習(xí)模型(例如變形金剛)根據(jù)語義含義將文本分成塊。

何時使用:
保留最高級別的上下文是至關(guān)重要的,例如復(fù)雜的技術(shù)文檔。

優(yōu)點:

  • 上下文有意義的塊。
  • 捕獲句子之間的語義關(guān)係。

缺點:

  • 需要高級NLP模型,這些模型在計算上昂貴。
  • 實施更複雜。
 Def Semantic_chunk(text,max_len = 200):
    doc = nlp(文本)
    塊= []
    current_chunk = []
    用於在文檔中發(fā)送的信息:
        current_chunk.append(send.text)
        如果len(''.join(current_chunk))> max_len:
            chunks.append(''.join(current_chunk))
            current_chunk = []
    如果Current_chunk:
        chunks.append(''.join(current_chunk))
    返回塊

#應(yīng)用基於語義的塊
semantic_chunks = semantic_chunk(sample_text)
對於smantic_chunks中的塊:
    打印(塊,'\ n --- \ n')

代碼輸出:

15個構(gòu)建傑出破布系統(tǒng)的塊技術(shù)

5。特定於模式的塊

該策略分別處理不同的內(nèi)容類型(文本,圖像,表格)。每種方式都根據(jù)其特徵獨立地分塊。

何時使用:
對於包含多種內(nèi)容類型的文檔,例如PDF或具有混合媒體的技術(shù)手冊。

優(yōu)點:

  • 針對混合媒體文件量身定制。
  • 允許自定義處理不同方式。

缺點:

  • 複雜的實施和管理。
  • 每種方式都需要不同的處理邏輯。
 def modality_chunk(文本,圖像=無,表=無):
    #此功能假設(shè)您已預(yù)處理文本,圖像和表格
    text_chunks =段落_chunk(text)
    返回{'text_chunks':text_chunks,'images':圖像,'表':表}

#應(yīng)用特定方式特定的塊
modality_chunks = modality_chunk(sample_text,images = ['img1.png'],表= ['table1'])
打?。╩odality_chunks)

代碼輸出:示例文本僅包含文本模式,因此只能獲得一個塊,如下所示。

15個構(gòu)建傑出破布系統(tǒng)的塊技術(shù)

6?;瑒哟翱趬K

滑動窗口塊會產(chǎn)生重疊的塊,從而使每個塊可以與下一個內(nèi)容共享其部分內(nèi)容。

何時使用:
當(dāng)您需要確保塊之間的背景連續(xù)性(例如法律或?qū)W術(shù)文件中)。

優(yōu)點:

  • 保存跨塊的環(huán)境。
  • 減少塊邊界處的信息損失。

缺點:

  • 可以通過在多個塊中重複內(nèi)容來引入冗餘。
  • 需要更多的處理。
 def sliding_window_chunk(text,chunk_size = 100,重疊= 20):
    tokens = text.split()
    塊= []
    對於我的範(fàn)圍(0,len(tokens),chunk_size-重疊):
        塊=''.join(tokens [i:i chunk_size])
        Chunks.append(塊)
    返回塊

#應(yīng)用滑動窗口塊
sliding_chunks = sliding_window_chunk(sample_text)
對於sliding_chunks中的塊:
    打?。▔K,'\ n --- \ n')

代碼輸出:圖像輸出不會捕獲重疊;還提供了手動文本輸出供參考。注意文本重疊。

15個構(gòu)建傑出破布系統(tǒng)的塊技術(shù)

 ---應(yīng)用sliding_window_chunk ---

塊1:
簡介數(shù)據(jù)科學(xué)是一個使用科學(xué)的跨學(xué)科領(lǐng)域 
提取知識和見解的方法,過程,算法和系統(tǒng) 
來自結(jié)構(gòu)化和非結(jié)構(gòu)化數(shù)據(jù)。它從統(tǒng)計學(xué),計算機中獲取 
科學(xué),機器學(xué)習(xí)和各種數(shù)據(jù)分析技術(shù) 
模式,做出預(yù)測並得出可行的見解。數(shù)據(jù)科學(xué)可以 
在許多行業(yè)中應(yīng)用,包括醫(yī)療保健,金融,市場營銷, 
和教育,它可以幫助組織做出數(shù)據(jù)驅(qū)動的決策,優(yōu)化 
流程並了解客戶行為。大數(shù)據(jù)的概述大數(shù)據(jù)參考
 以不斷增長的速度增長的大量,多樣化的信息集。 
 它涵蓋了信息量,速度
-----------------------------------------------------------------------------
塊2:
是指以不斷增長的速度增長的大量,多樣化的信息。 
它包括信息量,速度或速度 
創(chuàng)建和收集,以及涵蓋的數(shù)據(jù)點的多樣性或範(fàn)圍。 
數(shù)據(jù)科學(xué)方法數(shù)據(jù)科學(xué)中使用了幾種重要方法: 
1。回歸分析2。分類3。聚類4。神經(jīng)網(wǎng)絡(luò) 
數(shù)據(jù)科學(xué)的挑戰(zhàn) - 數(shù)據(jù)質(zhì)量:數(shù)據(jù)質(zhì)量差可以導(dǎo)致 
不正確的結(jié)論。 - 數(shù)據(jù)隱私:確保敏感的隱私 
資訊. - 可伸縮性:有效處理大量數(shù)據(jù)集。結(jié)論 
數(shù)據(jù)科學(xué)繼續(xù)是駕駛
-----------------------------------------------------------------------------
塊3:
確保敏感信息的隱私。 - 可伸縮性:處理大量 
數(shù)據(jù)集有效。結(jié)論數(shù)據(jù)科學(xué)仍然是一個驅(qū)動力 
在許多行業(yè)中,提供可以帶來更好決策和的見解 
優(yōu)化的結(jié)果。它仍然是一個不斷發(fā)展的領(lǐng)域,結(jié)合了最新的 
技術(shù)進步。
-----------------------------------------------------------------------------

7。分層塊

層次結(jié)構(gòu)分解以多個層次(例如各節(jié),小節(jié)和段落)分解文檔。

何時使用:
對於高度結(jié)構(gòu)化的文件,例如學(xué)術(shù)論文或法律文本,維持層次結(jié)構(gòu)至關(guān)重要。

優(yōu)點:

  • 保留文檔結(jié)構(gòu)。
  • 將上下文保持在多個粒度的層次。

缺點:

  • 實施更複雜。
  • 可能導(dǎo)致不平衡的部分。
 def errarchical_chunk(text,section_keywords):
    部分= []
    current_section = []
    對於文本中的行。 Splitlines():
        如果有任何(pecord_keyword中的關(guān)鍵字中的關(guān)鍵字):
            如果Current_section:
                section.append(“ \ n” .join(current_section))
            current_section = [line]
        別的:
            current_section.append(line)
    如果Current_section:
        section.append(“ \ n” .join(current_section))
    返回部分

#應(yīng)用層次結(jié)構(gòu)
section_keywords = [“簡介”,“概述”,“方法”,“結(jié)論”]
errarchical_chunks = errarchical_chunk(sample_text,section_keywords)
對於erarchical_chunks中的塊:
    打印(塊,'\ n --- \ n')
    

代碼輸出:

15個構(gòu)建傑出破布系統(tǒng)的塊技術(shù)

8。內(nèi)容吸引的大塊

此方法根據(jù)內(nèi)容特徵調(diào)整了分塊(例如,在段落級別將文本塊,表作為單獨的實體)。

何時使用:
對於具有異質(zhì)內(nèi)容的文檔,例如電子書或技術(shù)手冊,必鬚根據(jù)內(nèi)容類型來不同。

優(yōu)點:

  • 靈活並適應(yīng)不同的內(nèi)容類型。
  • 維護多種格式的文檔完整性。

缺點:

  • 需要復(fù)雜的動態(tài)塊邏輯。
  • 對於具有不同內(nèi)容結(jié)構(gòu)的文檔很難實施。
 def content_aware_chunk(文本):
    塊= []
    current_chunk = []
    對於文本中的行。 Splitlines():
        如果line.startswith((('##','###','rutiest','結(jié)論')):
            如果Current_chunk:
                chunks.append('\ n'.join(current_chunk))
            current_chunk = [line]
        別的:
            current_chunk.append(line)
    如果Current_chunk:
        chunks.append('\ n'.join(current_chunk))
    返回塊

#應(yīng)用內(nèi)容吸引的大塊
content_chunks = content_aware_chunk(sample_text)
對於content_chunks中的塊:
    打?。▔K,'\ n --- \ n')

代碼輸出:

15個構(gòu)建傑出破布系統(tǒng)的塊技術(shù)

9。桌面塊

該策略通過將其提取為獨立塊並將其轉(zhuǎn)換為Markdown或JSON等格式來處理文檔表,以更輕鬆地處理

何時使用:
對於包含表格數(shù)據(jù)的文檔,例如財務(wù)報告或技術(shù)文檔,該表包含重要信息。

優(yōu)點:

  • 保留表結(jié)構(gòu)以進行有效的下游處理。
  • 允許獨立處理表格數(shù)據(jù)。

缺點:

  • 在轉(zhuǎn)換過程中,格式可能會丟失。
  • 需要特殊處理具有復(fù)雜結(jié)構(gòu)的桌子。
導(dǎo)入大熊貓作為pd

def table_aware_chunk(表):
    return table.to_markDown()

#樣本表數(shù)據(jù)
表= pd.dataframe({
    “名稱”:[“約翰”,“愛麗絲”,“鮑勃”],
    “年齡”:[25,30,22],
    “職業(yè)”:[“工程師”,“醫(yī)生”,“藝術(shù)家”]
}))

#應(yīng)用桌面塊
table_markDown = table_aware_chunk(表)
打印(table_markdown)

代碼輸出:在此示例中,考慮了一個表;請注意,僅在代碼輸出中將表塊塊。

15個構(gòu)建傑出破布系統(tǒng)的塊技術(shù)

10?;洞鷰诺膲K

基於令牌的分塊基於固定數(shù)量的令牌而不是單詞或句子的拆分文本。它使用了NLP模型(例如,擁抱Face的變形金剛)的引物。

何時使用
對於在令牌上運行的模型,例如具有令牌限制的基於變壓器的模型(例如,GPT-3或GPT-4)。

優(yōu)點:

  • 與基於變壓器的模型搭配得很好。
  • 確保尊重令牌限制。

缺點:

  • 令牌化可能會拆分句子或斷開上下文。
  • 並非總是與自然語言邊界保持一致。
從變形金剛導(dǎo)入GPT2Tokenizer

tokenizer = gpt2tokenizer.from_pretaining(“ gpt2”)

def token_based_chunk(text,max_tokens = 200):
    tokens = tokenizer(text)[“ input_ids”]
    chunks = [tokens [i:i max_tokens]在範(fàn)圍內(nèi)(0,len(tokens),max_tokens)]
    返回[tokenizer.decode(塊),用於塊中的塊]

#應(yīng)用基於令牌的大塊
token_chunks = token_based_chunk(sample_text)
對於token_chunks中的塊:
    打?。▔K,'\ n --- \ n')

代碼輸出

15個構(gòu)建傑出破布系統(tǒng)的塊技術(shù)

11。基於實體的塊

基於實體的塊狀槓桿稱為實體識別(NER),以基於公認(rèn)的實體(例如人,組織或位置)將文本分解成塊。

何時使用:
對於特定實體很重要的文檔,即將作為上下文單位(例如簡歷,合同或法律文件)保持。

優(yōu)點:

  • 保持命名實體完好無損。
  • 可以通過專注於相關(guān)實體來提高檢索準(zhǔn)確性。

缺點:

  • 需要訓(xùn)練有素的NER模型。
  • 實體可能會重疊,導(dǎo)致複雜的塊邊界。
 DEF ENTITY_BASED_CHUNK(文本):
    doc = nlp(文本)
    實體= [doc.ent in doc.ents中的ent.text]
    返回實體

#應(yīng)用基於實體的塊
entity_chunks = entity_based_chunk(sample_text)
打印(Entity_chunks)

代碼輸出:為此,培訓(xùn)輸入的特定NER模型是理想的方法。鍵輸出是參考和代碼樣本。

15個構(gòu)建傑出破布系統(tǒng)的塊技術(shù)

12?;吨黝}的塊

該策略使用潛在的Dirichlet分配(LDA)或其他主題建模算法等技術(shù)將文檔分配為文本,以分割文本。

何時使用:
有關(guān)涵蓋多個主題的文檔,例如新聞文章,研究論文或具有不同主題的報告。

優(yōu)點:

  • 將相關(guān)信息組合在一起。
  • 幫助基於特定主題的重點檢索。

缺點:

  • 需要其他處理(主題建模)。
  • 對於簡短文檔或重疊主題可能並不精確。
來自sklearn.feature_extraction.text Import countvectorizer
來自Sklearn.Decostosion Itmot intentdirichletallatocation
導(dǎo)入numpy作為NP

def topic_based_chunk(text,num_topics = 3):
    #將文字分成零件的句子
    句子= text.split('。')
    
    #向量化句子
    vectorizer = countvectorizer()
    ston_vectors = vectorizer.fit_transform(句子)
    
    #將LDA應(yīng)用於主題建模
    lda = litentdirichletallallocation(n_components = num_topics,Random_State = 42)
    lda.fit(stone_vectors)
    
    #獲取主題字的發(fā)行
    topic_word = lda.components_
    vocabulary = vectorizer.get_feature_names_out()
    
    #確定每個主題的頂級單詞
    主題= []
    對於topic_idx,枚舉中的主題(topic_word):
        top_words_idx = topic.argsort()[: -  6:-1]
        topic_keywords = [vocabulary [i] for top_words_idx]
        TOPICS.APPEND(“ topor {}:{}”。格式(topic_idx 1,',',',join(topic_keywords))))))
    
    #生成帶有主題的大塊
    chunks_with_topics = []
    對於我,列舉(句子)中的句子:
        topic_assignments = lda.transform(vectorizer.transform([[句子])))
        分配_topic = np.argmax(topic_assignments)
        chunks_with_topics.append((topics [aissited_topic],句子))
    
    返回chunks_with_topics


#獲取基於主題的塊
topic_chunks = topic_based_chunk(sample_text,num_topics = 3)

#顯示結(jié)果
對於主題,topic_chunks中的塊:
    print(f“ {topic}:{chunk} \ n”)

代碼輸出:

15個構(gòu)建傑出破布系統(tǒng)的塊技術(shù)

13?;俄撁娴膲K

這種方法根據(jù)頁面邊界分配文檔,該文檔通常用於PDF或格式的文檔,其中每個頁面都被視為塊。

何時使用:
對於面向頁面的文檔,例如PDF或打印的報告,頁面邊界具有語義重要性。

優(yōu)點:

  • 易於使用PDF文檔實現(xiàn)。
  • 尊重頁面邊界。

缺點:

  • 頁面可能與自然文本中斷不符。
  • 頁面之間可能會丟失上下文。
 DEF PAGE_BASED_CHUNK(頁):
    ?;额A(yù)處理的頁面列表(模擬PDF頁面文本)拆分)
    返回頁面

#樣本頁
頁面= [“第1頁內(nèi)容”,“第2頁內(nèi)容”,“第3頁內(nèi)容”]

#應(yīng)用基於頁面的塊
page_chunks = page_based_chunk(頁)
page_chunks中的塊:
    打?。▔K,'\ n --- \ n')

代碼輸出:示例文本基於頁碼缺乏隔離,因此代碼輸出不超出此片段的範(fàn)圍。讀者可以使用代碼段,並在其文檔上嘗試以獲取基於頁面的塊輸出。

14?;蛾P(guān)鍵字的塊

此方法基於預(yù)定義的關(guān)鍵字或短語,這些文檔發(fā)出了信號主題轉(zhuǎn)移的文檔(例如,“簡介”,“結(jié)論”)。

何時使用:
最適合遵循清晰結(jié)構(gòu)的文檔,例如科學(xué)論文或技術(shù)規(guī)格。

優(yōu)點:

  • 根據(jù)關(guān)鍵字捕獲自然主題中斷。
  • 適用於結(jié)構(gòu)化文檔。

缺點:

  • 需要一組預(yù)定義的關(guān)鍵字。
  • 不適合非結(jié)構(gòu)化文本。
 def keyword_based_chunk(文本,關(guān)鍵字):
    塊= []
    current_chunk = []
    對於文本中的行。 Splitlines():
        如果有任何(關(guān)鍵字中的關(guān)鍵字為關(guān)鍵字):
            如果Current_chunk:
                chunks.append('\ n'.join(current_chunk))
            current_chunk = [line]
        別的:
            current_chunk.append(line)
    如果Current_chunk:
        chunks.append('\ n'.join(current_chunk))
    返回塊

#應(yīng)用基於關(guān)鍵字的塊
關(guān)鍵字= [“簡介”,“概述”,“結(jié)論”,“方法”,“挑戰(zhàn)”]
keyword_chunks = keyword_based_chunk(sample_text,關(guān)鍵字)
對於關(guān)鍵字_chunks中的塊:
    打印(塊,'\ n --- \ n')

代碼輸出:

15個構(gòu)建傑出破布系統(tǒng)的塊技術(shù)

15?;旌蠅K

混合塊結(jié)合了基於內(nèi)容類型和文檔結(jié)構(gòu)的多個塊策略。例如,文本可以通過句子塊,而表和圖像則分別處理。

何時使用:
對於包含各種內(nèi)容類型的複雜文檔,例如技術(shù)報告,業(yè)務(wù)文件或產(chǎn)品手冊。

優(yōu)點:

  • 高度適應(yīng)多種文檔結(jié)構(gòu)。
  • 允許對不同內(nèi)容類型進行顆粒狀控制。

缺點:

  • 實施更複雜。
  • 需要自定義邏輯來處理每種內(nèi)容類型。
 DEF HYBRID_CHUNK(文本):
    段落=段落_chunk(文本)
    hybrid_chunks = []
    段落中的段落:
        hybrid_chunks = stone_chunk(段落)
    返回hybrid_chunks

#應(yīng)用混合塊
hybrid_chunks = hybrid_chunk(sample_text)
對於Hybrid_chunks中的塊:
    打?。▔K,'\ n --- \ n')

代碼輸出:

15個構(gòu)建傑出破布系統(tǒng)的塊技術(shù)

獎勵:整個筆記本都可以供讀者使用代碼並輕鬆地可視化Chucking輸出(筆記本鏈接)。隨時瀏覽並嘗試這些策略來構(gòu)建下一個破布應(yīng)用程序。

接下來,我們將研究一些塊的交通,並嘗試在用例方案上了解一些想法。

針對不同方案進行優(yōu)化

在構(gòu)建檢索型發(fā)電(RAG)管道時,針對特定用例和文檔類型進行優(yōu)化塊至關(guān)重要。不同的方案根據(jù)文檔大小,內(nèi)容多樣性和檢索速度具有不同的要求。讓我們根據(jù)這些因素探討一些優(yōu)化策略。

大規(guī)模文檔的大塊

學(xué)術(shù)論文,法律文本或政府報告等大型文件通常遍布數(shù)百頁,並包含各種類型的內(nèi)容(例如,文本,圖像,表格,表格,腳註)。此類文檔的分塊策略應(yīng)在捕獲相關(guān)環(huán)境和使塊尺寸保持易於管理方面的尺寸之間取得平衡。

主要注意事項:

  • 語義凝聚力:使用諸如基於句子的,基於段落或?qū)哟谓Y(jié)構(gòu)的策略來保護各個部分的上下文並保持語義連貫性。
  • 特定於模式的處理:對於具有表,圖形或圖像的法律文檔,特定於方式和表面感知的塊策略可確保丟失重要的非文本信息。
  • 上下文保存:對於條款之間的上下文至關(guān)重要的法律文件,滑動窗口塊可以確保連續(xù)性並防止破壞重要的部分。

大規(guī)模文件的最佳策略:

  • 層次結(jié)構(gòu):將文檔分為各節(jié),小節(jié)和段落,以維護文檔結(jié)構(gòu)不同級別的上下文。
  • 滑動窗口塊:確保塊之間不會丟失文本的關(guān)鍵部分,從而保持重疊部分之間的上下文流體。

示例用例:

  • 法律文件檢索:為法律研究構(gòu)建的抹布系統(tǒng)可能優(yōu)先考慮滑動窗口或?qū)哟谓Y(jié)構(gòu)塊,以確保條款和法律先例準(zhǔn)確,凝聚力。

塊大小,檢索速度和準(zhǔn)確性之間的權(quán)衡

塊的大小直接影響檢索速度和結(jié)果的準(zhǔn)確性。較大的塊傾向於保留更多的環(huán)境,提高檢索的準(zhǔn)確性,但是由於需要更多的內(nèi)存和計算,它們可以減慢系統(tǒng)的速度。相反,較小的塊可以更快地檢索,但有失去重要上下文信息的風(fēng)險。

關(guān)鍵權(quán)衡:

  • 較大的塊(例如500-1000個令牌):保留更多上下文,從而導(dǎo)致RAG管道中更準(zhǔn)確的響應(yīng),尤其是對於復(fù)雜的問題。但是,它們可能會減慢檢索過程,並在推理過程中消耗更多的內(nèi)存。
  • 較小的塊(例如100-300令牌):更快的檢索速度和較少的內(nèi)存使用情況,但由於關(guān)鍵信息可能會在塊之間分配,因此準(zhǔn)確性可能會降低。

優(yōu)化策略:

  • 滑動窗口塊:將較小塊的優(yōu)勢與上下文保存相結(jié)合,確保重疊內(nèi)容可以提高準(zhǔn)確性而不會失去太大的速度。
  • 基於令牌的分解:在使用具有令牌限制的變壓器模型時,尤其重要。確保塊適合模型約束,同時保持效率。

示例用例:

  • 快速常見問題解答系統(tǒng):在常見問題系統(tǒng)等應(yīng)用程序中,小塊(基於令牌或句子的基於句子)的工作狀況最好,因為問題通常很短,並且速度優(yōu)先於深層語義理解。在這種情況下,可以接受降低準(zhǔn)確性的權(quán)衡,因為檢索速度是主要問題。

不同策略的用例

每種分塊策略都適合不同類型的文檔和檢索場景,因此了解何時使用特定方法可以大大改善RAG管道中的性能。

小文件或常見問題

對於較小的文檔,例如常見問題解答或客戶支持頁面,檢索速度至關(guān)重要,並且並非總是必須保持完美的上下文。諸如基於句子的塊或基於關(guān)鍵字的塊之類的策略可以很好地工作。

  • 策略:基於句子的塊
  • 用例: FAQ檢索,快速,簡短的答案是規(guī)範(fàn)和上下文不會在長時間段落中擴展。

長格式文件

對於諸如研究論文或法律文件之類的長期文檔,上下文更重要,並因語義或等級??界限而崩潰變得很重要。

  • 策略:基於分層或基於語義的塊
  • 用例:法律文件檢索,確保準(zhǔn)確檢索條款或引用至關(guān)重要。

混合文檔

在具有混合內(nèi)容類型的文檔(例如圖像,表格和文本)(例如科學(xué)報告)中,特定於模態(tài)的分解對於確保單獨處理每種類型的內(nèi)容以獲得最佳結(jié)果至關(guān)重要。

  • 策略:特定於方式或表達的塊
  • 用例:表和數(shù)字在文檔的信息中起重要作用的科學(xué)報告。

多主題文檔

涵蓋多個主題或部分(例如電子書或新聞文章)的文檔受益於基於主題的塊策略。這樣可以確保每個塊都集中在一個連貫的主題上,這對於需要檢索特定主題的用例是理想的選擇。

  • 策略:基於主題的塊
  • 用例:新聞檢索或多主題研究論文,其中每個塊圍繞著一個集中的主題,以進行精確和特定於主題的檢索。

結(jié)論

在此博客中,我們已經(jīng)深入研究了在檢索演示生成(RAG)管道中塊的關(guān)鍵作用。分塊是一個基礎(chǔ)過程,將大型文檔轉(zhuǎn)換為較小,易於管理的零件,使模型能夠有效地檢索和生成相關(guān)信息。每種分塊策略都呈現(xiàn)出自己的優(yōu)勢和缺點,因此必鬚根據(jù)特定用例選擇適當(dāng)?shù)姆椒āMㄟ^了解不同的策略如何影響檢索過程,您可以優(yōu)化抹布系統(tǒng)的性能。

選擇正確的分塊策略取決於幾個因素,包括文檔類型,上下文保存的需求以及檢索速度和準(zhǔn)確性之間的平衡。無論您是使用學(xué)術(shù)論文,法律文件還是混合文件文件,選擇適當(dāng)?shù)姆椒ǘ伎梢燥@著提高您的抹布管道的有效性。通過迭代和完善您的塊方法,您可以適應(yīng)不斷變化的文檔類型和用戶需求,以確保您的檢索系統(tǒng)保持穩(wěn)健和高效。

關(guān)鍵要點

  • 適當(dāng)?shù)姆纸鈱短岣吣ú枷到y(tǒng)的檢索準(zhǔn)確性和模型效率至關(guān)重要。
  • 根據(jù)文檔類型和復(fù)雜性選擇塊策略,以確保有效處理。
  • 選擇方法時,請考慮塊大小,檢索速度和準(zhǔn)確性之間的權(quán)衡。
  • 將策略調(diào)整為特定應(yīng)用程序,例如常見問題解答,學(xué)術(shù)論文或混合文檔。
  • 定期評估和完善分塊策略,以滿足不斷發(fā)展的文件需求和用戶期望。

常見問題

Q 1。 NLP中有什麼塊技術(shù)?

答:NLP中的分解技術(shù)涉及將大型文本分解為較小的,易於管理的部分,以提高處理效率,同時保持上下文和相關(guān)性。

2。如何為文檔選擇正確的塊策略?

答:分塊策略的選擇取決於幾個因素,包括文檔的類型,結(jié)構(gòu)和特定用例。 For example, fixed-size chunking might be suitable for smaller documents, while semantic-based chunking is better for complex texts requiring context preservation. Evaluating the pros and cons of each strategy will help determine the best approach for your specific needs.

Q 3. Can chunking strategies affect the performance of a RAG pipeline?

A. Yes, the choice of chunking strategy can significantly impact the performance of a RAG pipeline. Strategies that preserve context and semantics, such as semantic-based or sentence-based chunking, can lead to more accurate retrieval and generation results. Conversely, methods that break context (eg, fixed-size chunking) may reduce the quality of the generated responses, as relevant information may be lost between chunks.

Q4。 How do chunking techniques improve RAG pipelines?

A. Chunking techniques improve RAG pipelines by ensuring that only meaningful information is retrieved, leading to more accurate and contextually relevant responses.

Q. What is Chunking in RAG?

A. Retrieval-Augmented Generation (RAG) pipelines, chunking is the process of breaking down large documents into smaller, manageable pieces (chunks). This is necessary because large language models (LLMs) have token limits. Chunking ensures the model can handle the text while preserving context and meaning for accurate retrieval and response generation.

The media shown in this article is not owned by Analytics Vidhya and is used at the Author's discretion.

以上是15個構(gòu)建傑出破布系統(tǒng)的塊技術(shù)的詳細(xì)內(nèi)容。更多資訊請關(guān)注PHP中文網(wǎng)其他相關(guān)文章!

本網(wǎng)站聲明
本文內(nèi)容由網(wǎng)友自願投稿,版權(quán)歸原作者所有。本站不承擔(dān)相應(yīng)的法律責(zé)任。如發(fā)現(xiàn)涉嫌抄襲或侵權(quán)的內(nèi)容,請聯(lián)絡(luò)admin@php.cn

熱AI工具

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅(qū)動的應(yīng)用程序,用於創(chuàng)建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發(fā)環(huán)境

Dreamweaver CS6

Dreamweaver CS6

視覺化網(wǎng)頁開發(fā)工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

前7個筆記本替代品 前7個筆記本替代品 Jun 17, 2025 pm 04:32 PM

Google的NotebookLM是由Gemini 2.5提供動力的智能AI筆記工具,它在匯總文檔方面表現(xiàn)出色。但是,它在工具使用方面仍然有局限性,例如源蓋,雲(yún)依賴性和最近的“發(fā)現(xiàn)”功能

山姆·奧特曼(Sam Altman)說,AI已經(jīng)超越了活動的視野,但是由於Agi和ASI將是一個溫柔的奇異性,因此不用擔(dān)心 山姆·奧特曼(Sam Altman)說,AI已經(jīng)超越了活動的視野,但是由於Agi和ASI將是一個溫柔的奇異性,因此不用擔(dān)心 Jun 12, 2025 am 11:26 AM

讓我們深入研究這一點。這本部分分析AI中的開創(chuàng)性開發(fā)是我持續(xù)報導(dǎo)的《福布斯》中人工智能不斷發(fā)展的景觀的一部分,包括解開和闡明AI的重大進步和復(fù)雜性

Alphafold 3將建模能力擴展到更多的生物學(xué)靶標(biāo) Alphafold 3將建模能力擴展到更多的生物學(xué)靶標(biāo) Jun 11, 2025 am 11:31 AM

查看最新版本中的更新,您會注意到Alphafold 3將其建模功能擴展到更廣泛的分子結(jié)構(gòu),例如配體(具有特定綁定屬性的離子或分子),其他離子,以及什麼是Refe

好萊塢起訴AI公司,用於復(fù)制沒有許可證的角色 好萊塢起訴AI公司,用於復(fù)制沒有許可證的角色 Jun 14, 2025 am 11:16 AM

但是,這裡的危險不僅僅是追溯損失或皇室報銷。根據(jù)AI治理和IP律師兼Ambart Law PLLC的創(chuàng)始人Yelena Ambartsumian的說法,真正的關(guān)注是前瞻性。 “我認(rèn)為迪士尼和環(huán)球影業(yè)的MA

DIA瀏覽器發(fā)布 - 與AI知道您喜歡朋友的AI DIA瀏覽器發(fā)布 - 與AI知道您喜歡朋友的AI Jun 12, 2025 am 11:23 AM

Dia 是此前短命瀏覽器 Arc 的繼任者,The Browser 公司已將 Arc 暫停開發(fā),專注於 Dia。該瀏覽器於週三以測試版形式發(fā)布,並向所有 Arc 會員開放,其他用戶則需加入等候名單。儘管 Arc 已經(jīng)大量使用人工智能——例如集成了網(wǎng)頁摘要和鏈接預(yù)覽等功能——但 Dia 被稱為“AI 瀏覽器”,其幾乎完全聚焦於生成式 AI。 Dia 瀏覽器功能Dia 最引人注目的功能與 Windows 11 中備受爭議的 Recall 功能有相似之處。該瀏覽器將記住你之前的活動,使你可以要求 AI

您公司的AI流利性如何? 您公司的AI流利性如何? Jun 14, 2025 am 11:24 AM

使用AI與使用良好不同。許多創(chuàng)始人通過經(jīng)驗發(fā)現(xiàn)了這一點。從節(jié)省時間的實驗開始通常會創(chuàng)造更多的工作。團隊最終花費數(shù)小時修改AI生成的內(nèi)容或驗證輸出

原型:太空公司Voyager的股票在IPO上飆升 原型:太空公司Voyager的股票在IPO上飆升 Jun 14, 2025 am 11:14 AM

航天公司Voyager Technologies在周三的IPO期間籌集了近3.83億美元,股票的價格為31美元。該公司為政府和商業(yè)客戶提供一系列與空間相關(guān)的服務(wù),包括在IN上的活動

從採用到優(yōu)勢:2025年塑造企業(yè)LLM的10個趨勢 從採用到優(yōu)勢:2025年塑造企業(yè)LLM的10個趨勢 Jun 20, 2025 am 11:13 AM

以下是重塑企業(yè)AI景觀的十種引人注目的趨勢。對LLMSorganizations的財務(wù)承諾正在大大增加其在LLMS的投資,其中72%的人預(yù)計他們的支出今年會增加。目前,近40%a

See all articles