所在的位置: html >> html市场 >> ChatGLM部署与Langchain知

ChatGLM部署与Langchain知

(报告出品方:国金证券)

Langchain知识库框架介绍

LangChain是一个围绕大语言模型应用而开发的开源框架,可以将LLM模型、向量数据库、交互层Prompt、外部知识、外部工具整合到一起,允许用户围绕大语言模型快速建立管道和应用程序,直接与ChatGPT或Huggingface中的其他LLM相连,从而在一定程度上弥补模型本身的缺陷,提升用户的使用效率。

对于投研实际应用场景而言,最重要的还是其自由挂载本地知识库的能力,Langchain可以很好地支持用户针对本地文档、数据进行总结、问答。在现有的模型、插件中,用户可以通过上传一篇PDF文档的形式令LLM针对这篇文档进行回答,典型的应用包括可以实现与ChatPDF,AskYourPDF插件等。但这类应用同样面临上传操作繁琐、需要每篇逐个上传的问题。而使用Langchain这一框架,我们可以省去上传文档的步骤,直接将批量文本处理好后在本地进行提问,能够大幅提升使用效率。

如上图中框架结构,用户在使用前需要先将本地各类文件格式进行读取并简单清洗处理,由于受到LLM最大输入token的限制,我们需要根据文本实际情况进行分段处理,得到向量化之后的数据后将其存入本地向量数据库。后续如有新增文本数据,仅需用同样Embedding模型向量化之后添加到向量数据库中即可。用户在针对某些文档相关问题进行提问时,Langchain会使用向量化之后的提问文本与向量数据库中的文本进行相似性搜索,得到相关性最高的K条文档后,将提问和匹配文档嵌入固定的提示模板中,最后对LLM提问得到回复结果。

通过这一流程的实现可以一方面解决模型回答专业度的问题,同时也能省去微调的操作降低我们的使用成本。如下图所示,某开源框架“闻达”可以支持多个大语言模型进行知识库挂载,再匹配合适的数据集后能得到显著强于原模型的回答效果。

Langchain知识库主要模块介绍及应用案例

作为一个功能齐全的开源框架,Langchain内置的多个模块可以协助我们以简便的方式实现上述的整个流程。我们此处针对上述挂载知识库经常用到的模块进行简要介绍:

对于文档加载这一过程而言,我们可以使用的文档类型及其丰富,常见的CSV,PDF,HTML,docs,txt,json等均可以通过对应的模块进行读取。

由于后续需要进行相似性搜索的步骤,我们需要将长文本进行切割,从而能获取到较短的文本段落。Langchain官方提供了几种不同的分割方式,包括CharacterTextSplitter以特定字符分割,RecursiveCharacterTextSplitter可以以递归的形式根据特定的标记符号进行分割,默认使用[“\n\n”,“\n”,“”,“”]四个标记符号。然而上述函数对于文本切割的方式更适合英文的文本语法习惯,我们经过不断尝试,发现使用[“。\n”]更适合用来做中文文本的段落分割,且一般而言段落的长度适中,用来做后续的相似性搜索比较合适。

向量化是对文本处理必不可缺的一步,我们推荐直接使用Huggingface中实际验证效果较好的Embedding模型,针对不同语言的文本也可以适当切换使用。常见的Embedding模型如下:

Langchain同样提供了多个向量数据库的接口封装,包括常见的Faiss,Chroma,Redis等供我们选择。其中Faiss是由Facebook开发的开源数据库,支持CPU和GPU计算,可以处理海量的向量数据库。而Chroma目前只支持CPU计算,相对易用、轻便,但功能相对简单。

Chain和Agent是Langchain框架的核心模块,其中chain可以让我们将多个组件结合在一起创建一个单一的、连贯的任务。用户输入问题后,使用内置的PromptTemplate对其进行格式化,然后将格式化后的响应传递给LLM。我们也可以使用SequentialChain的方式令LLM按一定顺序去执行一系列的任务。Agent则提供了一套代理接口,可以访问一系列指定工具,根据用户的输入确定需要使用哪些工具。

在上例中,我们加载“SerpAPI”的工具,该工具是Google提供的搜索引擎接口。初始化Agent,调用OpenAI的接口并指定ChatGPT作为LLM。可以发现当我们输入需要联网搜索才能回答的提问时,Agent会帮我们自动调用合适的工具,对搜索结果进行判断并整理,最终反馈合适的回答内容。

而Agent之所以能够自己分析问题,选择合适工具并最终解决问题,其背后原理来自于ReAct框架。根据Yao的观点,人类行为和推理之间的协同关系是一个学习新知识、做出决策并执行的过程,而大语言模型同样可以通过一定的设计达到能够逻辑推理(Reasoning),构建完整系列行动(Act),最终达成预期目标的效果。

在上图中,我们将国金证券研报《机器人vs汽车系列报告(三):机器人带来全新机遇,轴承初步具备国产化能力》向量化后,利用ReAct框架针对研报中提到的轴承制造龙头企业相关问题进行提问。发现Agent能够准确识别完成该任务所需的工具,首先调用我们定义的信息查询工具在报告中准确找到了两家龙头制造企业,再调用数学计算工具将市场占有率求和得到了问题答案。这一自主完成任务识别、任务拆解、寻找工具、解决问题并最终回答的模式正是Langchain框架Agent的强大之处。

主流开源大语言模型对比

随着ChatGPT推出之后受到的广泛


转载请注明:http://www.aierlanlan.com/rzdk/5955.html