当前位置: 首页 > news >正文

大模型Rag - 文本分块

一.文本分块

在构建智能问答系统或知识库的过程中,文本分块(Text Splitting)是一项基础但极为关键的任务。它不仅决定了后续 embedding 生成的质量,也直接影响向量检索系统的准确率与效率。本文将系统性地介绍文本分块的原理、动因、策略及工具实践,帮助你构建更健壮的语义检索系统。

二.为什么要进行文本分块?

原因:

  • 语义多样性问题:一篇长文档可能同时包含多个主题或语义信息,直接对其整体进行 embedding 会导致语义混淆,从而降低检索精度。

  • 文本分块技术详解:打造高效的知识库构建流程

  • 模型输入限制:大多数 embedding 模型对输入文本长度有限制,超出部分会被截断,导致语义信息缺失。

因此,合理地将文本拆分成较小、语义完整的块是提高系统效果的关键。

三.分块的基本原则

  • 每个块应包含完整且语义相关的上下文信息。
  • 分块粒度应适中,太小会丢失上下文,太大又可能包含无关信息。

完美的自动化分块有一定难度,因此需要结合策略进行尝试与优化。

四.分块策略一:递归文本分块(Recursive Text Splitting)

核心思想

通过一组由粗到细的分隔符(如段落、句子、标点符号)依次进行文本切割,确保每一块都不超过设定的长度限制。

具体流程:

  1. 设定块大小(如 200 tokens),确保不超过 embedding 模型的输入长度。
  2. 定义分隔符优先级:如段落 > 句子 > 标点 > 字符。
  3. 依次使用分隔符递归切割文本,直到每块长度小于设定值。

五.分块策略二:基于语义的分块(Semantic Splitting)

embedding 向量计算句子间的语义相似度,以此作为分割依据。
实施流程:

  1. 将文档切分为句子。
  2. 设置滑动窗口长度(如3句)。
  3. 计算相邻窗口的 embedding 相似度。
  4. 根据设定的相似度阈值判断是否分割。

相关文章:

  • libevent的bufferevent测试用例和使用方法(附带源码)
  • 腾讯wxg企业微信 后端开发一面
  • 基于Ubuntu2504部署OpenStack E版
  • uv:重新定义Python开发效率的下一代工具链
  • GNU,GDB,GCC,G++是什么?与其他编译器又有什么关系?
  • Android TTY设备调用流程和简单分析
  • Vue3 本地打包启动白屏解决思路!! !
  • Springboot+vue3开发项目——热点事件
  • YOLO拓展-NMS算法
  • Dijkstra 算法
  • 用usb网卡 虚拟机无法开到全双工的解决办法
  • 时态--06--现在完成時
  • jmeter中文乱码问题解决
  • k8s安装kubeadm
  • 自由学习记录(56)
  • 算法期末复习
  • 任意文字+即梦3.0的海报设计Prompt
  • No package docker-ce available问题的解决
  • Python requests代理(Proxy)使用教程
  • 【ESP32】ESP-IDF开发 | 低功耗蓝牙开发 | GAP协议 + 设备扫描例程
  • 南部战区海军新闻发言人发表谈话
  • 黄仁勋结束年内第二次中国行:关键时刻,重申对中国市场承诺
  • 特朗普就防卫负担施压日本,石破茂:防卫费应由我们自主决定
  • 释新闻|加州诉特朗普政府:美国最大经济体为何打响关税阻击战?
  • 恒安集团创始人许连捷逝世
  • 陈尚君:唐文治的环球旅行