书生·浦语大模型实战营第三次课堂笔记

LLM 的局限性

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

RAG:检索增强生成,
核心思想:给大模型外挂一个知识库,对于用户的提问,会首先从知识库中匹配到提问对应回答的相关文档,然后将文档和提问一起交给大模型来生成回答,从而提高大模型的知识储备。
Ft:完成传统自然语言处理算法的微调
核心思想:在一个新的较小的训练集上,进行轻量级的训练微调,从而提升模型在这个新数据集上的能力
这两种开发方式都能够突破通用大模型的自身局限
书生·浦语大模型实战营第三次课堂笔记_第1张图片
RAG原理:
书生·浦语大模型实战营第三次课堂笔记_第2张图片

如何可以快速高效的开发一个2A级应用开源框架?

LangChain为我们提供了可能性!
LangChain 框架是一个开源工具,通过为各种 LLM 提供通用接口来简化应用程序的开发流程,帮助开发者自由构建 LLM应用LangChain 的核心组成模块
链 (Chains) : 将组件组合实现端到端应用,通过一个对象封装实现一系列LLM 操作
Eg.检索问答链,覆盖实现了 RAG (检索增强生成)的全部流程
书生·浦语大模型实战营第三次课堂笔记_第3张图片

向量数据库的构建:

加载源文件 > 文档分块 > 文档向量化

  • 确定源文件类型,针对不同类型源文件选用不同的加载器
    核心在于将带格式文本转化为无格式字符串

  • 由于单个文档往往超过模型上下文上限,我们需要对加载的文档进行切分
    一般按字符串长度进行分割(例如设置字符串长度为500)
    可以手动控制分割块的长度和重叠区间长度

  • 使用向量数据库来支持语义检索,需要将文档向量化存入向量数据库
    可以使用任一一种 Embedding 模型来进行向量化
    可以使用多种支持语义检索的向量数据库,一般使用轻量级的 Chroma

搭建知识库助手

书生·浦语大模型实战营第三次课堂笔记_第4张图片
RAG方案优化建议
基于RAG的问答系统性能核心受限于
检索精度
Prompt性能
一些可能的优化点:

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

代码实战

下载安装所需依赖
书生·浦语大模型实战营第三次课堂笔记_第5张图片
模型下载
书生·浦语大模型实战营第三次课堂笔记_第6张图片
LangChain 相关环境配置:
安装依赖包:

pip install langchain==0.0.292
pip install gradio==4.4.0
pip install chromadb==0.4.15
pip install sentence-transformers==2.2.2
pip install unstructured==0.10.30
pip install markdown==3.3.7

首先需要使用 huggingface 官方提供的 huggingface-cli 命令行工具。安装依赖:

pip install -U huggingface_hub

使用huggingface镜像下载
在/root/data目录下新建Python文件download_hf.py,填入以下代码:
resume-download:断点续下
local-dir:本地存储路径。(linux环境下需要填写绝对路径)

import os

# 设置环境变量
os.environ['HF_ENDPOINT'] = 'https://hf-mirror.com'

# 下载模型
os.system('huggingface-cli download --resume-download sentence-transformers/paraphrase-multilingual-MiniLM-L12-v2 --local-dir /root/data/model/sentence-transformer')

在/root/data目录下执行该脚本python download_hf.py
书生·浦语大模型实战营第三次课堂笔记_第7张图片

下载 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

书生·浦语大模型实战营第三次课堂笔记_第8张图片

下载本项目代码:
建议通过以下目录将仓库 clone 到本地,可以直接在本地运行相关代码:

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

书生·浦语大模型实战营第三次课堂笔记_第9张图片

知识库搭建

将远程开源仓库 Clone 到本地

# 进入到数据库盘
cd /root/data
# clone 上述开源仓库
git clone https://gitee.com/open-compass/opencompass.git
git clone https://gitee.com/InternLM/lmdeploy.git
git clone https://gitee.com/InternLM/xtuner.git
git clone https://gitee.com/InternLM/InternLM-XComposer.git
git clone https://gitee.com/InternLM/lagent.git
git clone https://gitee.com/InternLM/InternLM.git

书生·浦语大模型实战营第三次课堂笔记_第10张图片
书生·浦语大模型实战营第三次课堂笔记_第11张图片
书生·浦语大模型实战营第三次课堂笔记_第12张图片
遇到报错
书生·浦语大模型实战营第三次课堂笔记_第13张图片
发现自己看错了少写了个python文件
书生·浦语大模型实战营第三次课堂笔记_第14张图片

你可能感兴趣的:(大模型,笔记)