既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上大数据知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新
- [LLM的异步API、自定义LLM包装器、虚假LLM和人类输入LLM(Human Input LLM)]( )
- [缓存LLM的调用结果]( )
- [加载与保存LLM类、流式传输LLM与Chat Model响应和跟踪tokens使用情况]( )
+ 聊天模型(Chat Models)
- [基础知识]( )
- [使用少量示例和响应流式传输]( )
+ 文本嵌入模型
- [Aleph Alpha、Amazon Bedrock、Azure OpenAI、Cohere等]( )
- [Embaas、Fake Embeddings、Google Vertex AI PaLM等]( )
- 提示(Prompts)
- 记忆(Memory)
- 索引(Indexes)
- 链(Chains)
- 代理(Agents)
- 回调函数(Callbacks)
当我们需要处理长文本时,有必要将文本分割成块。虽然这听起来很简单,但这里存在很多潜在的复杂性。理想情况下,我们希望将语义相关的文本块保持在一起,但什么是"语义相关"可能取决于文本的类型。本文就展示了几种实现这一目标的方法。
在高层次上,文本分割器的工作原理如下:
- 将文本分割成小的、语义有意义的块(通常是句子)。
- 开始将这些小块组合成较大的块,直到达到一定的大小(由某个函数衡量)。
- 一旦达到该大小,将该块作为自己的文本片段,然后开始创建一个具有一定重叠的新文本块(以保持块之间的上下文)。
这意味着有两个不同的方向可以定制文本分割器:
- 文本如何被分割
- 块的大小如何衡量
默认推荐的文本分割器是RecursiveCharacterTextSplitter
。该文本分割器接受一个字符列表作为参数。它尝试根据第一个字符进行分块,但如果有任何分块过大,它将继续尝试下一个字符,依此类推。默认情况下,它尝试进行分割的字符是\n\n
、\n
等。除了控制分割的字符之外,我们还可以控制其他一些内容:
length_function
:如何计算分块的长度。默认只计算字符数,但通常在这里传递一个标记计数器。chunk_size
:分块的最大大小(由长度函数测量)。chunk_overlap
:分块之间的最大重叠量。保持一些重叠可以保持分块之间的连续性(例如使用滑动窗口)。add_start_index
:是否在元数据中包含每个分块在原始文档中的起始位置。
# This is a long document we can split up.
with open('../../state_of_the_union.txt') as f:
![img](https://img-blog.csdnimg.cn/img_convert/0b0a393b0c8c3341d8f8c66b6e34141a.png)
![img](https://img-blog.csdnimg.cn/img_convert/7556eeda95da03b7caf923a3681177fd.png)
![img](https://img-blog.csdnimg.cn/img_convert/ab36fdd40d106b95f2660626ce2db62e.png)
**既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上大数据知识点,真正体系化!**
**由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新**
**[需要这份系统化资料的朋友,可以戳这里获取](https://bbs.csdn.net/topics/618545628)**
只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新**
**[需要这份系统化资料的朋友,可以戳这里获取](https://bbs.csdn.net/topics/618545628)**