用户可以利用LangChain的模块来改善大语言模型的使用,通过输入自己的知识库来“定制化”自己的大语言模型。
LLM(大语言模型) 是一项变革性的技术,它将人类的各类知识和逻辑能力打包进入了一个体积庞大的模型当中。
但是通常来说,包括当前公认效果最好的LLM GPT-4都会有一个问题——事实问题错误,也常被称之为幻觉。幻觉(Hallucination),或者说人工智能幻觉是人工智能的自信反应。
当模型输出欺骗性数据的倾向时,其使用的的训练数据并不能证明输出的合理性。人工智能幻觉的危险之处之一是模型的输出看起来是正确的,其实它本质上是错误的。
基于这种前提条件下,若是直接将LLM利用于生产环境中(例如客服答疑,新形式文档等)时,那么事实幻觉就可能会造成极其严重的影响。
但是通过LangChain,我们可以通过将其它计算资源和自有的知识库结合。依托于当前的各类产品,在整合了当前的语料资源库后,各类LLM都会进入到一个新的实用化发展阶段。
01 LangChain介绍
LangChain是一个用于开发基于语言模型的应用程序开发框架。总的来说,LangChain是一个链接面向用户程序和LLM之间的一个中间层。
它在 2023 年 3 月获得了 Benchmark Capital 的 1000 万美元种子轮融资,在近期又拿到了红杉2000-2500万美金的融资,估值已经提升到了2亿美金左右。
LangChain 可以轻松管理与语言模型的交互,将多个组件链接在一起,并集成额外的资源,例如 API 和数据库。其组件包括了模型(各类LLM),提示模板(Prompts),索引,代理(Agent),记忆等等。
当前GitHub上的热门项目Auto-GPT和Babyagi所使用的链式思考能力都是由LangChain启发而来。
LangChain项目主页图
02 LangChain工作流程
本次重点介绍LangChain搭配自有的知识库让LLM发挥更大功能的流程。
在缺少了上下文的情况下,即使是目前公认最顶级的LLM GPT-4也无法回答部分需要特定领域的知识。
而要是想仅用自有知识库来训练出LLMs又是不可能的,这个时候最好的方法就是利用LangChain的模块来改善LLM的使用,通过输入自己的知识库来“定制化”自己的LLM。
Question Answering over specific documents是一个写在LangChain主页的主推功能。翻译过来就是 基于特定文档的问答 。
1.准备自定义数据
准备好需要LLM学习的内容,它可以是一个纯文本文件或者其他类型的文本(不同类型的文本需要不同的文档加载器)。
2.拆分文档
一般来讲,每个文档都是由复杂长短句、多种语法结合写作而成的。在进行输入之前,就必须对这些文字进行解构处理。
对于英文LangChain一般会使用
RecursiveCharacterTextSplitter处理。由于中文的复杂性,会使用到jieba等处理工具预处理中文语句。3.文本嵌入(Embeddings)
处理完文本之后,就可以对文本进行嵌入(Embeddings)了。通过调用OpenAI的Embeddings API将文本向量化。在这步处理之后,文本就已经不再是文字,而是以向量化存储的信息。
再使用一个开源的Embeddings数据库ChromaDB保存Embeddings数据,就可以达到使用数据长期存储和快速调用。
图:将原文本嵌入
4.使用链(Chain)对矢量数据库进行问答
在拥有了嵌入数据之后,我们就可以利用LangChain的强大链功能来执行我们的问答。这时就可以通过自然语言对于文档内容进行提问了。
通过LangChain回答问题/完成任务
03 LangChain可能的应用场景
当前的AI热潮吸引了很多人,而除了ChatGPT这类问答还有New Bing这种搜索服务外,并没有什么可以将LLM商业化的案例。甚至可以说只有New Bing才是目前唯一一个成功的商业化案例。
LangChain为所有人提供了一个新的商业化方案。此前有将LLM导入客服软件中应用的方案,但是由于LLM容易出现事实幻觉而无法实施。
同时,将所需内容通过Prompt导入LLM的想法也由于LLM的对话(Context)输入限制而不可能实施。LangChain则通过将数据向量化避免了使用输入限制,从而将所需内容导入LLM进行问答。
当下的人工成本逐渐提升,例如淘宝客服等人工密集型产业的成本逐步提升。当前的智能问答距离可用仍有较远的距离。
通过已经预训练好的LLM是一个快速降本增效的方案。基于每个产品的数据,可以将数据引入LLM中,让LLM接替客服工作,准确、快速的回答客户的定制化问题,同时语气贴合自然口吻,避免了情绪化工作。
基于文档的工作还可以在各类公司培训和智能化文档方面提供作用。很多产品文档随着时间的积累变得越来越复杂,多层跳转也会让人学习起来效率低下且不适。
此时基于LangChain就可以将文档重新梳理,输出为大纲类,在使用的时候可以随时通过问答的形式将内容输出。类似于新员工培训和产品说明书等等场景都可以有所应用。这就极大的拓宽了文字类LLM的使用场景。
基于LangChain的问答
除了直接与人交互的方面外,还可以导入特定领域的知识库,实时更新LLM的内容,让LLM的知识时刻处于最新的状态。依赖于此,LangChain除了可以完成自然语言文档搜索外,还可以基于及时的资源进行快速开发。
导入资源后LangChain开发出的网页
04 当前LangChain的局限性
目前,由于整个AI生态还处于一种快速发展期,各类工具和平台还没有完全成熟,因此LangChain的各类链和模块的定制性和功能都还不够强大。对于有高性能场景需求和定制化任务的可能需要自己重新修改。
事实合法性也是未来需要解决的一个痛点。LLM的各类越狱层出不穷。虽然在引入了嵌入之后LLM只会对文档内容进行问答,但是仍然需要有一套额外的监督系统防止出现任何非法的回答。
同时当前LangChain还有使用难度较高等问题。目前的各类AI工具都面临着普通用户无法轻松驾驭等等的问题,而LangChain的问题更盛。
普通产品或者开发者的上手学习成本较高,使用起来难度很大。这一切都需要社区和商业资本的共同投入才有可能解决。
05 结语
LangChain是当前众多的AGI实验性工具的基石项目。基于链(Chain)的LLM调用思维势必会贯穿未来LLM的发展生态。
提前关注AI发展动向,关注LangChain的开发进度,会对未来的AI应用落地有极大的帮助。