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中文網其他相關文章!

輕鬆在家運行大型語言模型:LM Studio 使用指南 近年來,軟件和硬件的進步使得在個人電腦上運行大型語言模型 (LLM) 成為可能。 LM Studio 就是一個讓這一過程變得輕鬆便捷的優秀工具。本文將深入探討如何使用 LM Studio 在本地運行 LLM,涵蓋關鍵步驟、潛在挑戰以及在本地擁有 LLM 的優勢。無論您是技術愛好者還是對最新 AI 技術感到好奇,本指南都將提供寶貴的見解和實用技巧。讓我們開始吧! 概述 了解在本地運行 LLM 的基本要求。 在您的電腦上設置 LM Studi

蓋伊·佩里(Guy Peri)是麥考密克(McCormick)的首席信息和數字官。儘管他的角色僅七個月,但Peri正在迅速促進公司數字能力的全面轉變。他的職業生涯專注於數據和分析信息

介紹 人工智能(AI)不僅要理解單詞,而且要理解情感,從而以人的觸感做出反應。 這種複雜的互動對於AI和自然語言處理的快速前進的領域至關重要。 Th

介紹 在當今以數據為中心的世界中,利用先進的AI技術對於尋求競爭優勢和提高效率的企業至關重要。 一系列強大的工具使數據科學家,分析師和開發人員都能構建,Depl

本週的AI景觀爆炸了,來自Openai,Mistral AI,Nvidia,Deepseek和Hugging Face等行業巨頭的開創性發行。 這些新型號有望提高功率,負擔能力和可訪問性,這在TR的進步中推動了

但是,該公司的Android應用不僅提供搜索功能,而且還充當AI助手,並充滿了許多安全問題,可以將其用戶暴露於數據盜用,帳戶收購和惡意攻擊中

您可以查看會議和貿易展覽中正在發生的事情。您可以詢問工程師在做什麼,或諮詢首席執行官。 您看的任何地方,事情都以驚人的速度發生變化。 工程師和非工程師 有什麼區別

模擬火箭發射的火箭發射:綜合指南 本文指導您使用強大的Python庫Rocketpy模擬高功率火箭發射。 我們將介紹從定義火箭組件到分析模擬的所有內容


熱AI工具

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

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

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

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

熱門文章

熱工具

SublimeText3 Linux新版
SublimeText3 Linux最新版

Dreamweaver Mac版
視覺化網頁開發工具

ZendStudio 13.5.1 Mac
強大的PHP整合開發環境

SecLists
SecLists是最終安全測試人員的伙伴。它是一個包含各種類型清單的集合,這些清單在安全評估過程中經常使用,而且都在一個地方。 SecLists透過方便地提供安全測試人員可能需要的所有列表,幫助提高安全測試的效率和生產力。清單類型包括使用者名稱、密碼、URL、模糊測試有效載荷、敏感資料模式、Web shell等等。測試人員只需將此儲存庫拉到新的測試機上,他就可以存取所需的每種類型的清單。

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