【SpringAI】(一)从实际场景入门大模型——适合Java宝宝的大模型应用开发

一、简单场景介绍

假设你需要为一个商城项目接入一个基于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的基本使用。

看完的同学欢迎一起交流,鄙人不才,如果有错误的地方望各位大佬指正!

在这里插入图片描述

祝大家工作顺利,永不被裁!

### SpringAI 集成大规模预训练模型的方法 在Spring AI框架下,集成不带外部依赖的大规模预训练模型意味着要利用本地资源完成部署工作。由于Spring AI主要功能在于作为中介平台来连接不同的AI服务而不是创建这些服务本身[^1],因此对于想要直接嵌入已经训练好的大型模型的情况,开发者可以考虑将该预训练模型转换为可在Java虚拟机(JVM)环境中运行的形式。 种方法是采用ONNX(Open Neural Network Exchange)格式,这是种开放式的神经网络交换协议,支持多种编程语言和机器学习库之间的互操作性。如果目标预训练模型能够被导出至ONNX格式,则可以通过加载这个文件并使用兼容JVM的推理引擎来进行预测任务。例如,Microsoft Cognitive Toolkit (CNTK), TensorFlow, PyTorch等都提供了向ONNX格式转化的功能[^2]。 另外,在某些情况下也可以探索其他轻量级解决方案,比如把Python环境打包进Docker容器并与Spring应用程序交互;或者寻找专门针对特定类型的任务优化过的、可以直接编译成本地代码的小型化版本的深度学习框架/工具集,它们往往更易于移植到不同平台上而不必担心过多额外开销。 ```java // 假设我们已经有了个名为model.onnx 的 ONNX 文件, // 下面是如何在个简单的 Java 应用程序中加载它的例子: import ai.djl.inference.Predictor; import ai.djl.modality.Classifications; import ai.djl.translate.TranslateException; public class OnnxModelPredict { public static void main(String[] args) throws TranslateException { try (Predictor<float[], Classifications> predictor = ModelZoo.loadModel("file:/path/to/model.onnx").newPredictor()) { float[] input = ... ; // 准备输入数据 Classifications result = predictor.predict(input); System.out.println(result); } } } ``` 值得注意的是,尽管上述方案可以在定程度上减少对外部系统的依赖,但在实际应用过程中仍需关注性能瓶颈以及可能存在的技术挑战,如内存占用较大等问题。此外,考虑到安全性和稳定性因素,建议始终评估任何第三方组件的安全风险,并遵循最佳实践指南实施必要的防护措施。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值