基于书生·浦语大模型应用开发范式介绍

发布时间:2024年01月09日

大模型应用开发范式

通用大模型的优势

  • 强大的语言理解、指令跟随、语言生成的能力
  • 可以理解用户自然语言的指令
  • 具有强大的知识储备和一定的逻辑推理能力。

通用大模型局限性

  • 知识时效性受限:如何让LLM能够获取最新的知识
  • 专业能力有限:如何打造垂域大模型
  • 定制化成本高:如何打造个人专属的LLM应用

两种核心开发范式

  • 检索增强生成(RAG):核心思想是给大模型外挂一个知识库,对用户的提问,先从知识库中匹配对应回答的相关文档,将文档和提问一起输入大模型来生成答案,从而提高大模型的知识储备
  • 延承传统自然语言处理的微调(Finetune):核心思想是在一个新的较小的数据集上进行轻量级的训练微调,从而提升模型在这个新的数据集上的能力

这两种开发范式都能够突破通用大模型自身的局限,但也存在不同的优劣势

RAGFinetune
低成本可个性化微调
可实时更新知识覆盖面广
受基座模型影响大成本高昂
单次回答知识有限无法实时更新
无需重新训练,大跨度需要总结性的文本表现不佳需要重新训练,回答的风格模拟效果好

RAG范式原理
向量输入模型Sentence Transformer将用户输入文本转化为向量,并在向量数据库中匹配相似的文本段(认为相似的文本段包含用户需要的答案),然后将用户的输入和检索到的相似文本段一起嵌入到模型的Prompt,传递给InternLM对问题做出最终的回答,最后输出答案。
RAG范式原理图

LangChain简介

  • LangChain是针对大模型开发的第三方开源库,为各种大模型(LLM)提供通用接口,来简化应用程序的开发流程,帮助开发者自由构建LLM应用
  • LangChain封装了很多组件,通过这些组件的组合,可以构建多种类型RAG的应用,开发者可以直接将私域数据嵌入到LangChain中的组件,通过对这些组件的组合来构建适用于自己应用场景的RAG应用
  • LangChain的核心组件是链(Chains),一个链将多个组件组合在一起的端到端应用,通过一个链可以封装一系列的大模型操作

基于LangChain搭建RAG应用:以本地文档形式存在的个人知识库使用Unstrucked Loader组件来加载本地文档,将本地不同格式的文档转化为统一的纯文本格式,使用Text Splitter组件对提取出来的纯文本分割成Chunks,再通过开源词向量模型Sentence Transformer将文本段转化为向量格式,存储到基于Chroma的向量数据库中。接下来将用户的每一个输入,通过Sentence Transformer转化为同样维度的向量,通过在向量数据库中进行相似度匹配,找到和用户输入相关的文本段,将相关的文本段嵌入到写好的Prompt Template中,再通过InternLM进行最后的回答
基于LangChain搭建RAG应用

构建向量数据库

  • 加载源文件
    确定源文件类型,针对不同类型源文件选用不同的加载器,核心是将带格式文本转化为无格式字符串
  • 文档分块
    由于单个文件往往超过模型上下文上限,需要对加载的文档进行分切
    • 一般按字符串长度进行分割
    • 可以手动控制分割的长度和重叠区间长度
  • 文档向量化
    使用向量数据库来支持语义检索,需要将文档向量化存入向量数据库
    • 可以使用任一一种Embedding模型来进行向量化
    • 可以使用多种支持语义检索的向量数据库,一般使用轻量级的Chroma

搭建知识库助手

将InternLM接入LangChain

  • LangChain支持自定义LLM,可以直接接入到框架中
  • 只需要将InternLM不是在本地,并封装一个自定义LLM类,调用本地InternLM即可

构建检索问答链

  • LangChain提供了检索问答链模板,可以自动实现知识检索、Prompt嵌入、LLM问答的全部流程
  • 将基于InterLM的自定义LLM和已构建的向量数据库接入到检索问答链的上游
  • 调用检索问答链,即可实现知识库助手的核心功能

RAG方案优化建议

基于RAG的问答系统性能核心受限于:

  • 检索精度
  • Prompt性能

优化点

  • 检索方面
    • 基于语义进行分割,保证每一个chunk的语义完整
    • 给每一个chunk生成概括性索引,检索时匹配索引
  • Prompt方面
    • 迭代优化Prompt策略
文章来源:https://blog.csdn.net/m0_49289284/article/details/135467197
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。