LLM 的局限性
知识时效性受限:如何让LLM能够获取最新的知识 专业能力有限:如何打造垂域大模型 定制化成本高:如何打造个人专属的LLM应用
两种大模型开发范式
RAG(给LLM外挂知识库,提问后找到相关的文档,将文档和问题一起输入模型): 低成本、可实时更新、受基座模型影响大、单次回答知识有限
Finetune(在较小训练集上进行轻量训练微调,提升在新数据即上的性能): ****可个性化微调、知识覆盖面广、成本高昂、无法实时更新
1.将输入的文本向量化
2.在向量知识库中匹配相似文本段,因为默认与问题相似文本段,包含问题的答案。
3.将用户输入文本和相似文本段一起嵌入到模型Prompt中,传递给InternLM
LangChain 框架是一个开源工具,通过为各种 LLM 提供通用接口来简化应用程序的开发流程,帮助开发者自由构建 LLM应用。
LangChain 的核心组成模块:链 (Chains)—将组件组合实现端到端应用,通过一个对象封装实现一系列LLM 操作 e.g.检索问答链,覆盖实现了 RAG(检索增强生成) 的全部流程,如图
Tips: ①unstructed loader加载本地文档local documents,将不同格式的本地文档转化为纯文本格式 ②text splitter将提取出的纯文本分割成chunks ③通过sentence transformer将文本段转化为向量格式,存储到基于chroma的向量数据库中 ④对于用户的输入Query,通过sentence transformer将输入转化为同维度向量,在向量数据库中进行向量相似度匹配,找到和用户输入相关的文本段 ⑤将相关文本段嵌入到写好的Prompt template中,交给InternLM
构建向量数据库
将 InternLM 接入 LangChain
构建检索问答链
RAG方案优化建议
<aside> 💡 **Web demo部署流程: ▶所用开发机::单卡A100(1/4)
▷ 搭建知识库:**环境配置、知识库搭建、InternLM接入Langchain、构建检索问答链、部署Web Demo
ref: https://github.com/InternLM/tutorial/blob/main/langchain/readme.md
</aside>