使用Langchain Text Splitters -Analytics Vidhya拆分數據的7種方法
Langchain文本拆分器:優化LLM輸入以提高效率和準確性
我們上一篇文章介紹了Langchain的文檔加載程序。但是,LLM具有上下文窗口大小的限制(以代幣測量)。超過此限制會截斷數據,損害準確性並增加成本。解決方案?僅將相關數據發送到LLM,需要數據分割。輸入Langchain的文本拆分器。
關鍵概念:
- 文本拆分器的關鍵作用:理解為什麼有效的文本拆分對於優化LLM應用程序,平衡上下文窗口大小和成本至關重要。
- 多樣化的文本拆分技術:探索各種方法,包括角色計數,代幣計數,遞歸分裂以及針對HTML,代碼和JSON結構量身定制的技術。
- Langchain文本分離器實施:學習實用應用,包括安裝,文本分割的代碼示例以及處理多種數據格式。
- 語義分裂以增強相關性:發現句子的嵌入和余弦相似性如何創造語義上連貫的塊,從而最大程度地提高相關性。
目錄:
- 什麼是文本拆分器?
- 數據拆分方法
- 基於角色計數的分裂
- 遞歸分裂
- 基於令牌計數的分裂
- 處理HTML
- 特定於代碼的分裂
- JSON數據處理
- 語義塊
- 常見問題
什麼是文本拆分器?
文本拆分器將大文本分為較小的,可管理的塊,以改善LLM查詢相關性。它們直接在原始文本或蘭鏈文檔對像上工作。多種方法適合不同的內容類型和用例。
數據拆分方法
Langchain文本拆分器對於有效的大型文檔處理至關重要。它們可以提高性能,上下文理解,實現並行處理並促進更好的數據管理。讓我們檢查幾種方法:
先決條件:使用pip install langchain_text_splitters
安裝軟件包
基於角色計數的分裂
此方法使用指定的分離器根據字符計數分配文本。
來自langchain_community.document_loader 來自langchain_text_splitter #加載數據(用PDF路徑替換) loader = unscontralypdfloader('how-to-formulate-successful-business-strategy.pdf',mode ='single') data = loader.load() text_splitter = prinateTextSplitter(saparator =“ \ n”,chunk_size = 500,chunk_overlap = 0,is_separator_regex = false) texts = text_splitter.split_documents(數據) Len(文本)#輸出:塊數量
此示例將文本分為500個字符的塊,使用newline字符作為分離器。
遞歸分裂
這是順序使用多個分離器,直到塊低於chunk_size
。對於句子級分裂有用。
來自langchain_text_splitter recursive_splitter = recursivecharactertextsplitter(saparators = [“ \ n \ n”,“ \ n”,r“(?>> 293) #...(其餘代碼保持相似)
基於令牌計數的分裂
LLM使用令牌;通過令牌計數分裂更準確。此示例使用o200k_base
編碼(檢查github鏈接中的型號/編碼映射)。
從langchain_text_splitters導入tokentextsplitter text_splitter = tokentextsplitter(encoding_name ='o200k_base',chunk_size = 50,chunk_overlap = 0) texts = text_splitter.split_documents(數據) Len(文本)#輸出:塊數量
遞歸分裂也可以與令牌計數相結合。
對於純文本,通常優選使用字符或令牌計數進行遞歸分裂。
處理HTML
對於HTML等結構化數據,分裂應尊重結構。此示例基於HTML標頭拆分。
從langchain_text_splitters導入htmlheadertextsplitter headers_to_split_on = [(“ h1”,“ header 1”),(“ h2”,“ header 2”),(“ h3”,“ header 3”)] html_splitter = htmlheadertextsplitter(headers_to_split_on,return_each_element = true) html_header_splits = html_splitter.split_text_from_url('https://diataxis.fr/') len(html_header_splits)#輸出:塊數
HTMLSectionSplitter
允許根據其他部分進行分割。
特定於代碼的分裂
編程語言具有獨特的結構。此示例使用語法意識分配用於Python代碼。
來自langchain_text_splitter #...(Python代碼示例)... python_splitter = recursivecharactertextsplitter.from_language(language = language.python,chunk_size = 100,chunk_overlap = 0) python_docs = python_splitter.create_documents([Python_code])
JSON數據處理
嵌套的JSON對象可以在保留密鑰關係時分開。
來自langchain_text_splitters導入recursivejsonsplitter #...(JSON數據示例)... splitter = recursivejsonsplitter(max_chunk_size = 200,min_chunk_size = 20) 塊= splitter.split_text(json_data,convert_lists = true)
語義塊
該方法使用句子嵌入和余弦與語義相關的句子的相似性。
來自langchain_experiment.text_splitter導入semanticchunker 來自langchain_openai.embeddings進口openaiembeddings#需要OpenAi API鍵 #...(使用openaiembeddings和semanticchunker的代碼)...
結論
Langchain提供了各種文本分裂方法,每種方法都適用於不同的數據類型。選擇正確的方法可以優化LLM輸入,提高準確性並降低成本。
常見問題
(問答部分基本相同,並進行較小的措辭調整以清晰度和流動。)
以上是使用Langchain Text Splitters -Analytics Vidhya拆分數據的7種方法的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

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

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

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

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

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

本文回顧了AI最高的藝術生成器,討論了他們的功能,對創意項目的適用性和價值。它重點介紹了Midjourney是專業人士的最佳價值,並建議使用Dall-E 2進行高質量的可定製藝術。

Meta的Llama 3.2:多模式和移動AI的飛躍 Meta最近公佈了Llama 3.2,這是AI的重大進步,具有強大的視覺功能和針對移動設備優化的輕量級文本模型。 以成功為基礎

本文比較了諸如Chatgpt,Gemini和Claude之類的頂級AI聊天機器人,重點介紹了其獨特功能,自定義選項以及自然語言處理和可靠性的性能。

Chatgpt 4當前可用並廣泛使用,與諸如ChatGpt 3.5(例如ChatGpt 3.5)相比,在理解上下文和產生連貫的響應方面取得了重大改進。未來的發展可能包括更多個性化的間

文章討論了Grammarly,Jasper,Copy.ai,Writesonic和Rytr等AI最高的寫作助手,重點介紹了其獨特的內容創建功能。它認為Jasper在SEO優化方面表現出色,而AI工具有助於保持音調的組成

2024年見證了從簡單地使用LLM進行內容生成的轉變,轉變為了解其內部工作。 這種探索導致了AI代理的發現 - 自主系統處理任務和最少人工干預的決策。 Buildin

本文評論了Google Cloud,Amazon Polly,Microsoft Azure,IBM Watson和Discript等高級AI語音生成器,重點介紹其功能,語音質量和滿足不同需求的適用性。

Shopify首席執行官TobiLütke最近的備忘錄大膽地宣布AI對每位員工的基本期望是公司內部的重大文化轉變。 這不是短暫的趨勢。這是整合到P中的新操作範式
