2025年大模型年度总结:Training Recipe与业务落地思考
一、项目介绍准备·项目 1基于 RAG 的大语言模型关系抽取1、为什么不用传统语义相似度检索改用关系原型检索传统相似度检索易召回伪近邻样本语义相近、头尾实体不同→关系不同干扰模型判断。 我先把知识库按关系类型聚类计算每类向量质心作为关系原型先匹配关系原型再细搜样本从源头过滤无效召回。关系原型的检索构建关系原型首先将外部知识库的样本按关系类型分类对每一类把该类所有样本的嵌入向量取平均得到这个关系的“原型向量”。粗筛对于待抽取的句子先计算它与所有关系原型的相似度选出相似度最高的3个关系类型。细筛在这3个关系类型对应的样本库中分别计算与待抽取句子的相似度从每个类别中取top-n个样本共3n个样本。2、你提到的“基于关系原型的检索策略”质心向量具体是怎么计算的如果某个关系类别的样本分布非常分散怎么办计算方法首先利用 Embedding 模型如 BGE 或 OpenAI-text-embedding对某个关系类别下的所有样本句子进行向量化然后对这些高维向量求均值Mean Pooling得到该类别的“质心向量”来代表这个关系的原型。处理分散分布如果一个关系类别下样本极其分散比如同一关系有多种不同句式表达单一质心无法准确代表。我会引入 K-Means 聚类将该关系类别聚合成 K 个簇计算 K 个质心。检索时计算被抽取句子与所有细分质心的相似度从而提高召回准确率。3、关系原型你是如何计算和更新的是静态的还是动态的目前采用的是静态方式我先用训练集中的所有样本按关系类别分组用Sentence-BERT将每个样本编码为向量然后对每个类别计算所有样本向量的平均值作为关系原型。之所以没有做成动态更新是因为我的场景中外部知识库是固定的TACRED的训练集不需要在线更新。如果未来知识库会动态增长可以考虑定期重新计算原型或者在检索时动态融合新样本但这会增加在线计算的复杂度。4、提示词怎么设计召回 3n 个样本的 n 值如何确定提示词包含任务指令、样本示例、抽取格式三部分。抽取格式用了约束解码。n 通过实验确定取 3 时 Micro-F1 最优兼顾上下文长度与样本丰富度。5、项目最大难点怎么解决难点是关系原型向量计算与聚类精度。解决用通用 Embedding 模型编码按关系类型分组求质心多次调参优化聚类效果。·项目 2基于 LoRA 微调大语言模型的大数据学科知识图谱构建1、为什么选Qwen3-8bLoRA微调全参数微调不行吗算力有限LoRA仅微调低秩矩阵参数量小、速度快、显存占用低适合垂直领域小数据集微调全参数微调算力成本高小数据集易过拟合。2、垂直领域数据集怎么构建重叠滑动窗口的作用原始语料收集我从高校大数据教材如《大数据技术原理与应用》和技术文档如Spark、Hadoop官方文档中采集文本然后做了去重、去噪比如去掉广告、无关的代码示例等。语料切分项目中的关系抽取任务是句子级关系抽取传统的句子级关系抽取数据集每条样本的句子长度是几十个Token。我在项目中使用的自建数据集质量一般实体关系密度较低如果按照传统句子级关系抽取的窗口来切分语料会导致关系样本量不足。用 256Token 重叠滑动窗口切分语料避免实体关系被截断保证上下文完整。Schema定义与标注我先定义了大数据学科的本体比如实体类型包括“技术组件”“算法”“应用领域”等关系类型包括“依赖”“替代”“应用场景”等。然后基于这个Schema对切分后的语料进行标注。遇到的困难标注一致性同一个实体在不同文档中可能写法不同如“HDFS”和“Hadoop分布式文件系统”我用了实体链接的方法先做对齐。负样本处理很多句子中没有实体或关系这些负样本如果不处理好模型会倾向于“过度抽取”。我控制数据集中正负样本比例在1:1左右。长尾实体一些冷门技术出现的次数很少我会用数据增强的方法比如基于规则替换同类型实体来增加样本。3、Neo4j 知识图谱怎么构建数据量多少将模型抽取的实体 - 关系 - 实体三元组批量导入 Neo4j最终构建1158 个实体节点、892 条关系边完成大数据学科底层图谱。4、为什么要选择Qwen3-8b作为基座模型你是否有对比过其他模型的效果显存友好8B参数规模用QLoRA可以在单卡24GB显存上完成微调推理速度也能接受。开源生态Qwen有完善的社区支持和工具链LlamaFactory、ollama等都对它支持良好工程落地方便。实验结果也显示qwen3-8b效果不错。5、你构建的微调数据集规模大概是多少条数据标注的质量是如何保证的我构建的数据集总共约1.2万条样本其中实体识别样本8000条关系抽取样本4000条。·项目 3多模态聊天机器人1、这个 Agent 的核心技术栈怎么实现图谱增强问答流程用户提问→转 Cypher 语句→Neo4j 检索知识链→注入 LLM 上下文→生成回答从根本降低幻觉。2、对话记忆怎么管理如何平衡连贯性与效率用 SQLite 持久化存储聊天记录 近期对话完整保留早期对话用 LLM 摘要后注入上下文既保证多轮连贯又不冗余占用 token。3、为什么集成 GLM-ASR多模态的优势因为是用于自己练手的不成熟项目没有用户提出需求一些需求是我假想添加的。实现语音交互拓展机器人使用场景多模态降低用户操作成本提升交互便捷性贴合实际产品需求。4、这个 Agent 和通用聊天机器人的区别是垂直领域专用 Agent融合知识图谱 领域微调模型问答更专业、更精准无通用模型的学科知识盲区。5、大模型直接生成 Cypher 语句很容易产生幻觉比如生成数据库里不存在的标签或属性你是如何保证执行成功率的Prompt 增强在 Prompt 中严格注入 Neo4j 数据库的 Schema包括节点标签、属性列表、合法关系类型并提供少量经典的 Cypher 查询示例Few-Shot。自我纠错机制Self-Correction在 LangChain 工作流中设计一个重试逻辑。如果执行 Cypher 报错系统会捕获数据库的 Error Message将其连同错误的 Cypher 一起传回给大模型让大模型“反思”并修复语法错误最多重试 3 次。后处理校验利用 Python 脚本对生成的语句进行正则校验防止破坏性查询如 DROP, DELETE。二、大模型应用技术、概念相关·什么是大模型 Agent核心架构包含哪些模块大模型 Agent 是以 LLM 为大脑具备自主规划、记忆、工具调用、反思能力的智能体。规划模块拆解复杂任务、制定执行步骤记忆模块短期上下文记忆 长期持久化记忆工具调用模块调用外部工具检索、数据库、API执行与反思执行动作、校验结果、优化迭代。·请解释一下Agent的核心概念什么是“思考-行动-观察”循环ReAct模式是如何运作的Agent的核心是让大模型具备自主决策和调用工具的能力。ReActReason Act是目前主流的Agent范式它的工作流程是一个循环思考Thought模型分析当前状态思考下一步应该做什么。比如“用户想查明天的天气我需要调用天气API”。行动Action模型输出一个具体的动作格式通常类似于 Action: weather_search[合肥, 明天]。系统解析这个动作调用对应的工具或API。观察Observation工具执行后返回结果比如“明天合肥晴18-26℃”。这个结果作为新信息添加到对话上下文中。然后模型根据观察结果继续思考下一步——是直接回答用户还是需要更多信息这个循环会持续到模型决定输出最终答案。ReAct的优势是让模型的推理过程变得可解释、可调试同时通过“观察”获取外部信息弥补了模型知识的局限。·LangChain 和 LangGraph 的区别你用 LangChain 做 Agent 的核心思路LangChain 是链式调用适合线性简单任务LangGraph 是图结构编排支持循环、分支、多智能体协作更适合复杂 Agent。我用 LangChain 搭建多模态聊天机器人核心是链路封装ASR 语音转文本→意图识别→知识图谱检索→LLM 生成回答→对话记忆管理全程模块化解耦。·你简历里提到用了LangChain框架请讲讲你在多模态聊天机器人项目中LangChain具体承担了哪些模块提示词模板管理我用LangChain的PromptTemplate来管理不同的提示词比如Cypher生成提示、问答提示、摘要提示等方便统一调整和版本控制。Agent执行器我用LangChain的AgentExecutor来管理Agent的“思考-行动-观察”循环。它负责解析模型输出的Action路由到对应的工具并将工具返回结果封装成Observation。工具封装我把知识图谱查询、向量库检索、语音识别等能力都封装成LangChain的Tool类这样Agent可以统一调用。记忆管理用LangChain的ConversationSummaryBufferMemory来管理对话历史。它结合了近期窗口保留和远期对话摘要正好符合我项目中“近期对话完整保留早期对话摘要”的设计。链式调用在非Agent的场景比如简单的Cypher生成执行我用LangChain的LLMChain来串联提示词、模型调用和输出解析。·什么是Tool Calling函数调用如果一个Agent需要调用多个工具来完成复杂任务你是如何设计它的执行流程的Tool Calling或Function Calling是大模型在生成回答时同时输出一个结构化的“工具调用请求”的能力。比如模型输出{name: search_weather, arguments: {city: 合肥}}而不是让模型自己去解析非结构化的Action字符串。这样更可靠、更容易解析。对于多工具调用的复杂任务我的设计思路是任务拆解在系统提示词中告诉模型复杂任务需要分解成多个步骤。比如“用户想要一份关于Spark的技术报告”模型可能会规划①先检索Spark核心概念②再搜索最新版本特性③然后整合成报告。顺序执行 vs 并行执行如果工具之间有依赖关系就顺序执行如果互相独立可以并行调用。在LangChain中我可以使用asyncio来并发调用多个工具。结果聚合所有工具返回后将这些结果汇总到上下文让模型基于这些信息生成最终答案。有时候中间结果也需要作为下一步工具的输入比如先检索实体ID再用ID查关系。错误处理如果某个工具调用失败模型需要能够选择替代方案或向用户说明情况。我在提示词中会加入“如果工具调用失败请尝试其他方式或告诉用户”。·多Agent协作中如果两个Agent生成的决策冲突应该如何处理多Agent协作的冲突处理是一个关键问题。我通常会设计以下几种机制角色与优先级在系统设计时就明确每个Agent的角色和决策权重。比如一个“规划Agent”负责拆解任务一个“执行Agent”负责调用工具规划Agent的决策优先级更高。仲裁机制设置一个专门的“仲裁Agent”或“协调Agent”当检测到冲突时收集所有Agent的决策和理由由仲裁Agent综合判断后给出最终决策。投票机制对于同质的Agent比如多个检索Agent可以用投票的方式决定最终采用哪个结果。冲突检测与回溯在系统层面记录决策链路如果后续执行中发现矛盾比如执行Agent反馈“无法执行”可以回溯到规划阶段重新决策。在工程实践中我会尽量通过明确的分工和设计良好的通信协议来减少冲突而不是完全依赖模型自己去解决。·什么是大模型的“幻觉”如何解决 Agent 的幻觉问题结合你的项目说做法幻觉是指大模型生成的内容看起来合理但实际上与事实不符或与输入矛盾。我在项目中主要用以下几种方法来缓解检索增强生成RAG在我的多模态聊天机器人项目中我会先从知识图谱或非结构化文本向量库中检索相关内容作为上下文注入给模型这样模型是基于事实生成而不是靠“记忆”编造。约束生成在关系抽取任务中我会通过提示词限定输出格式或者在解码时使用结构化输出的方法避免模型自由发挥。提示词设计比如加入“如果你不确定请说‘我不知道’”这样的指令可以降低模型强行回答的概率。·垂直领域 Agent 开发的难点你怎么解决难点是专业知识适配、问答精准度、多轮对话。解决① LoRA 微调垂直领域大模型学习学科术语② 构建领域知识图谱做检索增强③ 设计对话记忆机制兼顾连贯性与效率。·LoRA/QLoRA、量化、加速的原理你怎么用的LoRA低秩适配冻结基座仅训练低秩矩阵FlashAttention/Unsloth优化注意力计算提升训练 / 推理速度GPTQ/AWQ权重量化减少显存占用适配低资源部署我用 LlamaFactory 一键完成上述操作适配 Qwen3-8b 模型。·LoRA和QLoRA的区别是什么QLoRA是在LoRA基础上做了哪些改进QLoRA是“量化LoRA”它在LoRA的基础上引入了量化技术来进一步降低显存占用。我在项目中主要用LlamaFactory它同时支持LoRA和QLoRA。4-bit NormalFloat量化将基座模型量化为4-bit精度大幅减少基座模型本身的显存占用。双重量化Double Quantization对量化参数再做一次量化进一步压缩显存。分页优化器Paged Optimizers使用NVIDIA的统一内存特性在显存不足时自动将优化器状态换出到CPU内存防止OOM。·什么情况下你更倾向于用全量微调而不是LoRA大多数情况下LoRA已经足够好尤其是在资源受限的场景我会优先选择LoRA。数据量足够大且任务与预训练分布差异较大如果下游任务的数据量达到几十万级别且领域比较特殊比如代码生成、医疗文书全量微调可以让模型更好地适应新分布。需要修改模型的内部行为如果我要调整模型的注意力模式或改变某些层的结构LoRA这种旁路注入的方式可能不够灵活。·请完整描述一个RAG系统的工作流程从用户提问到生成答案需要补充对先进RAG的完整认知。以我在多模态聊天机器人项目中的实践为例RAG的流程如下用户输入用户通过文本或语音输入问题。查询处理系统会对问题进行预处理比如提取关键词、改写、或生成多个检索变体。检索阶段将问题向量化与向量库中的知识片段计算相似度召回top-k个最相关的片段。在我的改进方案中我会先做关系原型匹配再在特定类别中做细粒度检索。上下文构建将检索到的片段按照一定的格式比如“【相关知识1】\n【相关知识2】”与用户问题拼接形成提示词。生成阶段将提示词输入大模型模型基于检索到的上下文生成回答。输出后处理对模型输出做校验比如检查是否引用了检索到的内容或者过滤掉不安全的回答。·在RAG中如果检索到的上下文与问题不相关模型可能会被误导你有什么应对策略检索质量保障在检索阶段设置相似度阈值如果最高分低于阈值就不返回任何结果让模型“诚实”地表示不知道。同时在向量库中引入“难负样本”来训练检索器提高检索的区分度。重排序Rerank在初召后用一个更精准的交叉编码器如BERT-based reranker对召回的片段重新排序只把top-k且分数高于阈值的结果送入大模型。提示词中的指令在提示词中加入“如果提供的知识不相关请忽略它并基于你自己的知识回答或告诉用户你不知道”。这样模型被允许“不信任”检索到的内容。输出校验在模型生成后检查回答中是否引用了检索到的内容。如果模型生成的内容与检索内容矛盾可以触发二次检索或让模型重新生成。·你觉得RAG和微调在实际应用中应该如何选择或者说什么时候两者结合会更好微调适合知识内化的场景。如果任务有明确的输入输出格式、需要模型学习某种“能力”比如代码生成、特定格式的抽取而且训练数据比较稳定、更新频率不高微调的效果更好推理也更快。RAG适合知识外挂的场景。如果知识需要频繁更新比如技术文档、公司内部资料或者模型不需要把知识“记住”而是“查出来”RAG更合适。它的好处是可解释性更强更新知识库成本低。在实际项目中两者结合往往效果最好。·你在项目中使用Neo4j构建知识图谱请问为什么选择图数据库而不是传统的关系型数据库关系查询效率知识图谱的核心是多跳关系查询比如“查询Spark依赖的所有组件以及这些组件又依赖什么”。在关系型数据库中这种查询需要多次JOIN随着跳数增加性能急剧下降而在Neo4j中多跳查询如MATCH (a)-[:DEPENDS_ON*1..3]-(b)的性能非常高效。数据模型直观知识图谱本身就是“节点-关系-属性”的三元组形式和图数据库的数据模型天然一致不需要做对象-关系的映射转换。灵活性知识图谱的schema往往不是一成不变的新增实体类型或关系类型在Neo4j中很灵活不需要做复杂的表结构迁移。可视化能力Neo4j自带的可视化工具对于展示知识图谱结构、调试数据质量很方便这在开发和演示阶段很有价值。·熟练使用 Linux/PyTorch在项目中做了什么Linux 用于模型训练、环境部署PyTorch 完成向量编码、模型推理、数据预处理用 Neo4j 完成图谱搭建与 Cypher 查询。·你做的 Agent 后续优化方向记忆管理大模型对知识图谱的检索策略采用的是Text2Cypher语料数据的预处理影响知识图谱的质量等等都较为粗糙。·你了解 Dify/Coze 这样的低代码平台与直接手写多 Agent 架构LangChain相比优缺点在哪里Dify/Coze 的优点开箱即用可视化编排工作流大幅降低开发成本自带丰富的插件生态搜索引擎、数据库连接等很适合快速验证业务概念POC。缺点/手写代码的优点低代码平台在应对极度定制化的业务逻辑比如复杂的中间状态转换、精细的并发控制、自定义的内部鉴权系统时会受限。手写 LangGraph 具有极高的灵活性能深入调优 Prompt 路由逻辑并且更容易与公司现有的 CI/CD 和微服务架构集成。三、大模型理论基础·请讲一下Transformer的核心结构尤其是Self-Attention的计算过程为什么它比RNN更适合处理长文本Transformer的核心是Encoder-Decoder结构但实际使用中如GPT主要用Decoder部分。它的关键组件是多头自注意力、前馈神经网络、残差连接和层归一化。相比RNNTransformer的优势在于一是并行计算RNN是时序依赖的而Transformer可以同时处理整个序列二是长距离依赖RNN的梯度在长序列中容易衰减而Transformer通过自注意力可以直接建立任意两个位置之间的联系路径长度为O(1)所以更适合长文本。·BERT、GPT、GLM这三种模型在架构和训练方式上有什么本质区别这三者的核心区别在于预训练目标和注意力掩码方式BERT是Encoder-only架构使用双向注意力能看到上下文的所有信息。预训练任务包括掩码语言建模MLM 和下一句预测NSP。它更适合理解类任务如分类、序列标注。GPT是Decoder-only架构使用因果注意力causal attention只能看到当前token之前的信息。预训练任务是自回归语言建模即预测下一个token。它更适合生成类任务但通过上下文学习in-context learning也能很好地做理解任务。GLM是自回归填空的架构可以理解为BERT和GPT的融合。它在预训练时随机mask掉连续的文本片段然后自回归地生成这些片段。GLM既保留了双向注意力理解上下文的能力又有自回归生成的特性。清华的ChatGLM系列就是基于这个思路。·请详细讲一下LoRA的原理——它是在哪里插入了可训练参数为什么LoRA能显著降低显存消耗LoRA的核心思想是冻结预训练模型的原有权重然后在Transformer的注意力层中插入可训练的低秩矩阵。对于每个线性层LoRA用两个小矩阵A和B的乘积BA来近似权重更新的增量。显存占用低我们只需要存储和优化A、B这两个小矩阵而不是整个模型的梯度。对于大模型来说训练时显存占用可以从几十GB降到几GB。不引入推理延迟训练完成后可以把BA合并到 W中推理时和原模型完全一样。方便多任务切换不同的下游任务可以训练不同的LoRA模块切换时只需要换权重文件不需要拷贝整个模型。·GPTQ 和 AWQ 都是量化技术它们有什么区别在什么场景下选哪种GPTQ是一种基于二阶信息海森矩阵的层级量化方法它通过计算权重对误差的敏感度优先保留重要的权重。侧重于整体权重的数学优化。AWQ (Activation-aware Weight Quantization)不仅考虑权重还观察激活值。它发现模型中只有约 1% 的“显著权重”Salient Weights对最终输出起决定性作用。AWQ 识别出这些重要权重并保持较高精度而对其余权重进行量化。选型在纯推理加速尤其是追求极低显存时我常用 GPTQ但在对精度要求更高、或者模型遇到特定垂直任务精度下降时AWQ 通常能更好地保留模型的原有能力。2026年大模型已经无处不在但幻觉hallucination仍是企业落地的最大杀手金融风控、医疗问诊、客服机器人动辄编造事实直接导致合规风险和信任崩盘。知识图谱Knowledge Graph的核心价值正是结构化知识把碎片化数据变成实体-关系-属性的三元组网络让大模型先查图谱再回答。行业价值支持复杂多跳推理、知识溯源、实时更新广泛用于推荐系统、智能搜索、企业大脑。大模型痛点纯向量RAG召回率低、无法处理逻辑关系知识图谱大模型GraphRAG可将准确率提升40%以上。图谱赋能意义把大模型从概率生成器变成可信知识引擎真正实现企业级私有化落地。核心知识点知识图谱不是又一个数据库而是大模型的长期记忆和推理大脑。为方便大家学习 这里给大家整理了一份学习资料包 需要的同学 根据下图自取即可
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2494468.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!