【大模型从入门到精通21】开源库框架LangChain 深入探讨文本分割1


在这里插入图片描述

深入探讨文本分割

理解文档分割

文档分割是在将数据加载到文档格式之后、存储以供进一步处理之前的一个关键步骤。其目标是创建语义上有意义的片段,以便更高效地检索和分析数据。本节概述了文档分割的原则和挑战,并强调了在片段间保持语义相关性和一致性的重要性。

理解片段大小与重叠

片段大小

指每个文档片段的长度,可以按照字符数或词数来确定。适当的片段大小取决于应用程序的具体需求和被处理文本的性质。

片段重叠

一种策略,用于保持相邻片段之间的上下文连贯性。少量的重叠可以确保在片段边界处不会丢失关键信息,从而实现更加连贯的数据检索和分析。

在LangChain中实现文本分割器

LangChain提供了一系列文本分割器,旨在适应不同的分割策略。这些分割器提供了两种主要的方法:

  1. 创建文档:接受一系列文本字符串并返回一组文档片段。
  2. 分割文档:接收一系列预加载的文档,并将其分成较小的片段。
    选择这两种方法中的哪一种取决于输入数据是原始文本还是结构化的文档。

文本分割器类型

本节介绍LangChain中可用的各种文本分割器,每种都针对特定类型的文本或文档结构进行了优化。

基于字符和词的分割器

字符文本分割器

根据字符数分割文本,适用于简单的分块场景,其中语义完整性不是首要考虑因素。

词文本分割器

根据词来分割文本,特别适用于准备给具有特定词限制的大型语言模型的数据。

递归字符文本分割器

这是一种更为复杂的分割器,它递归地基于层次结构的分隔符(例如段落、句子和单词)来分割文本。这种方法允许进行更为细致的分割,确保片段保持语义连贯性。

针对代码和Markdown的专用分割器

语言文本分割器

专为源代码设计,该分割器识别特定于编程语言的语法和分隔符,确保代码块得到适当分割。

Markdown头文本分割器

专门针对Markdown文档,根据标题级别进行分割,并将标题信息添加到片段元数据中以增强上下文。

实践指南:文档分割

在深入探讨文本分割技术之前,正确设置开发环境至关重要。这包括导入必要的库、配置API密钥以及确保所有依赖项正确安装。

设置与配置

import os
import openai
import sys
from dotenv import load_dotenv, find_dotenv

# 将路径追加以访问自定义模块
sys.path.append('../..')

# 从.env文件加载环境变量
load_dotenv(find_dotenv())

# 从环境变量设置OpenAI API密钥
openai.api_key = os.environ['OPENAI_API_KEY']

文档分割策略

文档分割能够显著影响基于文本的模型和分析的性能。选择正确的策略和参数对于维持结果片段的相关性和连贯性至关重要。

LangChain提供了两种主要类型的文本分割器:CharacterTextSplitterRecursiveCharacterTextSplitter。每种分割器都根据文本的结构和性质满足不同的需求。

字符文本分割器

此分割器根据指定的字符数或词数分割文本,可选地在片段之间设置重叠以保持上下文连续性。

from langchain.text_splitter import CharacterTextSplitter

# 定义分块大小和重叠
chunk_size = 26
chunk_overlap = 4

# 初始化字符文本分割器
character_text_splitter = CharacterTextSplitter(
    chunk_size=chunk_size,
    chunk_overlap=chunk_overlap
)

递归字符文本分割器

适用于通用文本,它递归地使用层次结构的分隔符从较大的结构如段落到较小的结构如句子和单词来进行分割。

from langchain.text_splitter import RecursiveCharacterTextSplitter

# 初始化递归字符文本分割器
recursive_character_text_splitter = RecursiveCharacterTextSplitter(
    chunk_size=chunk_size,
    chunk_overlap=chunk_overlap
)
  • 17
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

水木流年追梦

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值