LLM 的局限性
知识时效性受限: 如何让LLM能够获取最新的知识
专业能力有限: 如何打造垂域大模型
定制化成本高: 如何打造个人专属的LLM应用
RAG:检索增强生成,
核心思想:给大模型外挂一个知识库,对于用户的提问,会首先从知识库中匹配到提问对应回答的相关文档,然后将文档和提问一起交给大模型来生成回答,从而提高大模型的知识储备。
Ft:完成传统自然语言处理算法的微调
核心思想:在一个新的较小的训练集上,进行轻量级的训练微调,从而提升模型在这个新数据集上的能力
这两种开发方式都能够突破通用大模型的自身局限
RAG原理:
如何可以快速高效的开发一个2A级应用开源框架?
LangChain为我们提供了可能性!
LangChain 框架是一个开源工具,通过为各种 LLM 提供通用接口来简化应用程序的开发流程,帮助开发者自由构建 LLM应用LangChain 的核心组成模块
链 (Chains) : 将组件组合实现端到端应用,通过一个对象封装实现一系列LLM 操作
Eg.检索问答链,覆盖实现了 RAG (检索增强生成)的全部流程
向量数据库的构建:
加载源文件 > 文档分块 > 文档向量化
-
确定源文件类型,针对不同类型源文件选用不同的加载器
核心在于将带格式文本转化为无格式字符串 -
由于单个文档往往超过模型上下文上限,我们需要对加载的文档进行切分
一般按字符串长度进行分割(例如设置字符串长度为500)
可以手动控制分割块的长度和重叠区间长度 -
使用向量数据库来支持语义检索,需要将文档向量化存入向量数据库
可以使用任一一种 Embedding 模型来进行向量化
可以使用多种支持语义检索的向量数据库,一般使用轻量级的 Chroma
搭建知识库助手
RAG方案优化建议
基于RAG的问答系统性能核心受限于
检索精度
Prompt性能
一些可能的优化点:
- 检索方面:
基于语义进行分割,保证每一个chunk的语义完整
给每一个chunk生成概括性索引,检索时匹配索引 - Prompt方面
迭代优化Prompt策略
代码实战
下载安装所需依赖
模型下载
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
下载 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
下载本项目代码:
建议通过以下目录将仓库 clone 到本地,可以直接在本地运行相关代码:
cd /root/data
git clone https://github.com/InternLM/tutorial
知识库搭建
将远程开源仓库 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
遇到报错
发现自己看错了少写了个python文件