InternLM + LangChain RAG 实践项目——动漫知识大模型(1)

书生浦语大模型实战营第三期 L1 InternLM + LlamaIndex RAG 实践学习笔记-CSDN博客

基于InternLM和LangChain从0开始搭建你的知识库

在做完RAG的demo后,想再深入学习一下RAG对于大模型输出效果的提升,想做一个动漫知识大模型,想着自己实践一下。

1. 准备数据集

首先动漫相关的问题大多都是来源于内容本身,所以我首先考虑的是构建动漫剧情的知识库。

先尝试《火影忍者》,通过萌娘百科中总结的火影剧情,利用Firecrawl将网站数据转化为 LLM 可用格式,再经过简单处理即可使用:

还准备了fate zero和fate stay night的小说:

2. 创建向量数据库

使用向量数据库Chroma,这里词嵌入模型我选择的是bge-base-zh-v1.5,后续大模型采用的词嵌入模型相同。

3. 接入 LangChain

基于本地部署的 InternLM,继承 LangChain 的 LLM 类自定义一个 InternLM的LLM子类,从而实现将 InternLM 接入到 LangChain 框架中。完成 LangChain 的自定义 LLM 子类之后,可以以完全一致的方式调用 LangChain 的接口。

4. 构建检索问答链

通过一个对象完成检索增强问答(即RAG)的全流程, 通过调用一个 LangChain 提供的 RetrievalQA 对象,通过初始化时填入已构建的数据库和自定义 LLM 作为参数,来简便地完成检索增强问答的全流程,LangChain 会自动完成基于用户提问进行检索、获取相关文档、拼接为合适的 Prompt 并交给 LLM 问答。

5. 部署WebDemo

将上文的代码内容封装为一个返回构建的检索问答链对象的函数,并在启动 Gradio 的第一时间调用该函数得到检索问答链对象,后续直接使用该对象进行问答对话,从而避免重复加载模型。定义一个类,该类负责加载并存储检索问答链,并响应 Web 界面里调用检索问答链进行回答的动作。按照 Gradio 的框架使用方法,实例化一个 Web 界面并将点击动作绑定到上述类的回答方法。使用python启动该脚本,并映射到本地。

6. 使用RAG前后效果对比

internlm2_5-7b:

internlm2_5-7b + RAG

github地址:yuzhibo-glittle/InternLM_AnimationKnowledge (github.com)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值