news 2026/7/29 1:42:57

RAG文档切分

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
RAG文档切分

1、为什么切分

  • 避免无关内容对结果影响,提升检索精度
  • 突破Token数量限制,控制经济成本
  • 提升信噪比,减少信息干扰,物理抑制大模型“幻觉
  • 元数据挂载,数据治理与溯源
  • 混合架构中提升多路召回精确度

2、切分策略

具体切分时,可以采用如下策略,具体采用哪种,主要取决于在实际使用场景当中,对于语义连贯性,完整性的要求:

  1. 按照固定字符数或 Token 数来切分,但可能会在不适当的位置切断句子,导致语义不连贯
  2. 语义切分:根据文本的语义内容切分,旨在保持相关信息的集中和完整,适用于需要高度语义保持的场景。
    1. 处理速度较慢,且可能出现不同块之间长度极不均衡的情况。
    2. 具体切分过程为:将相邻的几个句子拼成一个句组。对所有句组进行嵌入,并比较嵌入向量的距离,找到语义变化大的位置,根据阈值确定切分点(比如计算相邻句子嵌入向量的余弦距离,取距离分布的第 N 百分位值作为阈值,高于此值则切分)。按照切分点切分出若干个语义段,并合并某些长度很短的语义段。
  3. 递归使用多个分隔符切分,同时尽量保证字符数或 Token 数不超出限制。能保证不切断完整的句子。

3、RecursiveCharacterTextSplitter

RecursiveCharacterTextSplitter(递归字符文本切分器)是最常用的切分器,它由一个字符列表作为参数,默认列表为["\n\n", "\n", " ", ""],并且会尝试按顺序使用这些字符进行切分,直到块足够小。由此尽可能地将所有段落(然后是句子,最后是词)保持在一起,因为这些段落通常看起来是语义上最相关的文本片段。

同时为了保证段之间语义完整,可以设置每个块之间有一部分重叠

举例:

以下是一个完整的 Python 代码示例,演示如何使用 RecursiveCharacterTextSplitter 进行文本切分:

# 安装必要的库 # pip install langchain-text-splitters # 导入所需模块 from langchain_text_splitters import RecursiveCharacterTextSplitter from langchain_community.document_loaders import UnstructuredWordDocumentLoader #加载文档 docs = UnstructuredWordDocumentLoader( file_path="assets/sample.docx", mode="single" ).load() #切分为文本块 chunks = RecursiveCharacterTextSplitter( separators=["\n\n", "\n", "。", "!", "?", "……", ",", ""], # 分隔符列表 chunk_size=400, # 每个块的最大长度 chunk_overlap=50, # 每个块重叠的长度 length_function=len, # 可选:计算文本长度的函数,默认为字符串长度,可自定义函数来实现按 token 数切分 add_start_index=True # 可选:块的元数据中添加此块起始索引 ).split_documents(docs) #输出切分结果 print(chunks)

这段代码展示了 RecursiveCharacterTextSplitter 的基本用法:首先加载文档,然后配置切分器的参数,最后执行切分操作并输出结果。

整个切分过程可以通过如下流程图所示:

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/29 1:42:27

电子创客工作台搭建指南:从工具选型到专业配置

1. 项目概述:打造你的创客电子工作台“工欲善其事,必先利其器。” 这句话对于电子创客来说,再贴切不过了。无论是刚入门的新手,还是经验丰富的极客,一套趁手的工具和一批靠谱的耗材,都是将脑海中的奇思妙想…

作者头像 李华
网站建设 2026/7/29 1:41:08

基于Arduino的调酒机器人:从机电一体化到自动化液体处理系统

1. 项目概述:从创意到现实的调酒机器人几年前,我在一个创客展上看到一个用舵机简单搅拌饮料的“机器人”,当时就觉得,这离真正的自动化调酒还差得远。调酒不只是混合,它关乎精确的计量、优雅的动作和可重复的配方。于是…

作者头像 李华
网站建设 2026/7/29 1:35:51

GetQzonehistory:轻松找回QQ空间所有历史说说的终极指南

GetQzonehistory:轻松找回QQ空间所有历史说说的终极指南 【免费下载链接】GetQzonehistory 获取QQ空间发布的历史说说 项目地址: https://gitcode.com/GitHub_Trending/ge/GetQzonehistory 你是否曾试图找回那些珍贵的QQ空间记忆,却发现早期的说说…

作者头像 李华
网站建设 2026/7/29 1:30:56

BBDown完整指南:5个步骤轻松下载B站高清视频

BBDown完整指南:5个步骤轻松下载B站高清视频 【免费下载链接】BBDown Bilibili Downloader. 一个命令行式哔哩哔哩下载器. 项目地址: https://gitcode.com/gh_mirrors/bb/BBDown 想要免费高效地下载B站视频?BBDown是您的最佳选择!这款…

作者头像 李华
网站建设 2026/7/29 1:25:23

NBM5100A与PIC18LF47K42在低功耗物联网设计中的协同应用

1. 理解NBM5100A与PIC18LF47K42的协同价值在低功耗物联网设备设计中,工程师们经常面临一个经典矛盾:传感器节点需要间歇性发射无线信号(如LoRaWAN/NB-IoT),每次发射瞬间需要150mA以上的峰值电流,但日常待机…

作者头像 李华