首页 > 其他分享 >LangChain大模型应用开发指南-AI大模型衍生的新能力

LangChain大模型应用开发指南-AI大模型衍生的新能力

时间:2023-10-03 13:31:48浏览次数:36  
标签:AI 模型 LangChain 对话 组件 可以

LangChain大模型应用开发指南-AI大模型衍生的新能力

上节课,我以传统应用编程设计模式和思维为入口和对比对象,介绍了LangcChain中的Chain、Agent、Callback三大核心概念,并整理了LangcChain为众多开发者内置的能力与工具。没有看过的小伙伴可以点击链接查看:

大模型OpenAI标准接口封装

今天我将为大家介绍LangChain基于AI大模型衍生的新能力,Model I/O、Retrieval、和Memory。

组件总览

大家看完今天的文章后,可以回头再来看下LangChain的组件与架构图,就能从全局的角度基本理清LangChain的组件与抽象层以及它们之间的相关联系。

本篇文章主要从传统编程出发,LangChain基于AI大模型衍生的新能力,本次课程整体提纲如下:

Model I/O

Model I/O是LangChain中最基本的组件,它负责与语言模型进行输入输出。你可以把它想象成语言模型的耳朵和嘴巴,它可以听取用户或其他组件的请求,并根据请求生成相应的回答。Model I/O有三种类型:

类型 作用
Prompts 用于向语言模型提供输入的模板,它们可以定义输入变量,输出格式,部分变量等,以便生成符合用户需求的文本
Language models 用于人工智能模型的参数自定义,它们可以根据不同的参数(如温度,最大长度,前缀等)产生不同风格和内容的文本
Output parsers 用于将语言模型的输出解析为更结构化的信息的类如JSON、XML

Model I/O是我们通过LangChain与大模型交互的最基础但也是最为核心的组件,基于Model I/O,我们就能很轻松的构建出一个基础人机对话的工具界面。现在各行各业让人眼花缭乱的AI工具,可能拆解到最后,你会发现其实只是由一个个预定义好的Prompts组合形成的。

Retrieval

Retrieval是LangChain中用于从外部来源获取上下文的组件,它可以帮助语言模型获得更多的信息和知识。

你可以把它想象成语言模型使用搜索引擎来查找相关内容。如上图所示,我们可以将Retrieval的能力划分为以下几个部分:

能力 作用
Document loaders 从不同的来源加载文档,支持多种文档类型和位置
Document transformers 对文档进行变换,提取相关的部分,分割成小块
Text embedding models 为文档创建语义嵌入,实现快速有效的相似度搜索
Vector stores 存储和检索嵌入向量,支持多种数据库类型和接口
Retrievers 从数据库中检索数据,支持多种检索算法和优化方法

Retrieval是LangChain中最重要的组件之一,它可以让语言模型拥有更丰富和更准确的上下文。你可以使用不同类型的Retrieval来适应不同类型的外部来源,也可以自定义Retrieval来实现特定的功能。

Memory

Memory是LangChain中用于存储和更新上下文的组件,它可以让语言模型记住之前的信息和状态。你可以把它想象成语言模型的大脑,它可以存储短期记忆和长期记忆。根据不同的使用场景,LangChain内部定义的Memory有以下类型:

类型 作用
Conversation Buffer 用于存储对话中的所有消息和元数据的内存,它可以返回一个列表,包含对话中的每个消息和其相关的信息,如发送者,接收者,时间戳等
Conversation Buffer Window Entity 用于从对话缓冲区中提取特定窗口大小内的实体的内存,它可以返回一个字典,包含窗口内出现的实体及其频率,类型和位置
Conversation Knowledge Graph 用于构建和更新对话中涉及的实体和关系的知识图谱的内存,它可以返回一个图结构,包含节点(实体)和边(关系),以及一些统计信息,如图的大小,密度,聚类系数等
Conversation Summary 用于生成对话的摘要的内存,它可以返回一个字符串,包含对话的主要内容和目标
Conversation Summary Buffer 用于存储对话摘要的内存,它可以返回一个列表,包含对话摘要的每个句子和其相关的信息,如生成时间,置信度等
Conversation Token Buffer 用于存储对话中的所有单词和标点符号的内存,它可以返回一个列表,包含对话中的每个单词或标点符号及其相关的信息,如词性,命名实体类型等
Vector Store 用于将对话中的文本或实体转换为向量表示,并进行相似度计算或聚类分析的内存,它可以返回一个矩阵,包含对话中每个文本或实体的向量表示,以及一些度量值,如余弦相似度,欧氏距离等

Memory是LangChain中最有用的组件之一,它可以让语言模型具有持久性和一致性。你可以使用不同类型的Memory来适应不同类型的上下文,也可以自定义Memory来实现特定的功能。

总结

本文以传统应用编程设计模式和思维为入口和对比对象,介绍了LangcChain中的Chain、Agent、Callback三大核心概念,并整理了LangcChain为众多开发者内置的能力与工具。

通过本文的指导,读者可以迁移在传统应用编程中累积的思维方式和经验,快速入门掌握AI应用编程。

下一节课我们将着重讲解,LangChain架构在传统应用开发基础上通过AI大模型衍生出的新能力,请大家持续关注。

标签:AI,模型,LangChain,对话,组件,可以
From: https://blog.51cto.com/u_13279124/7692603

相关文章

  • 大模型量化3
    https://huggingface.co/blog/4bit-transformers-bitsandbytes 1. 8位float TheFP8(floatingpoint8)formathasbeenfirstintroducedinthepaper “FP8forDeepLearning” withtwodifferentFP8encodings:E4M3(4-bitexponentand3-bitmantissa)and......
  • redis7源码分析:redis 多线程模型解析
    多线程模式中,在main函数中会执行InitServerLastvoidInitServerLast(){bioInit();//关键一步,这里启动了多条线程,用于执行命令,redis起名为IO线程initThreadedIO();set_jemalloc_bg_thread(server.jemalloc_bg_thread);server.initial_memory_usage=......
  • redis7源码分析:redis 单线程模型解析,一条get命令执行流程
    有了下文的梳理后redis启动流程再来解析redis在单线程模式下解析并处理客户端发来的命令1.当clientfd可读时,会回调readQueryFromClient函数voidreadQueryFromClient(connection*conn){client*c=connGetPrivateData(conn);intnread,big_arg=0;size_......
  • 聊聊基于Alink库的随机森林模型
    概述随机森林(RandomForest)是一种集成学习(EnsembleLearning)方法,通过构建多个决策树并汇总其预测结果来完成分类或回归任务。每棵决策树的构建过程中都引入了随机性,包括数据采样和特征选择的随机性。随机森林的基本原理可以概括如下:随机抽样训练集:随机森林通过有放回抽样(Boots......
  • python 机器学习 继续训练模型
    您可以使用以下方法反复训练机器学习模型:增量学习:这是一种在现有模型上继续训练的方法。在增量学习中,您可以将新数据集与现有数据集合并,然后使用这些数据重新训练模型。这种方法的优点是可以避免从头开始训练模型,从而节省时间和计算资源。但是,需要注意的是,如果新数据与旧数据有很大......
  • LINUX:FAILED: Execution Error, return code 2 from org.apache.hadoop.hive.ql.exec.
     如图,问题表现为linux中可直接通过hive进行数据插入但在通过datagrip却更改不了此时,可能时yarn的运行分配的内存较少,或堆内存溢出。在yarn-site.xml中更改,以及mapred-site.xml中更改,完成。yarn的<property><name>yarn.scheduler.minimum-allocation-mb</name>......
  • 科技云报道:AI大模型终于走到了数据争夺战
    当前,大模型正处在产业落地前期,高质量的数据,是大模型实现产业化的关键要素。最近,一项来自EpochAIResearch团队的研究抛出了一个残酷的事实:模型还要继续做大,数据却不够用了。研究人员预测了2022年至2100年间可用的图像和语言数据总量,并据此估计了未来大模型训练数据集规模的增长趋......
  • vscode 配置 python 中快捷输入 if __name__ == '__main__':
    vscode不会像pycharm可以代码自动联想出 if__name__=='__main__': 操作点击左下角齿轮按钮——用户代码片段  然后输入python搜索出现python.json 然后将一下代码输入后重启就可以了 代码如下:"Printtoconsole":{"prefix":"main","body":[......
  • Llama2-Chinese项目:3.2-LoRA微调和模型量化
      提供LoRA微调和全量参数微调代码,训练数据为data/train_sft.csv,验证数据为data/dev_sft.csv,数据格式为"<s>Human:"+问题+"\n</s><s>Assistant:"+答案。本文主要介绍Llama-2-7b模型LoRA微调以及4bit量化的实践过程。1.LoRA微调脚本  LoRA微调脚本train/sft/finetune_lora......
  • 「闲话随笔」Yubai 数数
    「闲话随笔」Yubai数数点击查看目录目录「闲话随笔」Yubai数数AmazingCountingproblem!国庆快乐!可是已经开学了,奥赛生只配放7+3=2-.衡实初中部为啥没有集训啊?可能是因为以前机房在衡实只能去衡实集训,所以就把初中带上了吧,本来不会集训的.诶不对好像是不是初......