目录
LLM具有的局限性:
1.知识时效性有限;2.专业能力有限;3.定制化成本高。
大模型开发范式:
RAG(检索,增强生成), Finetune(微调)
RAG开发范式:
为大模型外挂一个知识库。
优势:成本低,实时更新。
劣势:受基座大模型的影响大,单词回答知识有限,占用了大量模型上下文关联能力。
本节课的LangChain框架
它是什么?
LangChain是一个框架,为各种LLM提供通用接口来简化应用程序的开发流程。其核心做成模块有:
- Chains:将组件组合实现端到端应用,通过一个对象封装实现一系列LLM操作。Eg. 检索问答链,覆盖实现RAG检索增强生成的流程。
作为用户需要注意的就是构造unstructedloader去获取你目标垂直领域的信息,通过这个API与splitter和embed等API来将收集的信息资源转换为数据库的形式。
为什么要使用splitter?
一整个文档往往超过模型上下文能力上限,所以要进行切分,一般按照字符串长度进行分割,亦可以手动控制分割块长度和重叠区间长度。
为什么要embed?
为了使用向量数据库(轻量级的选择是chroma来搭建数据库)来支持语义检索,需要将文档向量化后存入向量数据库。
如何将InternLM介入Langchain?
感觉这个过程就像是一个智能体接入大模型的notion,LangChain在设计时已经准备好了框架以自定义LLM并且介入,只需要将InternLM部署在本地,封装一个LangChain预留的LLM类,在此调用本地的模型即可。
note:LangChain提供了检索问答链的模板,自动实现知识检索、prompt嵌入、llm回答的流程,如果自己研究这些可能要额外考虑。
note:如果本来配置好了SSH进入远程,第二次却无法登陆,可以考虑将本地user/.shh/ 下的known_hosts 与 know_hosts.old 删除后重试。
RAG问答系统性能局限:
- 检索精度; 可以参考的优化方向:修改基于语义切分而不是机械地基于字符串切分; 为每一个chunk生成概括性索引,检索时匹配索引。
- prompt性能; 可以参考的优化方向:迭代优化prompt策略。
Web Demo部署:
一些建议的web部署框架,大家可能也用到过或者以后需要用到,挤在小本本上:Gradio、Streamlit。
Finetune开发范式:
在新的数据集上再次进行训练微调,增加模型对于这部分信息的适应能力。
优势:个性化微调好,尤其是非可见知识,例如回答风格等。
劣势:finetune仍然需要大量的算力支持训练,同时也不是实时更新要定期重新训练。