AI大模型应用开发技术架构和技术选型 - 努力-

news/2025/11/7 22:38:22/文章来源:https://www.cnblogs.com/kongsq/p/19201083

  一、 技术架构


  目前,大模型应用开发的技术架构主要有四种。

 ad65d99c3f6842dc9d6eba487a10c25f

 

  1.1 纯Prompt模式


  不同的提示词能够让大模型给出差异巨大的答案。

  不断雕琢提示词,使大模型能给出最理想的答案,这个过程就叫做提示词工程(Prompt Engineering)。

  很多简单的AI应用,仅仅靠一段足够好的提示词就能实现了,这就是纯Prompt模式。

  其流程如图:

 76fc4a81a35247d2944989e824636dfd

 

  1.2 FunctionCalling


  大模型虽然可以理解自然语言,更清晰弄懂用户意图,但是确无法直接操作数据库、执行严格的业务规则。这个时候我们就可以整合传统应用于大模型的能力了。

  简单来说,可以分为以下步骤:

  1.我们可以把传统应用中的部分功能封装成一个个函数(Function)。
  2.然后在提示词中描述用户的需求,并且描述清楚每个函数的作用,要求AI理解用户意图,判断什么时候需要调用哪个函数,并且将任务拆解为多个步骤(Agent)。
  3.当AI执行到某一步,需要调用某个函数时,会返回要调用的函数名称、函数需要的参数信息。
  4.传统应用接收到这些数据以后,就可以调用本地函数。再把函数执行结果封装为提示词,再次发送给AI。
  5.以此类推,逐步执行,直到达成最终结果。
  流程如图:

 

 624b5a2610b94103a3b6277872c406e1

 

  注意:

  并不是所有大模型都支持Function Calling,比如DeepSeek-R1模型就不支持。

 

  1.3 RAG


  RAG(Retrieval**-Augmented Generation)叫做检索增强生成简单来说就是把信息检索技术大模型**结合的方案。

  大模型从知识角度存在很多限制:

    时效性差:大模型训练比较耗时,其训练数据都是旧数据,无法实时更新。
    缺少专业领域知识:大模型训练数据都是采集的通用数据,缺少专业数据。


  可能有同学会说, 简单啊,我把最新的数据或者专业文档都拼接到提示词,一起发给大模型,不就可以了。

  同学,你想的太简单了,现在的大模型都是基于Transformer神经网络,Transformer的强项就是所谓的注意力机制。它可以根据上下文来分析文本含义,所以理解人类意图更加准确。

  但是,这里上下文的大小是有限制的,GPT3刚刚出来的时候,仅支持2000个token的上下文。现在领先一点的模型支持的上下文数量也不超过 200K token,所以海量知识库数据是无法直接写入提示词的

  怎么办呢?

  RAG技术正是来解决这一问题的。

  RAG就是利用信息检索技术来拓展大模型的知识库,解决大模型的知识限制。整体来说RAG分为两个模块:

  检索模块(Retrieval):负责存储和检索拓展的知识库
    文本拆分:将文本按照某种规则拆分为很多片段
    文本嵌入(Embedding):根据文本片段内容,将文本片段归类存储
    文本检索:根据用户提问的问题,找出最相关的文本片段
  生成模块(Generation):
    组合提示词:将检索到的片段与用户提问组织成提示词,形成更丰富的上下文信息
    生成结果:调用生成式模型(例如DeepSeek)根据提示词,生成更准确的回答
  由于每次都是从向量库中找出与用户问题相关的数据,而不是整个知识库,所以上下文就不会超过大模型的限制,同时又保证了大模型回答问题是基于知识库中的内容,完美!

  流程如图:

 b1682033b12b438cb2ad5bb76fda6837

 

  1.4 Fine-tuning


  Fine-tuning就是模型微调,就是在预训练大模型(比如DeepSeek、Qwen)的基础上,通过企业自己的数据做进一步的训练,使大模型的回答更符合自己企业的业务需求。这个过程通常需要在模型的参数上进行细微的修改,以达到最佳的性能表现。

  在进行微调时,通常会保留模型的大部分结构和参数,只对其中的一小部分进行调整。这样做的好处是可以利用预训练模型已经学习到的知识,同时减少了训练时间和计算资源的消耗。微调的过程包括以下几个关键步骤:

  选择合适的预训练模型:根据任务的需求,选择一个已经在大量数据上进行过预训练的模型,如Qwen-2.5。
  准备特定领域的数据集:收集和准备与任务相关的数据集,这些数据将用于微调模型。
  设置超参数:调整学习率、批次大小、训练轮次等超参数,以确保模型能够有效学习新任务的特征。
  训练和优化:使用特定任务的数据对模型进行训练,通过前向传播、损失计算、反向传播和权重更新等步骤,不断优化模型的性能。


  模型微调虽然更加灵活、强大,但是也存在一些问题:

    需要大量的计算资源
    调参复杂性高
    过拟合风险


  总之,Fine-tuning成本较高,难度较大,并不适合大多数企业。而且前面三种技术方案已经能够解决常见问题了。

  那么,问题来了,我们该如何选择技术架构呢?

  二、 技术选型


  从开发成本由低到高来看,四种方案排序如下:

  Prompt < Function Calling < RAG < Fine-tuning

  所以我们在选择技术时通常也应该遵循"在达成目标效果的前提下,尽量降低开发成本"这一首要原则。然后可以参考以下流程来思考:

d2f95f17136c47bb84f46d53bf24907f

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/959241.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

一个名为 LVGL for Visual Studio 的项目

https://github.com/lvgl/lv_port_pc_visual_studio这是一个名为 LVGL for Visual Studio 的项目,用于在 Windows PC 上尝试和开发 LVGL(Light and Versatile Graphics Library)图形用户界面库。这是一个预配置的 …

Java程序员该如何快速上手LLM应用开发呢?

本文针对Java开发者如何快速上手LLM应用开发给出指导,核心观点是无需转语言,可利用现有技术栈高效构建企业级LLM应用。文章介绍了从底层API到企业级解决方案的技术栈,核心开发模式,四步实战流程及常见陷阱规避建议…

困哉。困哉。别困了!总结

总结自:这篇帖子 困难 晚上早点睡 神秘含薄荷油眼药水 去药店买一点鼻吸的薄荷提神小药水 中等 黑色包装荷氏很劲 靠紧张激素 简单 穿少点去跑步吹风 喝点浓茶 一直做或者理解 OI 题目,做一下子题 睡爽了再起来想题 …

解决GitHub大文件推送错误:彻底清理PDB资料并配置.gitignore

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

经典欧拉角与泰特布莱恩角

一、欧拉角分类欧拉角按照旋转轴分为经典欧拉角(Proper Euler Angle)和泰特布莱恩角(Tait–Bryan angles),共 12种旋转方式: 经典欧拉角-Proper Euler angles (z-x-z, x-y-x, y-z-y, z-y-z, x-z-x, y-x-y)使用两…

如何提高 SaaS 产品的成功率?

很多人在做 SaaS 产品的时候,上来就进行产品的开发。结果很可能是自己熬了无数个通宵,但是产品上线后却无人问津。 为什么?因为方向错了。 想要提高 SaaS 产品的成功率,我们千万不能一上来就开发产品,而是要先找到…

详细介绍:识别含地理信息的 PDF作为底图在 Mapbox GL项目中使用

详细介绍:识别含地理信息的 PDF作为底图在 Mapbox GL项目中使用pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "C…

2024 暑期模拟赛 #6

100 + 20 + 60 + 0 = 180, Rank 1/6.逆天模拟赛。题的质量是挺好的,但是你 要不只给最后一个点的大样例 要不只给第一个点的大样例 要不直接不给大样例 什么意思,甚至还有个大样例由若干个 ਰ 字符和 ਱ 字符构成,足…

使用CSS和GSAP创建3D滚动驱动文本动画

本教程详细讲解如何使用CSS、GSAP和ScrollTrigger插件创建三种高性能3D滚动文本动画效果,包括圆柱体、双圆环和隧道动画,涵盖数学计算、响应式设计和性能优化。使用CSS和GSAP创建3D滚动驱动文本动画 本教程将指导您使…

Apifox接口测试工具简介 - 努力-

Apifox接口测试工具简介Apifox简介。一、Apifox介绍 介绍:Apifox是一款集成了Api文档、Api调试、Api Mock、Api测试的一体化协作平台。 作用:接口文档管理、接口请求测试、Mock服务。 官网: https://apifox.com/ 二…

Windows 10 家庭版启用组策略编辑器

Windows 10 家庭版启用组策略编辑器 问题描述 在Windows 10/11家庭版中,运行gpedit.msc(组策略编辑器)时,系统提示“Windows 找不到文件 gpedit.msc”,无法打开组策略编辑器。 原因 Windows家庭版系统默认未预装组…

MySQL 基础架构(一):SQL语句的执行之旅

MySQL 采用经典的分层架构设计,整体可分为 Server 层和存储引擎层两大部分。这种设计实现了核心功能与存储实现的分离,为不同类型的应用场景提供了灵活的存储方案。MySQL系列文章 你是否好奇过,一条看似简单的SQL查…

顺序表练习题

​1. 设顺序表中的元素递增有序,编写一个算法,将元素x插入顺序表L中的适当位置,以保持该顺序表的有序性。 void sortInsert(List *l,int x){//假设表是有序的if(l->length==MAXSIZE)exit(1);//表已满,无法插入f…

关于一种计算递归次数题的思路

代码如下 要求计算最后输出的count的结果 #define _CRT_SECURE_NO_WARNINGS #include<stdio.h> int count = 0; int fib(int a) {count++;if (a == 0)return 1;else if (a == 1)return 2;elsereturn fib(a - 1) …

前端框架深度解析:Vue 从入门到实战,掌握渐进式开发核心 - 实践

前端框架深度解析:Vue 从入门到实战,掌握渐进式开发核心 - 实践pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "…

CF2162G

定义一棵树大小为 \(n\) 的树的权值是:\(S = \sum\limits_{(u, v) \in E} (u \cdot v)\),给定 \(n\),构造一棵权值为完全平方数的树。 \(n \le 2 \times 10^5\)尝试让 \(u\) 固定,那就是菊花图,此时 \(S = u(\fra…

题解:lo6878 生不逢时

写这篇题解的时候回酒店电脑崩了直接没了,也算是照应标题生不逢时了…… 牛牛题。 题意:给定正整数 n, m 和 n 个区间,第 i 个区间为 \([l _ i, r _ i]\),保证 \(0 \leq l_i \leq r_i < 2^m\)。 对于非负整数 \…

【UEGamePlay】- 3C篇(三) : 角色 (二)

前言 上篇文章我们大体梳理了角色相关的移动/旋转框架逻辑,并且初步筛选了我们

stapter WP笔记

很喜欢的靶机,有效暴露了自己的不足,里面的兔子洞基本上全部踩了一遍,所以写一下这篇wp兼笔记 感想:打靶很多时候是反直觉的,有的时候不能基于感觉,或者说觉得概率很小就不去尝试,它是一个严谨的,纯粹理性的过…

【51单片机】【protues仿真】基于51单片机全自动洗衣机系统 - 教程

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …