使用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中的新操作范式
