基于 InternLM 和 LangChain 搭建你的知识库

基于 InternLM 和 LangChain 搭建你的知识库

  • 大模型开发范式
    • LLM的局限性:
    • RAG 检索增强生成
  • LangChain简介
  • 构建向量数据库
  • 搭建知识库助手
  • Web Demo部署
    • 环境配置
    • 下载 NLTK 相关资源
    • 下载本项目代码

大模型开发范式

LLM的局限性:

  • 知识实效性受限:如何让LLM能够获得更新的知识
  • 专业能力有限:如何打造垂直领域大模型
  • 定制化成本高:如何打造个人专属的LLM应用

两种开发范式:
基于 InternLM 和 LangChain 搭建你的知识库_第1张图片

RAG 检索增强生成

基于 InternLM 和 LangChain 搭建你的知识库_第2张图片

LangChain简介

LangChain框架是一个开源工具,通过为各种LLM提供通用接口来简化应用程序的开发流程,帮助开发者自由构建LLM应用。
LangChain的核心组成模块:

  • 链:将组件组合实现端到端应用,通过一个对象封装实现一系列LLM操作
  • Eg.检索问答链:覆盖实现了GAR(增强检索生成)的全部流程
    基于 InternLM 和 LangChain 搭建你的知识库_第3张图片

构建向量数据库

  • 加载源文件
    确定源文件类型,针对不同类型源文件选用不同的加载器,核心在于将带格式文本转化为无格式字符串
  • 文档分块
    由于单个文档往往超过了模型上下文上限,我们需要对加载的文档进行切分
    一般按字符串长度进行分割
    可以手动控制分割块的长度和重叠区间的长度
  • 文档向量化
    使用向量数据库来支持语义检索,需要将文档向量化存入向量数据库
    可以使用任一一种Embedding模型来进行向量化
    可以使用多种支持语义检索的向量数据库,一般使用轻量级的Chroma

搭建知识库助手

将InternLM接入LangChain
基于 InternLM 和 LangChain 搭建你的知识库_第4张图片
基于RAG的问答系统性能核心受限于:

  • 检索精度
  • Prompt性能
    一些可能优化的点:
  • 检索方面:
    • 基于语义进行分割,保证每一个chunk的语义完整
    • 给每个chunk生成概括性索引,检索时匹配索引
  • Prompt方面
    • 迭代优化Prompt策略

Web Demo部署

有很多支持简易web部署的框架,如Gradio、Streamlit等

环境配置

在环境中安装运行 demo 所需要的依赖

# 升级pip
python -m pip install --upgrade pip

pip install modelscope==1.9.5
pip install transformers==4.35.2
pip install streamlit==1.24.0
pip install sentencepiece==0.1.99
pip install accelerate==0.24.1

在 /root 路径下新建目录 data,在目录下新建 download.py 文件并在其中输入以下内容,粘贴代码后记得保存文件,如下图所示。并运行 python /root/data/download.py 执行下载,模型大小为 14 GB,下载模型大概需要 10~20 分钟.
基于 InternLM 和 LangChain 搭建你的知识库_第5张图片

下载 NLTK 相关资源

我们在使用开源词向量模型构建开源词向量的时候,需要用到第三方库 nltk 的一些资源。正常情况下,其会自动从互联网上下载,但可能由于网络原因会导致下载中断,此处我们可以从国内仓库镜像地址下载相关资源,保存到服务器上。

cd /root
git clone https://gitee.com/yzy0612/nltk_data.git  --branch gh-pages
cd nltk_data
mv packages/*  ./
cd tokenizers
unzip punkt.zip
cd ../taggers
unzip averaged_perceptron_tagger.zip

下载本项目代码

cd /root/data
git clone https://github.com/InternLM/tutorial

你可能感兴趣的:(MMLab实战训练营,langchain)