提升RAG系统的回答质量:Chunking ?

在RAG(Retrieval-Augmented Generation)系统中,提升RAG系统的回答质量,Chunking能发挥什么样作用?我们先来看一张工业级RAG开源项目的架构图,图中最显眼的部分是我用红色框圈住的部分,该项目认为知识库是十分核心的组件,那么这样的思路是正确的吗?我们来分析一下。

在这里插入图片描述

文本切分的五个层次及其实现方法

我们先认真了解一下文本切分的五个层次及其实现方法,然后再探讨知识库Chunking是不是最核心的组件,或是说当我们了解了chunk建立的原则,再去寻找最终的答案。

句子级切分

概述

句子级切分是最基础的文本切分方法,将文本按照句子边界进行拆分。适用于需要高度精准的语义检索场景,如问答系统。通过句子级检索,系统可以直接找到与用户问题最相关的具体信息。

实现示例
from nltk.tokenize import sent_tokenize``   ``text = "这是一个用于测试的示例文本。它分成了多个句子。"``splits = sent_tokenize(text)``print("句子级切分:", splits)

输出:

句子级切分: ['这是一个用于测试的示例文本。', '它分成了多个句子。']
效果分析

句子级切分能够帮助模型聚焦于最细粒度的语义单元。然而,过于细粒度的切分可能导致上下文丢失,尤其是在需要理解段落或文档整体语义的场景中,容易导致生成的内容不连贯。

段落级切分

概述

段落级切分将文本按照段落进行拆分,保留了更多的上下文信息。适用于需要更丰富的语义环境来回答复杂问题的场景,如技术文档分析。

实现示例
text = "这是第一段。\n\n这是第二段,包含更多信息。\n\n最后,这是第三段。"``splits = text.split('\n\n')``print("段落级切分:", splits)

输出:

段落级切分: ['这是第一段。', '这是第二段,包含更多信息。', '最后,这是第三段。']
效果分析

段落级切分在保持上下文的同时,能够提供更精确的语义信息。这对于复杂查询的响应特别有用,可以减少因上下文缺失而导致的理解偏差。

章节级切分

概述

章节级切分按照文本的章节或主题进行切分,适用于需要对完整主题有深入理解的任务,例如法律文档或学术论文分析。

实现示例
document = """``第一章: 自然语言处理简介``自然语言处理是计算机科学领域中的一个重要分支,涉及机器与人类语言的交互。``   ``第二章: 机器学习基础``机器学习是一种使计算机具有学习能力的技术,通过对数据的分析和建模,使计算机能够自动进行预测或决策。``   ``第三章: 深度学习概论``深度学习是机器学习的一个子领域,通过模拟人脑神经网络的结构和功能,来解决复杂的模式识别问题。``   ``"""``   ``chapters = document.split("\n\n")``   ``print("章节级切分:", chapters)

输出:

章节级切分: ['第一章: 自然语言处理简介\n自然语言处理是计算机科学领域中的一个重要分支,涉及机器与人类语言的交互。', '第二章: 机器学习基础\n机器学习是一种使计算机具有学习能力的技术,通过对数据的分析和建模,使计算机能够自动进行预测或决策。', '第三章: 深度学习概论\n深度学习是机器学习的一个子领域,通过模拟人脑神经网络的结构和功能,来解决复杂的模式识别问题。']
效果分析

章节级切分能够为模型提供足够的语境,帮助其在生成时保持答案的连贯性和深度。然而,若章节过长,模型可能无法有效处理所有信息,导致生成结果过于冗长或偏离主题。

文档级切分

概述

文档级切分将整个文档作为一个检索单元。适用于需要整体理解的任务,如全面的政策分析或报告解读。

实现示例
document = """``这是一个关于自然语言处理的完整文档。文档内容涵盖了自然语言处理的基础知识、主要应用领域以及未来发展趋势。``"""``   ``# 文档级切分:整个文档作为一个chunk处理``document_chunks = [document.strip()]``   ``print("文档级切分:", document_chunks)

输出:

文档级切分: ['这是一个关于自然语言处理的完整文档。文档内容涵盖了自然语言处理的基础知识、主要应用领域以及未来发展趋势。']
效果分析

文档级切分为模型提供了全局视角,有助于生成完整和一致的回答。然而,在多主题或信息量过大的文档中,文档级处理可能导致模型难以聚焦于最相关的信息。

多文档级切分

概述

多文档级切分跨越多个文档,综合不同信息源,适用于复杂的跨领域问题,如多来源的数据分析和综合报告生成。

实现示例
documents = [`     `"文档1": "这是第一个文档,介绍了基本的编程概念。",`    `"文档2": "这是第二个文档,讨论了数据结构和算法。",`    `"文档3": "第三个文档涉及到高级机器学习方法的应用。"``]``   ``# 多文档处理``for i, doc in enumerate(documents):`    `print(f"文档{i+1}: {doc}")

输出:

多文档级切分: {'文档1': '这是第一个文档,介绍了基本的编程概念。', '文档2': '这是第二个文档,讨论了数据结构和算法。', '文档3': '第三个文档涉及到高级机器学习方法的应用。'}
效果分析

多文档级切分能够跨越多个信息源,提供全面的答案。通过多向量索引,模型可以在多个文档中找到相关信息,显著提升生成内容的丰富性和准确性。然而,跨文档的信息整合需要更加复杂的算法来确保一致性。

核心策略

通过了解这五个层次的切分方法和效果,我们能从中总结出一个核心策略,传统的基于物理位置的切分方法(如句子级和段落级)虽然简单,但可能无法有效组织语义相关的信息。相较之下,语义切分和多文档切分能够提供更丰富和相关的文本表示,从而提升检索和生成的质量。在实际应用中,应结合数据特性和系统需求,灵活选择和组合不同的文本切分方法,以实现最佳的RAG系统性能。这不仅能够提升系统的检索效率,还能确保生成的回答更加贴近用户需求。

知识库中的Chunk切分:核心中的核心

我想现在可以下结论了:知识库是RAG系统的核心中的核心,其功能在于将各种私域文档离线转化为计算机可检索的数据。然而,现实中大多数专业文档是以PDF、DOC等非结构化数据形式存在的。这些文档包含标题、段落、表格、图片等元素,虽然它们对于人类阅读来说非常直观,但对计算机的检索和处理却并不友好。因此,Chunking的首要任务是将这些非结构化文档转化为半结构化的格式(如Markdown、HTML)。接下来,系统会对这些转化后的文档进行切片处理,并将其向量化,最终形成可供检索的结构化数据块(chunk)。

高质量的chunk切分是RAG系统成功的关键所在。正如我们常说的“输入质量决定输出质量”,只有确保chunk切分的精准与合理,才能真正提升RAG系统的整体性能和回答准确性。

最后让我们温习一下文档形成chunk的基本步骤:

  • 文档解析:将非结构化文档转化为半结构化格式。

  • 语义理解与切片:依据文档内容进行语义分析,将其切分为逻辑性强的文本块(chunks)。

  • 向量化处理:将切分后的chunks转换为向量表示,以便计算机能够有效检索。

  • 存储与索引:将向量化的chunks存储到知识库中,并建立索引,确保在检索时可以快速找到最相关的信息。

如何学习大模型 AI ?

由于新岗位的生产效率,要优于被取代岗位的生产效率,所以实际上整个社会的生产效率是提升的。

但是具体到个人,只能说是:

“最先掌握AI的人,将会比较晚掌握AI的人有竞争优势”。

这句话,放在计算机、互联网、移动互联网的开局时期,都是一样的道理。

我在一线互联网企业工作十余年里,指导过不少同行后辈。帮助很多人得到了学习和成长。

我意识到有很多经验和知识值得分享给大家,也可以通过我们的能力和经验解答大家在人工智能学习中的很多困惑,所以在工作繁忙的情况下还是坚持各种整理和分享。但苦于知识传播途径有限,很多互联网行业朋友无法获得正确的资料得到学习提升,故此将并将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。

在这里插入图片描述

第一阶段(10天):初阶应用

该阶段让大家对大模型 AI有一个最前沿的认识,对大模型 AI 的理解超过 95% 的人,可以在相关讨论时发表高级、不跟风、又接地气的见解,别人只会和 AI 聊天,而你能调教 AI,并能用代码将大模型和业务衔接。

  • 大模型 AI 能干什么?
  • 大模型是怎样获得「智能」的?
  • 用好 AI 的核心心法
  • 大模型应用业务架构
  • 大模型应用技术架构
  • 代码示例:向 GPT-3.5 灌入新知识
  • 提示工程的意义和核心思想
  • Prompt 典型构成
  • 指令调优方法论
  • 思维链和思维树
  • Prompt 攻击和防范

第二阶段(30天):高阶应用

该阶段我们正式进入大模型 AI 进阶实战学习,学会构造私有知识库,扩展 AI 的能力。快速开发一个完整的基于 agent 对话机器人。掌握功能最强的大模型开发框架,抓住最新的技术进展,适合 Python 和 JavaScript 程序员。

  • 为什么要做 RAG
  • 搭建一个简单的 ChatPDF
  • 检索的基础概念
  • 什么是向量表示(Embeddings)
  • 向量数据库与向量检索
  • 基于向量检索的 RAG
  • 搭建 RAG 系统的扩展知识
  • 混合检索与 RAG-Fusion 简介
  • 向量模型本地部署

第三阶段(30天):模型训练

恭喜你,如果学到这里,你基本可以找到一份大模型 AI相关的工作,自己也能训练 GPT 了!通过微调,训练自己的垂直大模型,能独立训练开源多模态大模型,掌握更多技术方案。

到此为止,大概2个月的时间。你已经成为了一名“AI小子”。那么你还想往下探索吗?

  • 为什么要做 RAG
  • 什么是模型
  • 什么是模型训练
  • 求解器 & 损失函数简介
  • 小实验2:手写一个简单的神经网络并训练它
  • 什么是训练/预训练/微调/轻量化微调
  • Transformer结构简介
  • 轻量化微调
  • 实验数据集的构建

第四阶段(20天):商业闭环

对全球大模型从性能、吞吐量、成本等方面有一定的认知,可以在云端和本地等多种环境下部署大模型,找到适合自己的项目/创业方向,做一名被 AI 武装的产品经理。

  • 硬件选型
  • 带你了解全球大模型
  • 使用国产大模型服务
  • 搭建 OpenAI 代理
  • 热身:基于阿里云 PAI 部署 Stable Diffusion
  • 在本地计算机运行大模型
  • 大模型的私有化部署
  • 基于 vLLM 部署大模型
  • 案例:如何优雅地在阿里云私有部署开源大模型
  • 部署一套开源 LLM 项目
  • 内容安全
  • 互联网信息服务算法备案

学习是一个过程,只要学习就会有挑战。天道酬勤,你越努力,就会成为越优秀的自己。

如果你能在15天内完成所有的任务,那你堪称天才。然而,如果你能完成 60-70% 的内容,你就已经开始具备成为一名大模型 AI 的正确特征了。

这份完整版的大模型 AI 学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费

在这里插入图片描述

  • 17
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值