一、简单场景介绍
假设你需要为一个商城项目接入一个基于SpringAI的智能客服系统
,现在我们来基本模拟一下:
当我通过系统提问,大模型会针对我的问题进行回答。
当我们通过程序提问时,SpringAI会将我们的提问封装成Prompts
,即提示词
,最终通过Json的格式,发送给基础大模型,并且基础大模型基于我们的提问进行回答。
那么什么是提示词呢?
二、Prompts-提示词
从概念角度上来说,提示词是用于引导语言模型生成特定响应的输入文本。它们可以是问题、指令或上下文,帮助模型理解用户的意图。
上面的场景中,“请一句话介绍一下GPT大模型”,就是一句提示词。简单得说,我们向GPT输入的任何内容都能够作为Pr提示词。
三、RAG-检索增强生成
上面的场景中,我们让GPT介绍一下大模型,看起来GPT大模型为我们解答了。那么如果我换个问题呢?
这下给GPT整不会了,因为GPT并没有我们想要的订单信息
。但是它不会摆烂,也不会报错,依然会给我们的答复:
虽然GPT给了我们回答,但是答案依然不是我们想要的,那应该怎么办呢?接下来就要介绍一下RAG-检索增强生成
3.1 什么是RAG
RAG(Retrieval-Augmented Generation,检索增强生成)是一种结合“搜索”和“生成”的技术,旨在让大模型在回答问题时更加准确和有用。
那针对我们场景中订单的问题,是如何通过RAG解决的呢?
这个时候我们需要,明白RAG中两个关键点:知识库
和 向量数据库
3.2 知识库
知识库
是存储大量信息的地方,类似于一个大数据库,里面包含文档、文章、网页等内容。在我们商城智能客服中,知识库可以包含我们的用户信息、订单信息
等。
3.3 向量数据库
在RAG(检索增强生成)系统中,向量数据库
是一种专门用来存储和快速检索文本向量的数据库
。这里的向量是由知识库中的文档或者文档片段转换而来。而文档转化为向量这个步骤叫做Embeddings
3.4 RAG运行流程
当我们引入了RAG之后再来看看它在我们当前场景中是如何解决问题的。
简单得来说,当我要查询10086的订单号时候,RAG会在向量数据库中帮我查找到满足条件的订单信息
,并且把我问的原始问题和找到的订单信息组成新的Prompts
发送给大模型,之后大模型再进行回答。
四、FineTunuing-微调
回到我们的场景,我们已经通过RAG解决了知识库的问题。但是,仍然有些地方我们可能不满意。比如我们想让大模型回复答案的语气更加贴近我们的真实客服语气。比如每句话之前增加一个“亲”,或者每句话末尾增加一个“呢”。
总而言之,让大模型的答案更加贴近专业领域
,让大模型更加垂直
。这也是我们FineTuning-微调
的目的。
一般来说,微调都是基于一个通用大模型
(如GPT),使用特定任务的数据集对模型进行进一步训练。
注意,微调后大模型相较于原来会发生改变
,也就是让微调的大模型会更加适合我们特定的领域。
比如,我通过真实的客服对话对通用大模型进行微调,那么训练出来的大模型的回答就会更加贴近客服领域。
五、Function-call
接着上面的场景~
现在商城搞一个活动,只要用户下单后可以根据支付后的订单号进行抽奖
。也就是说,我告诉大模型我的订单号后,会返回一个奖品。这要怎么做到呢?这个时候就要用到Function-call,函数调用
。
当我们定义好我们通过订单号进行抽奖的API之后,大模型会根据用户的提问进行判断
,如果需要则请求API
,拿到结果会再次根据结果生成对应的Prompts发送给大模型,最终返回给用户。流程如下:
大模型一点点基本概念就介绍完了,后面会介绍SpringAI的基本使用。
看完的同学欢迎一起交流,鄙人不才,如果有错误的地方望各位大佬指正!