书生.浦语大模型LangChain实战

本文介绍了RAG(检索增强生成)技术,通过结合生成模型和检索器,引入外部知识库以提升大模型在专业领域的深度。同时,文中讨论了Finetuning的局限性,并重点讲解了如何构建向量数据库和使用RAG技术进行知识库搭建与模型集成的实际操作。
摘要由CSDN通过智能技术生成

RAG(Retrieval-Augmented Generation)与Finetune

传统大模型有以下几点问题:

  1. 无法及时更新知识
  2. 知识面广,但在专业领域深度不够

为了解决以上诸多问题,有很多尝试方案。例如通过微调模型(Finetune)来适应专业领域知识,但这种方式对技术要求较高,属于计算密集型,很难灵活使用。

在这里插入图片描述

2020 年Lewis等人,在知识密集型 NLP 任务中,提出了一种更灵活的技术,称为检索增强生成(RAG)[参考论文:https://arxiv.org/abs/2005.11401]。在本文中,研究人员将生成模型与检索器模块相结合,以提供来自外部知识源的附加信息,并且这些信息可以很方便的进行更新维护。

即在大模型外部增加了一个知识库,大模型专门负责知识推理。

参数知识:神经网络只存储在训练期间学习到的知识。

非参数知识:知识存储在外部知识库中,例如向量知识库

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

构建向量数据库

  • 加载源文件:由于知识库文件格式不同,因此需要针对不同类型源文件采用不同的加载器
  • 文档分块(chunk):单个知识文档长度可能会超过模型上下文上限,需要对文档拆分
    • 按字符串长度分割
    • 手动控制分割长度和重叠区间长度
  • 文档向量块
    • 使用任意一种Embedding模型将块转化为向量,存入向量数据库
    • 使用支持语义检索的向量数据库,例如轻量级的Chroma

搭建知识库助手

在这里插入图片描述

创建虚拟环境

在这里插入图片描述

基础模型下载
LangChain相关环境配置

在这里插入图片描述

下载词向量模型sentence Transformer

在这里插入图片描述

下载NLTK库相关资源

知识库搭建

准备知识库数据

克隆几个仓库,利用其中的文本文档作为知识库数据

加载数据

利用langchain将不同格式的文本文档转化为字符串

分块及词向量持久化

利用sentence transformer将分块后的文档转化为词向量,并最终将其持久化保存

InternLM 接入LangChain

自定义一个InternLM的LLM类,继承LangChain的LLM类。重写其__init__()_call_()函数。在init中加载本地LLM模型,在call中调用模型的chat方法,传入prompt,返回response。

构建检索问答链

加载向量数据库
实例化自定义的LLM
实例化Prompt Template

在这里插入图片描述

在这里插入图片描述

reference

一文带你了解RAG(检索增强生成) | 概念理论介绍+ 代码实操(含源码)

Python自然语言处理:NLTK入门指南

向量数据库Chroma极简教程

  • 20
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值