前端大模型入门(四):不同文本分割器对比和效果展示-教你如何根据场景选择合适的长文本分割方式

本文涉及的产品
实时计算 Flink 版,1000CU*H 3个月
智能开放搜索 OpenSearch行业算法版,1GB 20LCU 1个月
实时数仓Hologres,5000CU*H 100GB 3个月
简介: 本文详细介绍了五种Langchain文本分割器:`CharacterTextSplitter`、`RecursiveCharacterTextSplitter`、`TokenTextSplitter`、`MarkdownTextSplitter` 和 `LatexTextSplitter`,从原理、优缺点及适用场景等方面进行了对比分析,旨在帮助开发者选择最适合当前需求的文本分割工具,提高大模型应用的处理效率和效果。

在前端开发大模型应用的时候,处理和分割文本是常见需求,毕竟现在的大模型输入输出都有限-嵌入等也是有token限制的,合理的文本分割能显著提高模型的表现。Langchain提供了多种文本分割方式,本文将对比五种文本分割器:CharacterTextSplitterRecursiveCharacterTextSplitterTokenTextSplitterMarkdownTextSplitterLatexTextSplitter,从原理、优缺点和适用场景等多个维度进行分析,帮助你选出最合适当前续期的文本分割器。

如果你没有阅读过之前的文章,推荐看看前端大模型入门:编码(Tokenizer)和嵌入(Embedding)解析 - llm的输入,以了解本文的作用和文本切割发生时机。

准备工作

准备好nodejs20+,yarn,安装依赖"@langchain/textsplitters" 或者 "langchain/text_splitter"; 具体的代码实现,可以参考本文绑定的资源,可以在nodejs或者web页面测试。

1. CharacterTextSplitter

原理

CharacterTextSplitter通过简单地按字符进行分割。用户可以指定分割的字符数,以便将文本切分为固定长度的片段。

分词示例

这个分割器按字符分割文本,每个chunk包含30个字符,相邻chunk之间有5个字符的重叠。中间可能被截断

CharacterTextSplitter 结果:
[
  Document {
    pageContent: '人工智能(AI)是计算机科学的一个分支,致力于创造智能机器。',  
  },
  Document {
    pageContent: '智能机器。它已经在多个领域取得了重大突破,如自然语言处理、计',
  },
  Document {
    pageContent: '言处理、计算机视觉和机器学习等。\n\n近年来,深度学习技术的发',
  }
]

优缺点

  • 优点:

    • 实现简单,易于理解和使用。

    • 适用于需要快速分割的简单文本场景。

  • 缺点:

    • 无法识别文本中的语义结构,可能导致信息碎片化。

    • 对于长句子或段落,可能会导致上下文缺失。

适用场景

适用于对文本分割要求不高、上下文关系不强的情况,比如简单的日志文件处理或非结构化数据的初步处理。

2. RecursiveCharacterTextSplitter

原理

RecursiveCharacterTextSplitter在CharacterTextSplitter的基础上,使用递归算法来分割文本。首先按指定字符数分割,然后尝试合并相邻的片段,直到满足某些条件。

分词示例

这个分割器递归地分割文本,使用了多个分隔符(换行符、句号、逗号等),每个chunk最多50个字符,相邻chunk之间有10个字符的重叠。

RecursiveCharacterTextSplitter 结果:
[
  Document {
   
    pageContent: '人工智能(AI)是计算机科学的一个分支,致力于创造智能机器',
  },
  Document {
   
    pageContent: '。它已经在多个领域取得了重大突破,如自然语言处理、计算机视觉和机器学习等。',
  },
  Document {
   
    pageContent: '近年来,深度学习技术的发展使得AI的能力大幅提升',
  },
  ...
  ]

优缺点

  • 优点:

    • 保留了更多的上下文信息,尤其在长段落中。

    • 更加灵活,适合处理多样化的文本。

  • 缺点:

    • 实现复杂,可能导致性能开销增加。

    • 需要调节更多参数以适应不同文本类型。

适用场景

适用于对上下文保留有较高要求的场景,例如长篇文章或报告的处理。

3. TokenTextSplitter

原理

TokenTextSplitter基于词元(Token)进行分割,通常与语言模型的输入结构相结合。用户可以指定每个片段的最大Token数。

分词示例

这个分割器使用适合中文的cl100k_base编码,每个chunk包含20个token,相邻chunk之间有5个token的重叠。

[
  Document {
   
    pageContent: '人工智能(AI)是计算机科学的一个分支,�',
  },
  Document {
   
    pageContent: '一个分支,致力于创造智能机器。它已',
  },
  Document {
   
    pageContent: '器。它已经在多个领域取得了重大突',
  },
  Document {
   
    pageContent: '了重大突破,如自然语言处理、计算机视',
  },
  ...
  ]

优缺点

  • 优点:

    • 适合大多数自然语言处理任务,可以有效保留上下文信息。

    • 分割后的片段大小更符合模型的输入要求。

  • 缺点:

    • 对于非英语文本或特定领域文本,Token化效果可能不佳。

    • 需要根据模型的Token限制进行调整。

适用场景

适合与大语言模型配合使用的场景,特别是需要高保真度的语义解析时。

4. MarkdownTextSplitter

原理

MarkdownTextSplitter针对Markdown格式文本进行优化,按照Markdown语法规则分割文本,确保分割后的片段在结构上仍然保持有效性。

分词示例

这个分割器专门用于处理Markdown格式的文本,保留了Markdown的结构。

MarkdownTextSplitter 结果:
[
  Document {
   
    pageContent: '# 人工智能简介',
  },
  Document {
   
    pageContent: '## 发展现状\n\n人工智能技术已经在多个领域取得突破:',
  },
  Document {
   
    pageContent: '- 自然语言处理\n- 计算机视觉\n- 机器学习',
  },
  Document {
   
    pageContent: '## 未来挑战\n\n1. 隐私保护\n2. 算法偏见\n3. 就业影响',
  },
  Document {
   
    pageContent: '需要在技术创新和伦理考量之间取得平衡。',
  }
]

优缺点

  • 优点:

    • 保留了Markdown的语法结构,适合处理文档和笔记。

    • 使得分割后的片段可以直接用于渲染。

  • 缺点:

    • 只适用于Markdown格式的文本,通用性较差。

    • 对于复杂的Markdown文档,可能需要更复杂的逻辑来处理。

适用场景

适合处理Markdown文档的场景,比如技术文档、博客文章等。

5. LatexTextSplitter

原理

LatexTextSplitter专为处理LaTeX文档设计,遵循LaTeX的语法规则,确保数学公式和其他特性不会在分割时被破坏。

分词示例

LatexTextSplitter 被配置为每个 chunk 最多包含 100 个字符,相邻 chunk 之间有 20 个字符的重叠。

LatexTextSplitter 结果:
[
  Document {
   
    pageContent: '\\documentclass{article}\n  \\usepackage{CJKutf8}\n  \\usepackage{amsmath}',
  },
  Document {
   
    pageContent: '\\begin{document}\n  \\begin{CJK*}{UTF8}{gbsn}\n\n  \\section{人工智能简介}',
  },
  Document {
   
    pageContent: '\\section{人工智能简介}\n' +
      '\n' +
      '  人工智能(AI)是计算机科学的一个分支,致力于创造智能机器。\n' +
      '\n' +
      '  \\subsection{发展现状}\n' +
      '\n' +
      '  近年来,AI在多个领域取得了重大突破:',
  },

优缺点

  • 优点:

    • 专门针对LaTeX,适合处理学术论文和技术文档。

    • 能够有效保留复杂公式和排版。

  • 缺点:

    • 仅限于LaTeX格式,不具备通用性。

    • 学习曲线较陡,对于不熟悉LaTeX的用户可能不友好。

适用场景

适合处理学术论文、技术报告和需要精确排版的文档。

最佳实践推荐

在实际应用中,选择合适的文本分割器应根据具体需求进行。例如:

  • 对于简单文本,可以选择CharacterTextSplitter

  • 处理长文本或需要上下文信息的场合,推荐使用RecursiveCharacterTextSplitterTokenTextSplitter

  • 中文文章推荐用 RecursiveCharacterTextSplitter

  • 处理Markdown文档时,MarkdownTextSplitter是最佳选择,而对于LaTeX文档,则应使用LatexTextSplitter

综合考虑文本类型、上下文需求和输出质量,合理选用文本分割方式,将有助于提高模型的处理能力和效果。

相关文章
|
3月前
|
传感器 人工智能 自然语言处理
比亚迪座舱接入通义大模型,未来将联合打造更多AI智能座舱场景
比亚迪与阿里云深度合作,将通义大模型应用于智能座舱和营销服务。通过通义万相,腾势推出“AI壁纸”功能;借助通义星尘,实现“心理伴聊”等情感陪伴场景。阿里云Mobile-Agent智能体落地比亚迪座舱,支持复杂语音操作,如查询淘宝物流、订火车票等。该方案基于全视觉解决技术,具有强泛化能力,未来双方将持续拓展更多AI应用。
414 8
|
4月前
|
传感器 人工智能 算法
场景入选|TsingtaoAI基于DeepSeek的具身智能实训入选河北省垂直大模型应用场景名单
河北省网络社会组织联合会正式公布《垂直大模型应用场景征集结果名单》,TsingtaoAI自主研发的“基于DeepSeek的具身智能高校实训解决方案——从DeepSeek+机器人到通用具身智能”成功入选河北省15个标杆应用场景。这一成果标志着TsingtaoAI在具身智能与大模型融合领域的技术创新与落地能力获得政府及行业权威认可,同时也为人工智能技术与实体产业深度融合提供了可复制的示范案例。
142 0
|
4月前
|
存储 人工智能 安全
自媒体创作场景实践|通义千问3 + MCP=一切皆有可能
本文介绍了通过MCP(Model Context Protocol)结合通义千问大模型实现跨平台、跨服务的自动化任务处理方案。使用Qwen3-235B-A22B模型,配合ComfyUI生成图像,并通过小红书等社交媒体发布内容,展示了如何打破AI云服务的数据孤岛。具体实践包括接入FileSystem、ComfyUI和第三方媒体Server,完成从本地文件读取到生成图像再到发布的全流程。 方案优势在于高可扩展性和易用性,但也存在大模型智能化不足、MCP Server开发难度较大及安全风险等问题。未来需进一步提升模型能力、丰富应用场景并解决安全挑战,推动MCP在更多领域落地。
1113 27
自媒体创作场景实践|通义千问3 + MCP=一切皆有可能
|
6月前
|
人工智能 自然语言处理 机器人
创新场景丨大模型时代,重塑智能终端新体验
大模型为智能终端带来的变革是全方位的,但挑战也同样显而易见。云侧部署的大模型加端侧应用的大模型是综合平衡性能、成本、功耗、隐私、速度之下的最佳选择。
|
3月前
|
数据采集 自然语言处理 调度
优化通义大模型推理性能:企业级场景下的延迟与成本削减策略
本文基于金融、电商、医疗等领域的实战经验,深入探讨通义千问等大模型的推理优化技术栈。从计算图优化、批处理策略、量化压缩到系统架构四个维度展开,结合Python代码示例与压力测试数据,提供企业级解决方案。针对延迟敏感、高吞吐及成本敏感场景,分析性能瓶颈并提出算子融合、动态批处理、混合精度量化等方法,同时设计分布式推理架构与冷启动优化策略。通过案例展示,如电商大促场景优化,实现峰值QPS提升6.5倍、P99延迟降低53%、月度成本下降62%。文章还提供优化实施路线图,助力企业分阶段落地技术方案。
320 4
|
4月前
|
存储 消息中间件 前端开发
PHP后端与uni-app前端协同的校园圈子系统:校园社交场景的跨端开发实践
校园圈子系统校园论坛小程序采用uni-app前端框架,支持多端运行,结合PHP后端(如ThinkPHP/Laravel),实现用户认证、社交关系管理、动态发布与实时聊天功能。前端通过组件化开发和uni.request与后端交互,后端提供RESTful API处理业务逻辑并存储数据于MySQL。同时引入Redis缓存热点数据,RabbitMQ处理异步任务,优化系统性能。核心功能包括JWT身份验证、好友系统、WebSocket实时聊天及活动管理,确保高效稳定的用户体验。
256 4
PHP后端与uni-app前端协同的校园圈子系统:校园社交场景的跨端开发实践
|
3月前
|
人工智能 Cloud Native 数据可视化
微医控股与阿里云达成战略合作,双方将携手基于通义千问大模型联合打造医疗全场景智能体,共同构建医疗垂类大模型
2025年6月17日,微医控股与阿里云达成战略合作,共建医疗AI基座及医疗全场景智能体。双方将基于通义千问大模型打造医疗垂类大模型,升级微医“5+1”智能体,并在诊断、用药、健康管理等环节深化应用。微医将结合阿里云技术优势推进IDC上云,助力AI+医疗基础设施建设,共同制定行业标准并推广城市级AI数字健共体。目前,微医AI服务已连接全国1.2万家医院和30万名医生,健康管理会员超100万。
491 1
|
5月前
|
SQL 数据可视化 安全
通义灵码进阶指南:解锁智能编程的深度技巧与高阶场景实战
本文深入探讨了通义灵码从基础代码补全到全流程研发加速器的升级路径,揭秘企业级深度集成方案。内容涵盖核心能力再认知(如智能维度拆解与硬件级优化)、精准控制技术(如结构化指令模板与上下文锁定)、企业级应用(私有知识库构建与研发流水线增强)以及高阶场景实战(架构可视化重构与多模态交互)。同时提供避坑指南、效能度量体系,并展望研发智能体的未来影响,助你实现编码效率300%提升。
269 39
|
4月前
|
存储 机器学习/深度学习 人工智能
多模态RAG实战指南:完整Python代码实现AI同时理解图片、表格和文本
本文探讨了多模态RAG系统的最优实现方案,通过模态特定处理与后期融合技术,在性能、准确性和复杂度间达成平衡。系统包含文档分割、内容提取、HTML转换、语义分块及向量化存储五大模块,有效保留结构和关系信息。相比传统方法,该方案显著提升了复杂查询的检索精度(+23%),并支持灵活升级。文章还介绍了查询处理机制与优势对比,为构建高效多模态RAG系统提供了实践指导。
1214 0
多模态RAG实战指南:完整Python代码实现AI同时理解图片、表格和文本