langchain
基本概念
langchain是一种专门用于文本分析的先进链式处理工具,在如今这个数据爆炸式增长的时代,很多复杂的数据难以得到处理,而如果以人为的方式去处理,所需要耗费的人力,物力以及时间成本有太大,得不偿失。
langchain可以为用户提供友好的可视化交互式界面和高度定制化的分析选项,降低了操作的难度和对专业能力的要求。同时由于其在数据处理和分析方面的创新性,其是在机器学习和数据分析的技术基础上诞生的,能够更好地理解和分析文本。
基本原理
数据输入:通过手动输入,文件上传,数据库连接等方式将数据输入到模型中,针对特点不那么突出的数据,还可以进行数据增强的操作(通过已有的样本,生成类似的,多样化的样本,比如“happy”,生成“joyful”,甚至可以引申为“joke”)。
数据分析:通常分为文本分类、情感分析(分析文本是正面的还是负面的)、主题建模(为信息概括出主题)这三类。根据文本的类别和需求,选用不同的方法进行分析,人为微调(人为地去检查模型处理是否有问题),
数据导出:根据数据的特点,选择能够彰显其数据特性的形式,比如图表(突出数据之间的多与少),文本报告(详细说明数据的分析过程与结果,偏推理,理论方面),互动的界面(比如流程图,亦或者是多种数据排列组合有不同效果的)。
优化
除了基本的输入、分析和输出之外,langchain还有很多用于性能优化的功能。
回调系统(callbacks):记录每次 LLM 调用的输入/输出,即使内容是很久以前的,也可以通过输入回忆相关的字眼让模型帮你回溯;
子链(sub-chains):将复杂的任务拆分为一个个紧密联系的流程,可能A子链的输出是B子链的输入,也有可能是A、B并行去影响C,尽可能地将复杂任务的细节分析清楚;
异步处理:并行多个任务,但并不跟子链一样,这个强调的是类似于电路中的并联,避免了顺序等待,在批量处理数据或者有网络延迟时,不至于让其因为客观原因影响进程;
对抗提示注入:用于检测某些有恶意或者其他意图的提示词,一般用于AI客服,小助手等,主要是为了过滤敏感信息(密钥,数据库密码,个人信息);
自主agent:在接收到任务时,会自动拆解,无需在给出意见或者任务过于复杂时才处理,比如把将“写一份市场报告”拆解为“搜索数据→分析→生成图表→汇总”,且会在每个action之后对结果进行评估形成反馈,尤其是在涉及到使用工具的场景下更突出,能够明显地看到模型选择不同工具的结果以及筛选的过程。
从基本原理到优化,其实我们能看到这些方法都在说明一个点:理清思路,明确需求在使用大模型的过程中尤为重要,大模型会节省我们搜索和学习的时间和成本,但是对于项目的了解和如何解决,确实我们自己要思考的,即便连入了专业的知识库,模型也只能根据给出的知识提供方向,我们要重视如何在跟AI的互动中找到问题,让AI这面“镜子”好好发挥它的作用。