大模型RAG(一)文本分块

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

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分词器按句子的切割文本。

相关内容解释

  • 14
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
模型+RAG(Retrieval-Augmented Generation)是一种结合了检索和生成的方法,用于实现数据采集。具体步骤如下: 1. 数据收集:首先需要收集大量的原始数据,可以是文本、图像、音频等形式的数据。这些数据可以从互联网、数据库、文档等多个渠道获取。 2. 数据预处理:对收集到的原始数据进行预处理,包括数据清洗、去重、标注等操作。这一步骤旨在提高数据的质量和准确性,为后续的模型训练做准备。 3. 模型训练:使用大模型进行训练,可以选择使用预训练的语言模型(如GPT)或自定义的模型。在训练过程中,可以采用生成式对抗网络(GAN)等方法来增强模型的生成能力。 4. 检索模块构建:为了提高生成结果的准确性和相关性,需要构建一个检索模块。该模块可以使用传统的信息检索技术,如倒排索引、向量检索等,也可以使用深度学习方法,如BERT、Dense Retrieval等。 5. 数据采集:利用构建好的检索模块,对用户提出的问题或需求进行检索,获取与之相关的数据。可以根据检索结果的相关性进行排序,选择最相关的数据进行生成。 6. 数据生成:基于检索到的数据,使用大模型进行生成。可以采用生成式模型,根据检索到的数据进行文本、图像等内容的生成。生成的结果可以根据需求进行进一步的处理和优化。 7. 结果评估:对生成的结果进行评估,可以使用人工评估或自动评估的方式。评估指标可以包括生成结果的准确性、流畅性、相关性等。 8. 迭代优化:根据评估结果,对模型和检索模块进行优化和调整。可以通过增加训练数据、调整模型参数、改进检索算法等方式来提升系统的性能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

自律也自由

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

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

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

打赏作者

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

抵扣说明:

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

余额充值