吴恩达DeepLearning.AI课程:大模型检索增强生成之文档划分技术
引言 上一节我们介绍了 LangChain 的基础知识以及文件导入的相关操作。文档成功导入后,下一步自然是对文档内容进行处理。检索增强生成(RAG)系统的核心目标是什么?就是从海量文档中精准定位最相关的内容并输出。然而,一大挑战在于——大模型的上下文窗口容量有限,通常无法将整个文档的所有信息一次性塞
引言
上一节我们介绍了 LangChain 的基础知识以及文件导入的相关操作。文档成功导入后,下一步自然是对文档内容进行处理。检索增强生成(RAG)系统的核心目标是什么?就是从海量文档中精准定位最相关的内容并输出。然而,一大挑战在于——大模型的上下文窗口容量有限,通常无法将整个文档的所有信息一次性塞入。即便某些技术声称可以处理无限长度的上下文,从成本效益的角度来看,更长的上下文意味着更高的计算开销与费用,并不划算。

解决这一问题的最佳途径之一,就是将文档切分为多个小段。这样做有两大优势:
- 通过 RAG 系统检索到的内容在语义上关联更紧密,检索效果自然更佳。
- 每个分段比整篇文档短得多,能显著降低计算资源和费用消耗。这也是大型语言模型兴起后,RAG 技术迅速流行的重要原因。
切分方法概述
那么,文档切分具体有哪些方法?最直接的方式是基于字符数量进行分割。例如,chunk_size 表示每个块的长度为 4000 个 token,chunk_overlap 表示上下文重叠部分为 200 个字符。为什么要设置重叠?因为文本段落之间天然存在关联,并非孤立存在。保留一定的重叠内容,相当于保留了上下文线索,有助于大模型更准确地理解当前段落。
然而,这种按字数机械分割的方式并非最优方案。首先,分割方式过于随机,完全不基于语义;其次,上下文的衔接显得生硬。因此在很多场景下,我们需要人工制作 chunk——借助个人经验与领域知识来找到合适的分块策略。当然,人工成本很高。好在 LangChain 除了提供基础的文本分割器外,还根据语言、类型的不同,提供了更智能的分割方式。
实例实践
接下来我们通过具体案例,实践 LangChain 中两种常用的文档切分方法。所需版本如下:
langchain 0.3.0
langchain-community 0.3.0
pypdf 5.0.0
openai 1.47.0
beautifulsoup4 4.12.3
先通过一个简单示例来观察文本切分的效果。首先,从 LangChain 的 text_splitter 模块导入两种常见切分器:RecursiveCharacterTextSplitter 和 CharacterTextSplitter。CharacterTextSplitter 直接按照字符串长度进行划分,就像前面图片展示的那样。
RecursiveCharacterTextSplitter 则对文档进行更精细的分割,它不仅关注分割后的文本长度,还会考虑重叠字符。默认情况下,它使用 ["nn", "n", " ", ""] 这四种符号作为分割标记,并按优先级顺序依次尝试:先使用双换行符(nn),再使用单换行符(n),然后是空格,最后才强制分割。因此,尽管使用 RecursiveCharacterTextSplitter 分割后的文本长度可能与设定的 chunk_size 不完全一致,但它更倾向于按句子或段落进行分割,可读性与语义连贯性都明显更好。
下面用一个具体例子对比两种分割方式。先准备一段文本 some_text,然后配置 c_splitter 和 r_splitter,均设置 chunk_size 为 450,且不设 chunk_overlap。
from langchain.text_splitter import RecursiveCharacterTextSplitter, CharacterTextSplitter
some_text = """When writing documents, writers will use document structure to group content.
This can convey to the reader, which idea's are related. For example, closely related ideas
are in sentances. Similar ideas are in paragraphs. Paragraphs form a document. nn
Paragraphs are often delimited with a carriage return or two carriage returns.
Carriage returns are the "backslash n" you see embedded in this string.
Sentences ha ve a period at the end, but also, ha ve a space.
and words are separated by space."""
c_splitter = CharacterTextSplitter(
chunk_size=450,
chunk_overlap=0,
separator = ' '
)
r_splitter = RecursiveCharacterTextSplitter(
chunk_size=450,
chunk_overlap=0,
separators=["nn", "n", " ", ""]
)
调用 c_splitter 查看结果:
print(c_splitter.split_text(some_text))
终端运行后可以看到,这段文本被切成了两块。但两块的大小差异非常大——原文本共计 496 个字符,而 chunk_size 设为 450,对于 c_splitter 来说,它只按字符串长度切割,因此第一块 450 字符,剩余 46 字符成为第二块。
['When writing documents, writers will use document structure to group content. This can convey to the reader, which idea's are related. For example, closely related ideas are in sentances. Similar ideas are in paragraphs. Paragraphs form a document. nn Paragraphs are often delimited with a carriage return or two carriage returns. Carriage returns are the "backslash n" you see embedded in this string. Sentences ha ve a period at the end, but also,',
'ha ve a space.and words are separated by space.']
再来看 r_splitter 的结果:
print(r_splitter.split_text(some_text))
虽然字符数上不完全符合 chunk_size,但确实是按句子形式划分的,切分点正好落在第一优先级 nn 的位置。
["When writing documents, writers will use document structure to group content. This can convey to the reader, which idea's are related. For example, closely related ideas are in sentances. Similar ideas are in paragraphs. Paragraphs form a document.",
'Paragraphs are often delimited with a carriage return or two carriage returns. Carriage returns are the "backslash n" you see embedded in this string. Sentences ha ve a period at the end, but also, ha ve a space.and words are separated by space.']
你是一名 AI 行业编辑,请围绕下面这条热点输出一份资讯解读:
热点:吴恩达DeepLearning.AI课程:大模型检索增强生成之文档划分技术要求:
1. 先用一句话解释这条热点在讲什么
2. 再总结它为什么重要
3. 说明会影响哪些 AI 产品或内容方向
4. 最后给出 3 个适合资讯站使用的标题
游乐网为非赢利性网站,所展示的游戏/软件/文章内容均来自于互联网或第三方用户上传分享,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系youleyoucom@outlook.com。
相关热点GoogleMeet是面向商业与企业的视频会议服务,支持屏幕共享、实时字幕及与GoogleWorkspace集成,适用于项目讨论、网络研讨和线上教学等多种会议场景,具备扎实的安全与隐私保护。
Lanter是Chrome扩展,利用AI将YouTube视频语音转为带时间戳的文字笔记,支持一键抓取高光、自动标点排版、书签管理、全局搜索及每日邮件汇总,方便高效回顾视频关键内容。
一款AI驱动的Chrome扩展音频笔记应用,支持录音自动转文字、标签分类与全文搜索,将语音转化为可检索的数字资产,显著提升信息定位与管理效率。
专为GoogleMeet设计的AIChrome扩展,实时转录会议内容,自动生成摘要并提取行动项与决策,无缝同步至Google文档、任务及Gmail,省去手动整理时间,显著提升协作效率。
- 日榜
- 周榜
- 月榜
热点快看
