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

img

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

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

组件总览

img

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

本篇文章主要介绍LangChain基于AI大模型衍生的新能力,本次课程整体提纲如下:

img

Model I/O -交互而非IO

img

传统的应用开发通常需要定义好输入输出(IO)的格式和规范,例如文本、图像、音频、视频等。这样做的好处是可以保证数据的一致性和可解释性,但也带来了一些限制和不便,例如需要对数据进行预处理和后处理,需要适配不同的设备和平台,需要考虑用户的习惯和偏好等。

LangChain则提供了一种新的方式:Model I/O,即直接与模型进行交互,而不需要关心IO的细节。你可以把它想象成我们日常交流时使用的嘴巴和耳朵。如上图所示,Model I/O有三种类型:

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

Model I/O的核心思想是利用AI大模型强大的自然语言理解和生成能力,将任何形式的输入转换为自然语言,然后将自然语言输入到模型中,得到自然语言的输出,再将自然语言转换为任何形式的输出。这样做的好处是可以简化应用开发流程,提高用户体验,增加应用场景和功能。

如下是一个提供了多个角色对话内容的Model I/O交互示例:

ini复制代码from langchain.prompts import ChatPromptTemplate

template = ChatPromptTemplate.from_messages([
    ("system", "You are a helpful AI bot. Your name is {name}."),
    ("human", "Hello, how are you doing?"),
    ("ai", "I'm doing well, thanks!"),
    ("human", "{user_input}"),
])

messages = template.format_messages(
    name="Bob",
    user_input="What is your name?"
)

Retrieval -检索而非查询

img

传统的应用开发通常需要定义好查询(Query)的格式和规范,例如关键词、标签、分类等。这样做的好处是可以保证查询的准确性和有效性,但也带来了一些限制和不便,例如需要对查询进行规范化和优化,需要适配不同的数据源和接口,需要考虑用户的意图和需求等。

LangChain则提供了一种新的方式:Retrieval,即定义好数据源以及加载方式后,直接从模型中检索(Retrieve)所需的信息,而不需要关心查询的细节。你可以把它想象成语言模型使用搜索引擎来查找相关内容。如上图所示,我们可以将Retrieval的能力划分为以下几个部分:

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

Retrieval是LangChain中最重要的组件之一,它可以让语言模型拥有更丰富和更准确的上下文。Retrieval通过利用AI大模型强大的知识库和语义理解能力,能够将任何形式的查询转换为自然语言,然后将自然语言输入到模型中,得到自然语言的答案,再将自然语言转换为任何形式的输出。

如下是一个MultiQueryRetriever的使用示例:

ini复制代码# Build a sample vectorDB
from langchain.vectorstores import Chroma
from langchain.document_loaders import WebBaseLoader
from langchain.embeddings.openai import OpenAIEmbeddings
from langchain.text_splitter import RecursiveCharacterTextSplitter

# Load blog post
loader = WebBaseLoader("https://lilianweng.github.io/posts/2023-06-23-agent/")
data = loader.load()

# Split
text_splitter = RecursiveCharacterTextSplitter(chunk_size=500, chunk_overlap=0)
splits = text_splitter.split_documents(data)

# VectorDB
embedding = OpenAIEmbeddings()
vectordb = Chroma.from_documents(documents=splits, embedding=embedding)

Memory -记忆而非存储

img

传统的应用开发通常需要定义好存储(Storage)的格式和规范,例如数据库、文件、缓存等。这样做的好处是可以保证数据的安全性和可靠性,但也带来了一些限制和不便,例如需要对数据进行备份和恢复,需要适配不同的存储系统和协议,需要考虑用户的隐私和权限等。

LangChain则提供了一种新的方式:Memory,即直接利用模型的记忆(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的核心思想是利用AI大模型强大的参数和数据容量,将任何形式的数据转换为自然语言,并将其作为模型的输入或输出。这样做的好处是可以简化应用开发流程,提高数据处理速度,增加数据来源和质量。

如下是在链中中使用memory的示例:

ini复制代码from langchain.llms import OpenAI
from langchain.prompts import PromptTemplate
from langchain.chains import LLMChain
from langchain.memory import ConversationBufferMemory


llm = OpenAI(temperature=0)
# Notice that "chat_history" is present in the prompt template
template = """You are a nice chatbot having a conversation with a human.

Previous conversation:
{chat_history}

New human question: {question}
Response:"""
prompt = PromptTemplate.from_template(template)
# Notice that we need to align the `memory_key`
memory = ConversationBufferMemory(memory_key="chat_history")
conversation = LLMChain(
    llm=llm,
    prompt=prompt,
    verbose=True,
    memory=memory
)

总结

本文以传统应用编程设计模式和思维为对比对象,介绍了LangChain基于AI大模型衍生出的三种新的能力:Model I/O、Retrieval和Memory,它们分别解决了传统AI应用开发中遇到的IO、Query和Storage方面的问题和挑战。通过利用这些能力,应用开发者可以开发出更简单、更高效、更创新的AI应用。

通过本文的指导,读者可以迭代在传统应用编程中累积的思维方式和经验,充分利用了AI大模型衍生的新能力的创新应用。

那么,我们该如何学习大模型?

作为一名热心肠的互联网老兵,我决定把宝贵的AI知识分享给大家。 至于能学习到多少就看你的学习毅力和能力了 。我已将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。

一、大模型全套的学习路线

学习大型人工智能模型,如GPT-3、BERT或任何其他先进的神经网络模型,需要系统的方法和持续的努力。既然要系统的学习大模型,那么学习路线是必不可少的,下面的这份路线能帮助你快速梳理知识,形成自己的体系。

L1级别:AI大模型时代的华丽登场

L2级别:AI大模型API应用开发工程

L3级别:大模型应用架构进阶实践

L4级别:大模型微调与私有化部署

一般掌握到第四个级别,市场上大多数岗位都是可以胜任,但要还不是天花板,天花板级别要求更加严格,对于算法和实战是非常苛刻的。建议普通人掌握到L4级别即可。

以上的AI大模型学习路线,不知道为什么发出来就有点糊,高清版可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费

二、640套AI大模型报告合集

这套包含640份报告的合集,涵盖了AI大模型的理论研究、技术实现、行业应用等多个方面。无论您是科研人员、工程师,还是对AI大模型感兴趣的爱好者,这套报告合集都将为您提供宝贵的信息和启示。

img

三、大模型经典PDF籍

随着人工智能技术的飞速发展,AI大模型已经成为了当今科技领域的一大热点。这些大型预训练模型,如GPT-3、BERT、XLNet等,以其强大的语言理解和生成能力,正在改变我们对人工智能的认识。 那以下这些PDF籍就是非常不错的学习资源。

img

四、AI大模型商业化落地方案

img

作为普通人,入局大模型时代需要持续学习和实践,不断提高自己的技能和认知水平,同时也需要有责任感和伦理意识,为人工智能的健康发展贡献力量。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值