视频地址:
https://www.bilibili.com/video/BV1sT4y1p71V/?vd_source=7ec57e9f8774c23edf14450231ffa086
MarkDown:
https://github.com/InternLM/tutorial/blob/main/langchain/readme.md
1.大模型开发范式
- LLM局限性
- 知识时效性受限:让LLM获取新知识
- 专业能力有限:打造垂域模型
- 定制化成本高:打造个人专属LLM
1.1RAG范式(外挂知识库)
优点:低成本、可实时更新
缺点:受基座模型影响大、单次回答知识有限
1.2 Finetune范式(轻型训练集微调)
优点:可个性化微调、知识覆盖广
缺点:成本高、无法实时更新
2.LangChain简介
LangChain框架是一个开源工具,通过为各种LLM提供通用接口来简化应用程序的开发流程,帮助开发者自由构建LLM应用。
LangChain的核心组成模块:
- 链(Chains):将组件组合实现端到端应用,通过一个对象封装实现一系列LLM操作
- Eg.检索问答链,覆盖实现了**RAG(检索增强生成)**的全部流程
3.构建向量数据库
加载源文件→文档分块→文档向量化
-
确定源文件类型,针对不同类型源文件选用不同的加载器
核心在于将带格式文本转化为无格式字符串
-
由于单个文档往往超过模型上下文上限,我们需要对加载的文档进行切分
一般按字符串长度进行分割
可以手动控制分割块的长度和重叠区间长度
-
使用向量数据库来支持语义检索,需要将文档向量化存入向量数据库
可以使用任一一种Embedding模型来进行向量化
可以使用多种支持语义检索的向量数据库,一般使用轻量级的Chroma
4.搭建知识库助手
将InternLM接入LangChain
LangChain支持自定义LLM,可以直接接入到框架中
我们只需将InternLM部署在本地,并封装一个自定义LLM类,调用本地InternLM即可
4.1构建检索问答链
- LangChain提供了检索问答链模版,可以自动实现知识检索、Prompt嵌入、LLM问答的全部流程
- 将基于InternLM的自定义LLM和已构建的向量数据库接入到检索问答链的上游
- 调用检索问答链,即可实现知识库助手的核心功能
4.2 RAG方案优化建议
- 基于RAG的问答系统性能核心受限于:
- 检索精度
- Prompt性能
- 一些可能的优化点:
- 检索方面:
- 基于语义进行分割,保证每一个chunk的语义完整
- 给每一个chunk生成概括性索引,检索时匹配索引
- Prompt方面:
- ·迭代优化Prompt策略
- 检索方面:
5.Web Demo部署
有很多支持简易Web部署的框架,如Gradio、Streamlit等
6.动手实战环节
-
6.1 基础作业
6.1.1 基础环境准备
略