【书生·浦语大模型实战营第3课】基于 InternLM 和 LangChain 搭建你的知识库

一、大模型开发范式

  • LLM的局限性
    • 知识时效性受限:如何让LLM能够获取最新的知识
    • 专业能力有限:如何打造垂直领域大模型
    • 定制化成本高:如何打造个人专属的LLM应用
  • 两种核心的大模型开发范式
    • RAG(检索增强生成): 成本低、可以实时更新、受基座模型影响大、单次回答知识有限
    • Finetune(微调):成本高、无法实时更新、可个性化微调、知识覆盖面广

二、LangChian介绍

  • LangChain框架是一个开源工具,通过为各种LLM提供通用接口来简化应用程序的开发流程,帮助开发者自由构建LLM应用。
  • LangChain的核心组成模块:
    • 链(Chains):将组件组合实现端到端应用,通过一个对象封装实现一系列LLM操作
    • 示例:检索问答链,覆盖实现了RAG(检索增强生成)的全部流程

【书生·浦语大模型实战营第3课】基于 InternLM 和 LangChain 搭建你的知识库_第1张图片
三、构建向量数据库

  1. 加载源文件:确定源文件类型(txt、markdown、pdf),针对不同类型源文件选用不同的加载器。

    • 核心在于将带格式文本转化为无格式字符串
  2. 文档分块:由于单个文档往往超过模型上下文上限,通常需要对加载的文档进行切分。

    • 一般按字符串长度进行分割
    • 可以手动控制分割块的长度和重叠区间长度
  3. 文档向量化

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

四、搭建知识库助手

  1. 将InternLM接入LangChain
    • LangChain支持自定义LLM,可以直接接入到框架中。
    • 只需将InternLM部署在本地,并封装一个自定义LLM类,调用本地InternLM即可。
  2. 构建检索问答链
    • LangChain提供了检索问答链模版,可以自动实现知识检索Prompt嵌入LLM问答的全部流程
    • 将基于InternLM的自定义LLM和已构建的向量数据库接入到检索问答链的上游
    • 调用检索问答链,即可实现知识库助手的核心功能
  3. RAG方案优化建议
    • 检索方面:
      • a) 基于语义进行分割,保证每一个chunk的语义完整;
      • b) 给每一个chunk生成概括性索引,检索时匹配索引
    • Prompt方面:
      • 迭代优化Prompt策略

五、Web Demo部署

支持简易Web部署的框架有Gradio、Streamlit等。

你可能感兴趣的:(OpenMMLab,langchain,人工智能)