Embedding 之大规模数据拆分
受限于常见 LLM 的上下文大小,例如 gpt3.5t 是 16k、gpt4t 是 128k,我们并不能把完整的数据整个塞到对话的上下文中。
即使数据源接近于 LLM 的上下文窗口大小,llm 在读取数据时很容易出现分神,或者忽略其中部分细节的问题。
因此,我们需要对数据进行拆分,然后将最关联的内容输入给 LLM,以便 LLM 能够更好的理解数据。
分割数据
对于分割来说,将数据分割成具有独立逻辑的段落是比较好的选择,段落分割的质量越高,意味着 RAG 的效果越好,LLM 返回数据的质量就越好。
langchain 目前提供的切分工具有:
- Recursive: 根据给定的切分字符(例如 \n\n、\n等),递归的切分
- HTML: 根据 html 特定字符进行切分
- Markdown: 根据 md 的特定字符进行切分
- Code: 根据不同编程语言的特定字符进行切分
- Token: 根据文本块的 token 数据进行切分
- Character: 根据用户给定的字符进行切割
RecursiveCharacterTextSplitter
RecursiveCharacterTextSplitter 默认的分隔符列表是 [“\n\n”, “\n”, " ", “”], 你可以理解为它将文本分割后,在根据设置的 chunk 大小进行组装。
最影响切分质量的就是两个参数:
- chunkSize: 定义切分块的大小
- chunkOverlap: 定义块与块之间重叠的大小。较大的重叠可能会导致分割的内容重复,较小的重叠可能会导致分割的内容不完整。
// RecursiveCharacterTextSplitter 对文本进行分割
// https://chunkviz.up.railway.app/
import { RecursiveCharacterTextSplitter } from 'langchain/text_splitter';
import { TextLoader } from 'langchain/document_loaders/fs/text';
const text = new TextLoader('./data/kong.txt');
const docs = await text.load();
const splitter = new RecursiveCharacterTextSplitter({
chunkSize: 64, // 分块的大小
chunkOverlap: 0, // 块之间的重叠
});
const splitDocs = await splitter.splitDocuments(docs);
console.log(splitDocs);

如何学习大模型
现在社会上大模型越来越普及了,已经有很多人都想往这里面扎,但是却找不到适合的方法去学习。
作为一名资深码农,初入大模型时也吃了很多亏,踩了无数坑。现在我想把我的经验和知识分享给你们,帮助你们学习AI大模型,能够解决你们学习中的困难。
下面这些都是我当初辛苦整理和花钱购买的资料,现在我已将重要的AI大模型资料包括市面上AI大模型各大白皮书、AGI大模型系统学习路线、AI大模型视频教程、实战学习,等录播视频免费分享出来,需要的小伙伴可以扫取。
一、AGI大模型系统学习路线
很多人学习大模型的时候没有方向,东学一点西学一点,像只无头苍蝇乱撞,我下面分享的这个学习路线希望能够帮助到你们学习AI大模型。

二、AI大模型视频教程

三、AI大模型各大学习书籍

四、AI大模型各大场景实战案例

五、结束语
学习AI大模型是当前科技发展的趋势,它不仅能够为我们提供更多的机会和挑战,还能够让我们更好地理解和应用人工智能技术。通过学习AI大模型,我们可以深入了解深度学习、神经网络等核心概念,并将其应用于自然语言处理、计算机视觉、语音识别等领域。同时,掌握AI大模型还能够为我们的职业发展增添竞争力,成为未来技术领域的领导者。
再者,学习AI大模型也能为我们自己创造更多的价值,提供更多的岗位以及副业创收,让自己的生活更上一层楼。
因此,学习AI大模型是一项有前景且值得投入的时间和精力的重要选择。
784

被折叠的 条评论
为什么被折叠?



