首页 > 其他分享 >Embedding 之大规模数据拆分

Embedding 之大规模数据拆分

时间:2024-08-15 11:25:41浏览次数:6  
标签:RAG Embedding 切分 AI 模型 LLM 学习 大规模 拆分

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);


9.png

如何学习大模型 AI ?

由于新岗位的生产效率,要优于被取代岗位的生产效率,所以实际上整个社会的生产效率是提升的。

但是具体到个人,只能说是:

“最先掌握AI的人,将会比较晚掌握AI的人有竞争优势”。

这句话,放在计算机、互联网、移动互联网的开局时期,都是一样的道理。

我在一线互联网企业工作十余年里,指导过不少同行后辈。帮助很多人得到了学习和成长。

我意识到有很多经验和知识值得分享给大家,也可以通过我们的能力和经验解答大家在人工智能学习中的很多困惑,所以在工作繁忙的情况下还是坚持各种整理和分享。但苦于知识传播途径有限,很多互联网行业朋友无法获得正确的资料得到学习提升,故此将并将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。

在这里插入图片描述

第一阶段(10天):初阶应用

该阶段让大家对大模型 AI有一个最前沿的认识,对大模型 AI 的理解超过 95% 的人,可以在相关讨论时发表高级、不跟风、又接地气的见解,别人只会和 AI 聊天,而你能调教 AI,并能用代码将大模型和业务衔接。

  • 大模型 AI 能干什么?
  • 大模型是怎样获得「智能」的?
  • 用好 AI 的核心心法
  • 大模型应用业务架构
  • 大模型应用技术架构
  • 代码示例:向 GPT-3.5 灌入新知识
  • 提示工程的意义和核心思想
  • Prompt 典型构成
  • 指令调优方法论
  • 思维链和思维树
  • Prompt 攻击和防范

第二阶段(30天):高阶应用

该阶段我们正式进入大模型 AI 进阶实战学习,学会构造私有知识库,扩展 AI 的能力。快速开发一个完整的基于 agent 对话机器人。掌握功能最强的大模型开发框架,抓住最新的技术进展,适合 Python 和 JavaScript 程序员。

  • 为什么要做 RAG
  • 搭建一个简单的 ChatPDF
  • 检索的基础概念
  • 什么是向量表示(Embeddings)
  • 向量数据库与向量检索
  • 基于向量检索的 RAG
  • 搭建 RAG 系统的扩展知识
  • 混合检索与 RAG-Fusion 简介
  • 向量模型本地部署

第三阶段(30天):模型训练

恭喜你,如果学到这里,你基本可以找到一份大模型 AI相关的工作,自己也能训练 GPT 了!通过微调,训练自己的垂直大模型,能独立训练开源多模态大模型,掌握更多技术方案。

到此为止,大概2个月的时间。你已经成为了一名“AI小子”。那么你还想往下探索吗?

  • 为什么要做 RAG
  • 什么是模型
  • 什么是模型训练
  • 求解器 & 损失函数简介
  • 小实验2:手写一个简单的神经网络并训练它
  • 什么是训练/预训练/微调/轻量化微调
  • Transformer结构简介
  • 轻量化微调
  • 实验数据集的构建

第四阶段(20天):商业闭环

对全球大模型从性能、吞吐量、成本等方面有一定的认知,可以在云端和本地等多种环境下部署大模型,找到适合自己的项目/创业方向,做一名被 AI 武装的产品经理。

  • 硬件选型
  • 带你了解全球大模型
  • 使用国产大模型服务
  • 搭建 OpenAI 代理
  • 热身:基于阿里云 PAI 部署 Stable Diffusion
  • 在本地计算机运行大模型
  • 大模型的私有化部署
  • 基于 vLLM 部署大模型
  • 案例:如何优雅地在阿里云私有部署开源大模型
  • 部署一套开源 LLM 项目
  • 内容安全
  • 互联网信息服务算法备案

学习是一个过程,只要学习就会有挑战。天道酬勤,你越努力,就会成为越优秀的自己。

如果你能在15天内完成所有的任务,那你堪称天才。然而,如果你能完成 60-70% 的内容,你就已经开始具备成为一名大模型 AI 的正确特征了。

这份完整版的大模型 AI 学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费

标签:RAG,Embedding,切分,AI,模型,LLM,学习,大规模,拆分
From: https://blog.csdn.net/python12345678_/article/details/141217912

相关文章

  • SciTech-BigDataAIML-LLM-Transformer Series系列: Word Embedding词嵌入详解: 用Corp
    SciTech-BigDataAIML-LLM-TransformerSeries系列:WordEmbedding词嵌入详解:1.用Corpus预训练出嵌入矩阵\(\largeE\)CorpusCollecting:非常重要的工作先收集一个常用的Corpus(语料库),能保障大多数的word都在corpus.有两个特别重要的作用:VocabularyExtracting:词......
  • 《优化 SQL 索引策略:提升大规模数据检索效率的关键》
    在当今数字化时代,数据量呈爆炸式增长,企业和组织面临着处理大规模数据的巨大挑战。对于数据库管理员和开发者来说,如何在大规模数据环境中优化SQL中的索引策略,以减少数据检索时间,成为了至关重要的任务。索引是数据库中用于加速数据检索的重要结构。然而,在大规模数据场景下,......
  • 亿级大表垂直拆分:上云业务的工程实践
    亿级大表垂直拆分:上云业务的工程实践原创修改于 2023-10-1410:59:096810举报文章被收录于专栏:后台技术汇1、前言伴随着不断扩张的业务量,在数据库层面一般会经历数据拆分。解决问题的第一步,就是重新评估DB表结构设计的合理性。2、大表问题......
  • 按照第一列拆分excel为单独文件
    按照第一列拆分excel为单独文件创建时间:2024-08-09一、使用方法1.1修改config.json文件里面的地址{"excelPATH":"E:\\downloads\\无标题(2).xls"}修改为后面文件的具体位置1.2双击运行程序二、使用实例2.1数据准备2.2按照商品名称拆分将商品名称复制到第......
  • python-docx 将文档根据标题二拆分为多个docx文件
    python-docx将文档根据标题二拆分为多个docx文件时隔好久,又开始搞文档了感觉搞来搞去还不如手动复制粘贴得了……只是文本内容–>简单文本内容自定义样式保持不变(有点难度)提取文档中的图片、表格(简单)按照顺序还原图片、表格到文档中,并且不改变样式(累了,毁灭吧)题注、......
  • HuggingFace:使用 Transformer 对 DNA 序列进行高效大规模嵌入提取
    我有一个非常大的数据框(60+百万行),我想使用转换器模型来获取这些行(DNA序列)的嵌入。基本上,这首先涉及标记化,然后我可以获得嵌入。由于RAM限制,我发现标记化然后将所有内容嵌入到一个py文件中是行不通的。这是我发现的解决方法,适用于大约3000万行的数据帧(但不适用于较大的d......
  • 中文的embedding方式
    中文文本处理有多种专门的词嵌入(embedding)方法。与英文相似,中文的词嵌入方法可以帮助将文本数据转换为机器学习模型可以处理的向量表示。以下是一些常见的中文词嵌入方式:1.Word2Vec简介:Word2Vec是一种广泛使用的词嵌入技术,可以应用于中文和其他语言。中文的Word2Vec训练......
  • embedding初始化方式
    在词嵌入的初始化阶段,使用随机值初始化和预训练的词向量是两种不同的策略,各有其特点和应用场景。以下是这两种方法的具体区别以及随机初始化的取值范围:随机值初始化定义随机初始化是指在模型训练开始时,用随机生成的值来填充词嵌入矩阵。这个过程通常使用均匀分布或正态分布生成......
  • 洛谷P2404 自然数的拆分问题——题解
    洛谷P2404题解传送锚点摸鱼环节自然数的拆分问题题目描述任何一个大于\(1\)的自然数\(n\),总可以拆分成若干个小于\(n\)的自然数之和。现在给你一个自然数\(n\),要求你求出\(n\)的拆分成一些数字的和。每个拆分后的序列中的数字从小到大排序。然后你需要输出这些序列......
  • python拆分PDF文件
    先占个空,后面在慢慢更新下面这个代码实现讲一个PDF文件拆分成多个文件importPyPDF2defsplit_pdf(input_pdf_path,output_prefix,start_page,end_page):"""分割PDF文件为多个小的PDF文件,每个文件包含原始文档的一部分页面。:paraminput_pdf_path:输入......