数据准备阶段

加载原始文档
使用来自langchain_community.document_loaders的各种Loader,
如:UnstructuredMarkdownLoader,TextLoader等.
传入参数一般为文件路径如:
"../../data/C1/markdown/easy-rl-chapter1.md"

文本分块(Chunking)
为了便于后续嵌入与检索,长文档被分割成较小的文本块(chunks)。
经常使用递归字符分割:RecursiveCharacterTextSplitter()。
其默认行为旨在最大程度保留文本的语义结构:
https://datawhalechina.github.io/all-in-rag/#/chapter2/05_text_chunking

实际应用实例:
text_splitter = CharacterTextSplitter( chunk_size=200, # 每个块的大小 chunk_overlap=50 # 块之间的重叠大小 )
其中,chunk_overlap是为了保证上下文连续性的参数,其实现的思路为:

块编号 覆盖的字符区间 说明
第1块 0 ~ 199 从开头取200个字符
第2块 150 ~ 349 向后滑动 200 - 50 = 150 个字符
第3块 300 ~ 499 再滑动 150 个字符
👉 每个块都与前一个块有50个字符的重叠部分(即 chunk_overlap)
这意味着如果一段话跨越了两个块的边界,
模型在处理第2块时依然能看到第1块的结尾,从而理解上下文。
它本质上是一个滑动窗口的步长控制机制。
 posted on 2025-11-06 09:35  KIAEr  阅读(11)  评论(0)    收藏  举报