《程序员的AI开发第一课》阅读笔记
LLM基础
LLM 即 Large Language Model,是一种基于深度学习的自然语言处理模型。它可以通过学习大量的文本数据,来生成类似人类的文本。
根据输入的文本,去预测下一个词(Token)的概率,然后再根据概率再来生成下一个词,以此类推,就可以生成类似人类的文本。
如果每次都采用概率高的来生成的话,那么相同的输入,生成的文本就会是相同的。
为了避免这种情况,有一个温度Temperature的概念,如果温度越小,那么生成的文本就会越保守,如果温度越大,那么生成的文本就会越跳跃。
LLM的工作简单描述就是:一次添加一个Token。
提示词和提示工程
LLM会有很多个参数,参数哪怕是微调都会得到不一样的结果。所以想要用好AI,需要学会如何提问。
首先要明确自己提问的目的,其次是要有明确的上下文,最后是对输出结果的要求。满足这三点,基本就能得到满意的结果。
当然,这三点并不是必须的,可以根据提问的需求来调整。最核心的就是表达清楚自己的问题,以及上下文的描述。
提示工程
提示工程的主要目的就是引导大模型能给出更好的答案。
LangChain
是一个开发框架,可以用来开发各种基于LLM的应用。
提供了构建大模型应用的基础抽象和LangChain表达式语言。
是否需要LangChain:
- LangChain有模型抽象,你的需求是否需要这个功能?
- LangChain自带记忆存储的抽象,是否需要该功能?
- 提示词模板是否需要?
- ...
更重要的是,LangChain不仅是一个开发框架,更是一个生态系统
核心抽象
ChatModel:整个框架的核心,根据输入内容进行输出。PromptTemplate:提示词模板,处理输入内容。可以区分开发者提示词和用户提示词OutputParser:负责处理输出内容。
RAG Retrieval-Augmented Generation
大模型训练的数据决定了AI的应用场景,比如别家公司训练时是不可能拿你的数据来训练的,所以想要扩展AI的“知识面”,可以有两种方案:
- 模型微调:使用你的业务信息对模型进行微调
RAG:使用你的业务信息对模型进行扩展,将你的业务信息作为上下文让大模型知道。
相比来说RAG的成本更低、也更加灵活、也更简单一点。
全称:Retrieval-Augmented Generation。检索增强生成。
主要步骤就是:将业务内容转化为检索内容,然后将检索增强到提示词中,最后再去内容生成。
- 用户发起请求
- 根据用户问题在相关资料中搜索
- 获取到资料中的相关信息
- 将相关信息和用户问题一起作为提示词,让大模型生成答案
- 返回答案
如果才能在资料中准确找到用户需要的呢?一般来说都是通过数据库查询,但是只能匹配字符串,并不能匹配语义。
所以通过向量数据库来进行匹配。
向量和向量数据库
通过将文本转化为向量,然后将向量存储在向量数据库中,就可以通过向量数据库来进行匹配。
NOTE
简单理解向量:红色是1,绿色是2,蓝色是3,那么红色的向量就是[1,0,0],绿色的向量是[0,1,0],蓝色的向量就是[0,0,1]。
转成向量之后,语义的匹配就变成了向量之间的相似程度,自然就有很多办法来进行语义的匹配。
将文本转为向量的过程称为:Embedding。当然现在有很多种Embedding的方法,比如:Word2Vec、BERT、GPT等。
文本从何而来?从指定的资源中来,可以是文本、图片、视频、音频等,然后根据需要提取不同的信息,还需要将信息分块,最后才是将分块后的文本转成向量。
提取信息的过程称为检索
文本转成了向量,下一步就是要将这些向量存储起来,存储的地方就是向量数据库。
将信息存到向量数据库的全过程称为索引。
Agent
是人工智能领域的一个重要概念,往往称他为智能代理(Intelligent Agent),简称为Agent。
Agent到底是什么?
简单来说,就是可以感知外界环境,将接收到的信息进行处理,然后做出决策的智能系统。
只要满足:能通过传感器感知外界,并通过执行器反作用于外界。都可以称为Agent智能体。
但是人工智能领域的Agent,还必须要求能自主做出决策。