项目地址:GitHub - InternLM/tutoriald
第三节课视频地址:(3)基于 InternLM 和 LangChain 搭建你的知识库_哔哩哔哩_bilibili
大模型开发范式
LLM的局限性:
(1)知识时效性受限
(2)专业能力有限
(3)定制化成本高
RAG(知识库,检索增强生成)
优点:低成本、可实时更新,无需对模型进行训练
缺点:受基座模型影响大、单次回答知识有限
RAG基本思想:接收用户输入后,先通过向量检索从向量数据库中取回相似度高的文本,再用这些文本组成prompt一起放入大模型。
Finetune(通过微调提升模型的垂直领域能力)
优点:个性化、知识面广
缺点:成本高昂、无法实时更新
LangChain简介
LangChain是一个开源框架,旨在通过提供通用接口来简化大语言模型应用的开发流程,其核心组成模块为链(Chains)
基于LanChain搭建RAG应用流程图如下:
构建向量数据库
构建向量数据库的步骤如下:
1. 加载本地文档(将带格式的文本转化为无格式的字符串)
2. 文档分块(按字符串长度对文本进行分割,避免超过模型上下文的上限)
3. 文本向量化(使用任意一种embedding模型,将分块后的文本映射为向量,存入向量数据库)
搭建知识库助手
LangChain支持自定义LLM,我们可以将InternLM部署在本地,并封装成LangChain可调用的自定义LLM类。
构建检索问答链
LangChain提供了检索问答链模板,我们可以将自定义LLM和向量数据库接入检索问答链,即可自动实现知识检索、prompt嵌入、以及LLM问答的全部流程。
Web Demo部署
利用如Gradio,Streamlit等框架将大模型应用部署在web端。
Gradio部署的效果如下,详细过程参考动手实践:
动手实践
动手实践详细过程参考项目代码及视频讲解。