一文读懂LangChain框架中文档分割方式

云的事情不好说 2024-04-27 05:10:39

如何对文档进行分割,其实是数据处理中最核心的一步,其往往决定了检索系统的下限。但是,如何选择分割方式,往往具有很强的业务相关性——针对不同的业务、不同的源数据,往往需要设定个性化的文档分割方式。

LangChain 提供多种文档分割方式,区别在怎么确定块与块之间的边界、块由哪些字符/token组成、以及如何测量块大小。

Recursive(RecursiveCharacterTextSplitter): 根据用户定义的字符递归分割文本,保持相关文本在一起。这是推荐的初始分割方式。

HTML/Markdown(HTMLTextSplitter/MarkdownTextSplitter): 根据 HTML/Markdown 特定字符分割(如 ##、---等)并添加元数据标记文本来源。

Code(CodeTextSplitter): 根据编程语言(Python、JS 等 15 种)特定字符分割代码文本。

Token(TokenTextSplitter): 根据 token 分割文本,可选择不同的 token 度量方式。

Character(CharacterTextSplitter): 根据用户定义的字符(如逗号)分割文本,较为简单。

[实验性]Semantic Chunker(SemanticChunker): 首先按句子分割,然后将语义相似的句子组合在一起。

AI21 Semantic Text Splitter(AI21TextSplitter): 识别不同主题形成的连贯文本块,并在这些块之间分割。添加元数据标记文本来源。

通常建议从 RecursiveCharacterTextSplitter 递归分割器开始尝试。



0 阅读:6

云的事情不好说

简介:感谢大家的关注