分类目录:《大模型从入门到应用》总目录
LangChain系列文章:
- 基础知识
- 快速入门
- 模型(Models)
- 提示(Prompts)
- 记忆(Memory)
- 索引(Indexes)
- 链(Chains)
- 代理(Agents)
- 基础知识
- 代理类型
- 自定义代理(Custom Agent)
- 自定义MRKL代理
- 带有ChatModel的LLM聊天自定义代理和自定义多操作代理(Custom MultiAction Agent)
- 工具
- 工具包(Toolkit)
- 代理执行器(Agent Executor)
- 计划与执行
- 回调函数(Callbacks)
当我们需要处理长文本时,有必要将文本分割成块。虽然这听起来很简单,但这里存在很多潜在的复杂性。理想情况下,我们希望将语义相关的文本块保持在一起,但什么是"语义相关"可能取决于文本的类型。本文就展示了几种实现这一目标的方法。
在高层次上,文本分割器的工作原理如下:
- 将文本分割成小的、语义有意义的块(通常是句子)。
- 开始将这些小块组合成较大的块,直到达到一定的大小(由某个函数衡量)。
- 一旦达到该大小,将该块作为自己的文本片段,然后开始创建一个具有一定重叠的新文本块(以保持块之间的上下文)。
这意味着有两个不同的方向可以定制文本分割器:
- 文本如何被分割
- 块的大小如何衡量
默认推荐的文本分割器是RecursiveCharacterTextSplitter。该文本分割器接受一个字符列表作为参数。它尝试根据第一个字符进行分块,但如果有任何分块过大,它将继续尝试下一个字符,依此类推。默认情况下,它尝试进行分割的字符是\n\n、\n等。除了控制分割的字符之外,我们还可以控制其他一些内容:
length_function:如何计算分块的长度。默认只计算字符数,但通常在这里传递一个标记计数器。chunk_size:分块的最大大小(由长度函数测量)。chunk_overlap:分块之间的最大重叠量。保持一些重叠可以保持分块之间的连续性(例如使用滑动窗口)。add_start_index:是否在元数据中包含每个分块在原始文档中的起始位置。



**既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上大数据知识点,真正体系化!**
**由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新**
**[需要这份系统化资料的朋友,可以戳这里获取](https://gitee.com/vip204888)**