Datawhale LLM-universe Task6

学习终于接近尾声了, 这一章节的学习任务主要是介绍一些开源的RAG应用是怎样搭建的
主要介绍了两个RAG项目, 个人知识库的搭建和帮我们写敬酒词的天机助手
其中个人知识库的搭建我们已经在前五个task的学习中, 对其中各模块的组成部分有所了解了, 这里我们可以看一下个人知识库RAG的组成部分:
在这里插入图片描述
首先, 用户提出问题我们需要给embedding成向量, 然后根据我们个人的需求去准备和加载对应的知识库文档(这里我认为文档是任意的,比如如果想使自己搭建的系统变身为历史专家, 就可以加载历史相关的文档, 另外, 一定要保证文档的正确性), 接下来就是对知识库文档做分割、数据清洗, 然后对整理后的文档做embedding成向量后, 再使用chroma等搭建向量数据库建立索引, 接着就可以用langchain搭建思维链, 得到在知识库文档中匹配出最与问题Query相近的Top k个向量, 然后把匹配到的知识库文本和上下文输入到prompt中, 就可以将这个prompt输入给LLM生成回答answer了
最后 一个能保存历史的问答思维链的实现方式如下:
在这里插入图片描述
在这里插入图片描述
而材料2中的天机大模型我的理解是将知识库文本替换为敬酒词相关的语料, 再加上对prompt做一些调整, 就能使LLM输出想要的敬酒词

补充内容: 高级RAG技巧:

  1. 多种格式的文件处理:langchain可支持处理csv文件在这里插入图片描述
    也可以用来处理PPTX文件 from langchain.document_loaders.powerpoint import UnstructuredPowerPointLoader
    也可以用于处理docx文件 from langchain_community.document_loaders.word_document import UnstructuredWordDocumentLoader
    数据清洗时, re正则表达式是很常用的手段, 后续需要仔细研究正则表达式的使用

2.对文本进行分块: 使 embedding 后的向量提取到完整的语义信息。一般 embedding model 的 max token 即最大可 embedding 句子长度通常为512至1024 token,过长的分块或分块中有多个语义的句子在 embedding 时很难从中提取完整的语义信息。优化分块后理想的文本块中语义是单一的,长度是合理的,很容易通过 embedding 提取出完整且的语义信息。分块的方式有: 定长分块、字符分块、文本分块、最大token数分块、语义分块等等, 而且都可以使用langchain中的text_splitter库来做
3. 使用不同的embedding模型, 在hugging face上, 有许多sota的embedding模型, 如果当前的RAG系统遇到瓶颈了, 可以试一下新的embedding模型看是否能有提升在这里插入图片描述

  1. 另外, 我们使用hugging face开源的embedding模型, 往往是基于一个通用的dataset的, 可能并不是很好贴合我们使用的数据, 因此我们可以对embedding模型做微调, 首先需要安装hugging face的datasets库, 另外对于不同的数据库, 对应的loss也不同
    在这里插入图片描述
    在这里插入图片描述
    数据集和对应的loss还是见课程, 这里不再赘述
    在了解数据集以后就可以进行微调模型
    在这里插入图片描述
    首先对数据集和模型做加载
    然后就可以做微调
    在这里插入图片描述
    这里在加载dataset时, 如果用dataset重新赋值的话会有bug, 如果卡在这一步报错然后没有重新加载dataset的话就会报错, 这里建议对dataset的名字做一个修改, 比如dataset_ 目前准备提PR

在这里插入图片描述
在这里插入图片描述
正常跑长这样
然后后面就是可以用LLM构建数据集再对embedding做微调了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值