文章目录
前言
在学习Spring AI框架之前,介绍人工智能概念-AI Concepts。
一、模型-Models
模型是设计用于处理和生成信息的算法,通常模仿人类的认知功能。通过从大量数据集中学习模式和洞察,模型能够做出预测或输出,提升各行业的应用能力。
目前支持将输入和输出处理为文本、图像和音频的模型。
根据输入和输出类型对多个模型进行了分类:
二、大型语言模型LLM
理解用户问题,并根据检索到的信息组织语言生成高质量的答案。本质上是一个概率模型,它的核心能力:给定上文,预测下一个最可能出现的词-Token。
三、提示词-Prompts
Prompt是引导 AI 模型基于语言输入的而产生特定输出的基础。提示符不只是输入到对话框中并发送给LLM的简单文本(字符串),也可以内包含多个文本输入,每个文本输入都被分配一个角色,是一种结构化文本。比如
1.CHAT模型: Character(角色), History(背景), Ambition(目标), Task(行动) 的首字母缩写。
🎭 Character (角色) : 定义一个角色身份。
😊 History(背景) : 上下文背景信息, 比如:事情的来龙去脉、遇到的问题等。
🎯 Ambition(目标): 要实现什么目标、达到什么的成果。
📌 Task(行动、指令): 它需要帮你完成什么样的事情, 即指令。
案例 -旅行计划
角色: 我是一个大学生,对历史和艺术有浓厚兴趣。 背景: 我刚刚结束了繁重的学期,拥有两周的假期。这是我第一次solo旅行,希望能够独自探索和体验文化。 目标: 想去一个预算友好的地方,既能看到美丽的景色,又能深入了解当地的历史和文化。 行动: 请为我提供一个旅行建议并包括一些必访的景点。2.CRISPE模型:
能力和角色 (Capacity and Role): 定义扮演的角色以及角色技能、特长,如一名博主、技术专家等。
洞察 (Insight): 提供有关请求的幕后洞察、背景和上下文,让LLM更好理解问题。
声明 (Statement): 说明您要求完成的诉求、任务、目标,明确告诉ChatGPT的工作流程workflows希望得 到怎样的答案与解释。
个性 (Personality): 定义回应时采用的风格、个性、约束或何种方式输出答案,如JSON结构化方式输出。
实验 (Experiment): 提供多个示例Examples。
案例 -生成爆款文章标题
# Role(能力和角色): 你是微信公众号的一名百万粉丝博主,擅长编写爆款文章。 ## profile(能力和角色-概述): - language:中文 - description:用于生成爆款标题 ## Background(洞察-背景): 擅长从内容中提取到关键信息,能够生成一个吸人眼球的标题。 ## Goals(声明-目标): 1. 从内容中找到文章想要表达的信息 2. 根据信息与热点标题的条件匹配,从而进行生成标题 ## skills(能力和角色-角色技能概述): 1. 熟悉 AI 提示词相关信息,擅长与 AI 相关热点结合 2. 对 AI 的实时热点持续关注,容易找到用户感兴趣的点 3. 编写过多篇微信公众号 AI 领域10w+阅读的文章,标题极具特色 ## Constrains(个性-约束): 1. 满足条件设定、反差、直击人心 2. 参考过往的爆款标题进行生成 3. 字数不要超过15个字,表明立场 4. 每次输出3个爆款标题供用户选择 ## workflows-声明[工作流程,如何和用户交流,交互]: 问好:“你好,我是你的 AI 爆款标题辅助器。请告诉我你的文章内容,由我来帮助你生成爆款标题” 输入:输入文章的主要信息内容 提取:从用户的输入内容中找到核心信息,与爆款标题的各个条件相匹配,从而选定如何生成 输出:将爆款标题直接输出给用户进行选择 ## Examples(示例): 1. AI觉醒:人类终将被自己颠覆? 2. 这波AI浪潮,打工人如何自救? 3. ChatGPT 的最强竞争对手竟然是它 # Initialization:启动时的对白 作为\[role\],在\[Background\]背景下,严格遵守 \[constrains\]以\[workflow\]的顺序和用户对话。其它结构化Prompt:APE (Action Purpose Expect)、BROKE、ROSES.....等。
Prompt质量直接影响模型的输出效果,优秀的Prompt能够帮助AI模型更好地理解用户意图,从而回应更符合预期且有价值的回答。
四、提示模板-Prompt Templates
使用传统的基于文本模板引擎进行提示创建和管理。Spring AI 为此使用 OSS 库StringTemplate。
例如,考虑简单的提示模板:Tell me a { adj } joke about { content }.
五、嵌入-Embeddings
嵌入是将非结构化数据(如文本、图像、视频)转换为高维浮点向量(浮点数数组)的表示方法。转换后得到的向量长度称为嵌入维度。
每个向量在抽象的语义空间中对应一个点。语义空间具有几何结构:点与点之间的空间距离反映了原始数据在语义上的相似程度 - 距离越近表示语义越接近。
在实践中,通过计算向量之间的数值距离(如欧氏距离或余弦距离),即可定量衡量不同对象的相似性。
六、嵌入模型-Embeddings Model
将数据“编码”成向量的模型。将文本数据(文档和问题)统一转换为计算机能理解的、具有语义信息的向量(Embedding)。常见嵌入模型如text-embedding-3-small(OpenAI)、text-embedding-v1-4、deepseek-embedding、KaLM-Embedding-Gemma3-12B-2511(腾讯)、BGE模型(北京智源人工智能研究院通用向量模型)等。
七、结构化输出-StructuredOutput
结构化输出转换器帮助将大型语言模型的输出转换为结构化格式。将AI模型的结果转化为指定的数据类型,如 JSON、XML 或 Java 类,并传递给其他应用方法。
八、检索增强生成-RAG
RAG是一种结合检索和生成的AI技术,又称Prompt Stuffing(提示填充),通过检索知识库中的相关信息来增强生成模型的输出效果,服务于问题检索效率的提升。
RAG = 检索技术 + LLM提示填充。
用户向LLM提问一个问题(query),RAG从各种数据源检索相关的信息,并将检索到的信息和问题注入到 LLM 提示词Prompt中,让LLM能够参考相应的知识从而给出合理回答。
检索技术主要是利用向量数据库的高效存储和检索能力,召回目标知识;LLM提示填充则是利用大模型和Prompt工程,将召回的知识合理利用,生成目标答案。
在知识库中应用RAG,需要对知识库进行切分(splitter)、分片(chunk)和嵌入增强(Embedding Embed)处理:
切分与分片:将知识库中的知识内容按照一定的规则进行切分和分片,如按照段落、句子或主题进行划分,以便在检索时能够快速定位到相关的知识片段。
嵌入: 通过计算两段文本的向量表示它们之间的数值距离,应用程序可以用于确定生成嵌入向量的对象之间的相似性。
增强:对知识片段进行向量化处理,并通过优化的Embedding算法增强向量的表示能力,使其能够更好地捕捉知识内容的语义信息,从而提高检索的准确性和相关性。
高级RAG-Advanced RAG
主要包含两个阶段:数据准备阶段与检索与生成阶段:
1.数据准备阶段(增强):
该阶段的目标是将企业内部知识转化为可供检索的向量数据,并存储于向量数据库中。
文档解析与分块(Chunking)
对企业文档(PDF、Word)进行解析,并按照语义进行文本分割,生成若干文本块(Chunk)。
常用方法为固定长度分割:根据Embedding模型的Token长度限制(如512 Tokens),将文本切分为固定长度的块。
向量化(Embedding)
调用Embedding模型API,将每个文本块转换为向量(浮点数数组),即语义向量。
存储
将向量数据与对应的原始文本块、来源等元数据存入向量数据库,并构建向量索引,支持后续的高效检索。
2.数据检索与生成(RAG核心流程):该阶段实现用户提问后的智能检索与答案生成。
问题向量化
用户提出问题时,系统调用相同的Embedding模型,将问题文本转换为向量。
语义搜索
向量数据库在已有索引中快速查找与问题向量最相似的向量片段。
通常返回 Top-K 个最相似的文本块。
检索方式可包括:全文检索、向量(语义)检索、混合检索(结合两者)
增强提示(Prompt 增强)
将检索到的相似文本块作为参考资料,与用户原始问题以及预设的提示词模板一起组合,形成一个完整的 Prompt。
生成答案
将增强后的 Prompt 发送给LLM。
LLM基于参考资料和用户问题生成准确、可靠的答案。
七、其它概念
Token代币LLM的计量单位,1个Token≈0.75英文单词。
上下文窗口 (Context Window)
Prompt(输入)+ Resp(输出)的总Token上限,LLM能处理的最大Token数量。
上下文 (Context)
一次推理中实际输入的Token 内容 ,包含用户Prompt、历史对话、检索文档等。