大模型RAG(一)文本分块

本文探讨了文档分块策略,包括字符、语义、特定文档类型和基于模型的方法,以及如何通过NLP工具如BERT进行语义分割。文章还介绍了文本分类的多种策略,如句子、段落和文章级别,重点是关键信息抽取和利用NLP技术提取核心内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. 文档分块策略

文档切分粒度不好把控,既担心噪声太多又担心语义信息丢失

文档索引构建常用思路:

  • 一级索引是关键信息,用于计算相似度
  • 二级索引是原始文本
  • 二者通过索引映射

2. RAG的5种文本分块策略

  1. 字符分割 - 简单的静态字符数据块
  2. 递归字符文本分割 - 基于分隔符列表的递归分块
  3. 特定文档分割 - 针对不同文档类型(PDF、Python、Markdown)的各种分块方法
  4. 语义分割 - 基于嵌入式遍历的分块
  5. LLM 分割 - 使用类似代理系统的实验性文本分割方法。如果您的GPT成本接近于0.00美元,这种方法很好。

3. 不同文本的分类策略(句子、段落、文章)

3.1 句子本身不长,不需要进行额外分割

3.2 语义段的切分及段落(句子)关键信息抽取:

  1. 利用NLP中的成分句法分析(constituency parsing)工具和命名实体识别(NER)工具提取,前者可以提取核心部分(名词短语、动词短语……),后者可以提取重要实体(货币名、人名、企业名……)。
  2. 可以用语义角色标注(Semantic Role Labeling)来分析句子的谓词论元结构,提取“谁对谁做了什么”的信息作为关键信息。
  3. 关键词提取工作(Keyphrase Extraction)。

3.3 文章的切分及关键信息抽取:

  1. nlp篇章分析,把所有包含主从关系的段落合并成一段。
  2. 训练一个bert模型实现语义分割

4. Langchain中的文本分块工具

langchain默认使用RecursiveCharacterTextSplitter

1. RecursiveCharacterTextSplitter():按不同的字符递归地分割文档,同时要兼顾被分割文本的长度和重叠字符,它的默认分割符是一个列表即[“\n\n”, “\n”, " ", “”],因此它会用分割符列表中从左至右的顺序的分割符依次去搜索目标文档中的分割符,然后再分割文档,比如先搜索目标文档中的双换行符\n\n,如果存在,则切割文档,然后依次搜索单分隔符\n,空格等
2. CharacterTextSplitter():按字符数来切割文档。
3. MarkdownHeaderTextSplitter():基于指定的标题来分割markdown 文件,将同一标题下的文本放在了同一个块(chunk)中,而文本对应的标题信息则被存储在块的元数据中。
4. TokenTextSplitter():按token来分割文本。
5. SentenceTransformersTokenTextSplitter() : 是专门用于句子转换模型的文本分割器。默认行为是将文本分割成合适的句子转换模型的标记窗口的块。
6. Language() - 用于 CPP、Python、Ruby、Markdown 等。
7. NLTKTextSplitter():使用 NLTK(自然语言工具包)按句子分割文本,而不仅仅是根据 “\n\n” 进行分割。
8. SpacyTextSplitter() - 使用 Spacy分词器按句子的切割文本。

相关内容解释

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

自律也自由

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值