RAG 中常见的文本分块(chunk)方法及实战代码示例

在构建 RAG(Retrieval-Augmented Generation)系统时,文本切分(chunking)是第一步,决定了检索效果和生成质量。

很多初学者遇到问题的根源就在于“没分好 chunk”!


什么是 Chunk?

在 RAG 场景中,我们会把一整篇文档切成多个“小段”,每一段叫一个 chunk

这些 chunk 会:

  • 被转成向量
  • 存入向量数据库(如 Faiss / Milvus)
  • 后续检索时再被组合成上下文用于大模型生成

常见 Chunk 切分策略

方法简介优点场景
固定字符切割每 N 字一个 chunk简单易用快速测试、小文件
分段分句\n\n、标点切保留语义结构正文清晰的报告类文档
滑窗 + 重叠(推荐)chunk 之间有一定重叠保证上下文连续性长文档、问答类任务最常用

参数建议参考

参数说明推荐值
chunk_size每段最大长度(字符数)500~1000
chunk_overlap相邻 chunk 的重叠长度100~300
separators自定义分割符[“\n\n”, “\n”, “。”]

🧪 完整代码:用 LangChain 分割文本为 Chunk

pip install langchain

核心代码

from langchain.text_splitter import RecursiveCharacterTextSplitter


# 1️⃣ 定义示例文本(可替换为你自己的内容)
text = """
RAG(Retrieval-Augmented Generation)是将外部知识与大语言模型结合的一种技术方式,
通过“先检索、再生成”的流程,让模型能结合知识库回答问题。
而文本切分,就是其中的关键第一步。
"""

# 2️⃣ 初始化分块器(推荐配置)
text_splitter = RecursiveCharacterTextSplitter(
    separators=["\n\n", "\n", "。"],  # 语义感知分段
    chunk_size=1000,   ## 最大长度
    chunk_overlap=200  ## 重叠长度
)

# 3️⃣ 执行分块
chunks = text_splitter.split_text(text)

# 4️⃣ 输出查看:前几个 chunk 结果
print(f"总共分成 {len(chunks)} 块:\n")
for i, chunk in enumerate(chunks):
    print(f"第 {i+1} 块内容:\n{chunk}\n{'-'*30}")
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值