LLM+RAG:文本分块处理策略
文章目录
- 文本分块的意义
- 常见的文本分块策略
- 2.1 固定大小文本切块 (递归方法)
- 2.2 基于 `NLTK 、spaCy` 的文本切块
- 在 LangChain 中的应用
- 扩展:基于 `spaCy` 的文本切块
- 2.3 特殊格式文本切块(HTML、Markdown)
- LangChain 提供的特殊文本切块方法
- 4.3.5 自定义扩展
文本分块的意义
大多数常用的数据分块方法(chunking
)都是基于规则的,采用 fixed chunk size
(将数据或文本按照固定的大小进行数据分块)或 overlap of adjacent chunks
(让相邻的数据块具有重叠内容,确保信息不会丢失) 等技术。对于具有多个层级结构的文档,可以使用 Langchain
提供的 RecursiveCharacterTextSplitter
,这种方法允许将文档按照不同的层级进行分割。
然而,在实际应用中,由于预定义的规则(比如数据分块大小(chunk size
)或重叠部分的大小(size of overlapping parts
))过于死板,基于规则的数据分块方法很容易导致检索到的上下文(retrieval contexts
)不完整或包含 noise
(指不需要的、干扰性的信息或数据,可能会对分析或处理造成干扰或误导的数据。) 的数据块过大等问题。
常见的文本分块策略
在 RA