视频地址:基于 InternLM 和 LangChain 搭建你的知识库_哔哩哔哩_bilibili
学习文档:https://github.com/InternLM/tutorial/tree/main/langchain
视频地址
一、大模型开发范式
1、LLM 的局限性
- 知识时效性受限:如何让LLM能够获取最新的
- 知识专业能力有限: 如何打造垂域大模型
- 定制化成本高: 如何打造个人专属的LLM应用
2、两种开发范式
RAG,Finutune
RAG:
二、LangChain简介
LangChain 框架是一个开源工具,通过为各种 LLM 提供通用接口来简化应用程序的开发流程,帮助开发者自由构建 LLM应用LangChain 的核心组成模块
- 链 (Chains) : 将组件组合实现端到端应用,通过一个对象封装实现一系列LLM 操作
- Eq.检索问答链,覆盖实现了 RAG(检索增强生成)的全部流程
基于LangChain搭建RAG应用:
三、构建向量数据库
加载源文件 > 文档分块 > 文档向量化
1,确定源文件类型,针对不同类型源文件选用不同的加载器
- 核心在于将带格式文本转化为无格式字符串
2,由于单个文档往往超过模型上下文上限,我们需要对加载的文档进行切分
- 一般按字符串长度进行分割
- 可以手动控制分割块的长度和重叠区间长度
3,使用向量数据库来支持语义检索,需要将文档向量化存入向量数据库
- 可以使用任一一种 Embedding 模型来进行向量化
- 可以使用多种支持语义检索的向量数据库,一般使用轻量级的 Chroma
四、搭建知识库助手
1、将InternLM 接入 LangChain
- LangChain 支持自定义LLM,可以直接接入到框架中
- 我们只需将 InternLM 部署在本地,并封装一个自定义 LLM类,调用本地 InternLM 即可
2、构建检索问答链
- LangChain 提供了检索问答链模版,可以自动实现知识检索、Prompt 嵌入、LLM问答的全部流程
- 将基于 InternLM 的自定义 LLM 和已构建的向量数据库接入到检索问答链的上游
- 调用检索问答链,即可实现知识库助手的核心功能
3、RAG方案优化建议
a、基于RAG的问答系统性能核心受限于
- 检索精度
- Prompt性能
b、一些可能的优化点
- 检索方面
- 基于语义进行分割,保证每一个chunk的语义完整
- 给每一个chunk生成概括性索引,检索时匹配索引
- Prompt方面
- 迭代优化Prompt策略
Demo