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

[特殊字符] 大模型(LLMs)RAG 版面分析——文本分块面

🎯 一、为什么需要对文本分块?

🐘 **当遇到"大象级"文档时...**  
想象你面对一个几百页的文档,就像要吃掉一整头大象!🍽️ 这时候,**文本分块**就是你的"餐刀"。

❗ **两大核心问题**:
1. **信息丢失风险**:一次性处理整个文档就像用渔网捞金鱼,总会漏掉细节!🐠
2. **分块大小限制**:GPT-4的32K窗口就像电梯限载,超重可不行哦!🚧

💡 **分块好处**:
- 提高信息提取精度 🎯
- 避免上下文丢失 🧠
- 适配模型限制 ⚖️

---

## 🧂 二、8种文本分块方法大比拼

### 2.1 🥢 基础款:一般文本分块
```python
# 简单粗暴按长度切分
text = "我是很长很长的文本..."
chunk_size = 100
chunks = [text[i:i+chunk_size] for i in range(0, len(text), chunk_size)]

2.2 🔍 正则表达式分块(中文特供版)

import re
def split_sentences(text):sentence_delimiters = re.compile(u'[。?!;]|\n')return [s.strip() for s in sentence_delimiters.split(text) if s.strip()]
​
# 示例输出:
# ['文本分块是自然语言处理...', '这种分割通常是基于...']

2.3 🧪 SpaCy学术派分块

import spacy
nlp = spacy.load("zh_core_web_sm")
doc = nlp("文本分块是...")
[s for s in doc.sents]  # 智能句子分割

2.4 🧰 LangChain工具包系列

① 字符分割器

from langchain.text_splitter import CharacterTextSplitter
text_splitter = CharacterTextSplitter(chunk_size=35, chunk_overlap=0,separator=''
)
② 递归字符分割(智能版)

text_splitter = RecursiveCharacterTextSplitter(chunk_size=100,chunk_overlap=20  # 像拼图一样重叠更聪明 🧩
)

2.5 🌐 HTML结构分块

from langchain.text_splitter import HTMLHeaderTextSplitter
html_splitter = HTMLHeaderTextSplitter(headers_to_split_on=[("h1", "Header 1"), ("h2", "标题2")]
)

2.6 📝 Markdown专家分块

# 标题1
## 标题2
正文内容...

markdown_splitter = MarkdownHeaderTextSplitter(headers_to_split_on=[("#","H1"), ("##","H2")]
)

2.7 🐍 Python代码分块

from langchain.text_splitter import PythonCodeTextSplitter
python_splitter = PythonCodeTextSplitter(chunk_size=100)
# 自动识别class/def等代码结构

2.8 📜 LaTeX论文分块

\section{Introduction}
内容...

from langchain.text_splitter import LatexTextSplitter
latex_splitter = LatexTextSplitter(chunk_size=100)

🎁 彩蛋:向量数据库小贴士

💾 推荐使用LanceDB

  • 开源免费 🆓

  • 无服务器架构 ☁️

  • 完美兼容Python生态 🐍

import lancedb
db = lancedb.connect("./data")
table = db.create_table("docs", data=[{"vector": embedding, "text": chunk}])

🙏 致谢

http://www.xdnf.cn/news/4193.html

相关文章:

  • 农经权二轮延包软件—摸底申请表生成
  • 数据库的并发控制
  • nats v2.11.3全新上线!MQTT支持增强、JetStream性能优化、关键BUG修复,构建高效可信消息中间件新时代
  • NV287NV291美光固态闪存NV293NV294
  • Deepseek基础-api key申请及应用(java)、硅基流动api key申请及应用(dify)
  • ThreadLocal源码深度剖析:内存管理与哈希机制
  • Lora原理介绍并用Macbook air超快实现本地微调小模型
  • AI日报 · 2025年5月05日|雅诗兰黛与微软合作成立 AI 创新实验室,加速美妆产品研发与营销
  • 【言语理解】片段阅读之下文推断(6)
  • 设计模式每日硬核训练 Day 18:备忘录模式(Memento Pattern)完整讲解与实战应用
  • 全球化电商平台AWS云架构设计
  • 矩阵置零(中等)
  • 设计模式-基础概念学习总结(继承、多态、虚方法、方法重写)
  • 深入理解块级格式化上下文(BFC)
  • 文本三剑客
  • 字符串匹配 之 拓展 KMP算法(Z算法)
  • 数据集-目标检测系列- 印度人脸 检测数据集 indian face >> DataBall
  • 深度解析:从 GPT-4o“谄媚”到 Deepseek“物理腔”,透视大模型行为模式的底层逻辑与挑战
  • Unity:AddTorque()(增加旋转力矩)
  • uniapp 云开发全集 云数据库
  • JavaScript 笔记 --- part7 --- JS进阶 (part2)
  • 【信息系统项目管理师-论文真题】2008上半年论文详解(包括解题思路和写作要点)
  • Python生活手册-NumPy数组创建:从快递分拣到智能家居的数据容器
  • 互联网大厂Java求职面试:AI大模型与云原生架构设计深度解析
  • 【学习心得】Xtuner模型qlora微调时错误记录
  • 【嘉立创EDA】FPCB(Flexible-PCB)柔性软板设计如何增加补强层
  • 反常积分(广义积分)
  • Redis总结(六)redis持久化
  • C++ 适配器模式详解
  • Java中使用Lock简化同步机制