大模型-面试问题记录

Rudy 2025-8-10 21 8/10

3.介绍一下Rag的piepine的流程?

  • RagGraph -> retrieve_initial -> grade_documents
  • grade_document -> route -> yes -> end
  • route -> no -> rewrite_question - > retrieve_expanded -> end

我回答: rag的pipeline负责编排。用户的问题一进来,先做一次初始检索,把query映射成稠密向量和稀疏向量,在走milvus的混合检索,失败的话就降级稠密检索。对得到的结果进行重排,也就是拿前10条文本块的前1000个字符让rerank模型进行相关性打分,然后按分数降序排序。对输出进行合并,找到父类ID,并且进行去重。然后对输出的结果做相关性评估,如果模型回答是yes,则直接输出,如果是不相关,则进入重写分支,让模型根据内容从三种策略中选择一种策略,如果是回退策略的话,就回退问题和答案,如果是假设性文档的话,生成假设型的文档。最后做扩展检索,继续做RRF融合计算得分排序,结果去重,得到最终检索上下文。

 

7.MCP 的扩展机制怎么做的?

我回答:配置驱动+策略过滤+动态挂载+按需调用

在项目启动的时候,会读取MCP_SERVERS_JSON,连接各个server。在用户输入query的时候,匹配预定义的技能,匹配上就返回对应方案,匹配不上就走默认的,遍历所有的skill_definitions,对每个skill 计算命中分,然后进行排名,使用分数最高的skill。

4个skill:代码变更分析、业务知识问答、数据库字段分析、故障排查

8.加了哪些工具?怎么使用的?

我回答:目前有内置工具两个,一个是知识库检索入口,走rag_pipeline, 一个是天气查询的。外置MCP工具。Agent 创建时固定装 天气和知识库检索,启动的时候再把可用MCP工具动态追加起来。

lifespan是FastAPI的应用声明周期钩子,为了启动稳定性和解耦初始化顺序。

13.微调用过吗?为什么用RAG而不用微调呢?

我回答:微调我了解,也做过一些轻量实践,目前还没有完整落地过生产级微调项目。在我做过的项目里,更多采用的是 RAG 方案。因为RAG主要的特点是让模型使用最新的业务知识,在知识更新、迭代效率和可解释性更强,而微调更适合做做风格、格式和行为模式的优化。

  • 微调:
    • 适合:拥有⾮常充⾜的数据
    • 能够直接提升模型的固有能⼒;⽆需依赖外部检索;
  • RAG:
    • 适合:只有⾮常⾮常少的数据;动态更新的数据
    • 每次回答问题前需耗时检索知识库;回答质量依赖于检索系统的质量;
  • 总结:
    • 少量企业私有知识:最好微调和 RAG 都做;资源不⾜时优先 RAG;
    • 会动态更新的知识:RAG
    • ⼤量垂直领域知识:微调

微调步骤:1.在服务器上把LLaMaFactory下载下来,安装torch依赖,启动web的可视化页面。从HuggingFace下载基座模型,在web的可视化页面上加载模型,准备json结构的数据集,选择Lora的微调算法,进行启动训练模型就行了。

22.ReAct怎么做的?

我回答:是一种让大模型在“推理”和“工具调用/行动”之间交替进行的 Agent 范式。它的典型流程是 Thought、Action、Observation、再 Thought,直到输出 Final Answer。相比只让模型直接回答,ReAct 更适合需要查实时数据、调用工具和多步决策的场景。

24.异步处理

答:流程可分四步:第一步,前端调用 POST /api/r1/shop/ailist,后端先做参数校验,然后把商品源数据和任务记录写入数据库,任务状态设为 READY(02),立即返回 task_id 和轮询地址。第二步,接口返回后由 BackgroundTasks 异步触发生成函数,先把状态更新为 PROCESSING(03),再依次执行类目识别、标题/描述/属性生成、结果清洗和落库。第三步,成功时写回 product_des_id、usage、model_name、耗时并置 SUCCESS(00);出现异常则置 FAIL(01)。第四步,前端根据 task_id 轮询 GET /api/r1/shop/ailist/task/{task_id},拿到 00/01 即停止;若请求里带 notice_url,任务完成后还会回调外部系统。

轮询地址是:完整地址+任务id

递增间隔轮询:先1.6s、再2.2s、再3s、4s,之后每次5s,最长等240s超时。

 

基于FastAPI 异步化设计 task_id + 状态机,A/B 同环境压测将接口首响应 P95 从 6.8s 降至 1.1s(-84%),服务吞吐提升约 1.4 倍。设计任务查询与前端渐进轮询机制将任务超时率从 11.4% 降至 6.7%,任务可追踪率提升至 98.8%

 

:P95 的测法很简单:先拿到一批耗时样本,再取 95 分位。submit_p95:POST /ailist 的响应耗时task_p95:从拿到 task_id 到状态变成 00/01 的总耗时,记录每次请求的 start_ts、end_ts,算 latency_ms = end - start,至少几百条样本(越多越稳)。N=1000,取排序后第 950 个值(1-based)就是 P95

 

八股东西答题技巧:定义、原理、对比优缺点、应用经验

1.LangChain 与 LangGraph

定义:

Langchain是一个更偏上层应用框架的东西,目标是让使用者更快搭建LLM应用和Agent,如果想快速搭建agent 应用,优先使用Langchain;Langgraph 是一个更偏底层编排的框架,专门做长流程、状态化、可持久化的agent 编排调度。Langchain 的agents 是构建在 Langgraph 之上的。

原理:

Langchain 更强调高层封装:把模型、Prompt、工具、上下文、中间件组合起来,直接通过类似creat_agent() 这样的接口创建可用Agent。而Langgraph 的核心是把 Agent Workflow 建模成 Graph,有State共享状态、Nodes 执行逻辑的节点、Edges 决定下一个节点怎么走,所以它更适合复杂分支、并行执行、状态持久化、人工介入、长任务。

优缺点:

Langchain 的上手快,封装好的,适合快速做RAG、Agent原型,适合想先把应用做出来的人。而Langgraph 控制力强、支持复杂状态流,适合生产级可控流程的项目。

应用场景:

像我的项目中用到的就是Langgraph的编排框架,把流程抽象为state、node、edge。

2. RAG、agent、agentic 的区别

定义:

RAG检索增强生成是一种架构模式:先从外部知识库检索相关内容,再把这些内容作为上下文交给大模型生成答案。AI Agent 是一种以目标为导向的软件系统,能够代表用户完成任务,通常具备推理、规划、记忆、调用工具和执行动作的能力。Agentic 不是简单等于 Agent。它更强调系统的自主决策、迭代规划、多步执行、跨工具流程协同,更复杂工作流导向的AI 形态。

原理:

RAG的核心链路通常是:文档切分-向量化-建索引,用户提问,检索相关片段,把检索结果拼进Prompt,LLM基于这些上下文生成答案。Agent 的核心是围绕目标进行决策与执行,一般会有一个大模型负责理解目标与推理,一组工具如搜索、数据库等等。一个执行循环:判断-选择工具-调用-观察结果-再决定下一步。而Agentic 系统是在Agent 之上进一步强化,有多步规划-长任务状态保存-多工具协同-多Agent协作-人工介入与异常恢复-流程编排

优缺点:

RAG 提升回答的真实性、可追溯性和时效性,但是不擅长复杂任务执行。Agent 能调用工具、执行动作,适合完成任务,但是复杂度高于普通问答,如工具选择、权限控制,如果没有好的约束,容易乱调工具、乱规划。Agentic 更适合复杂、多阶段、跨系统流程的业务。

应用场景:

RAG做企业知识库问答、FAQ、文档助手。Agent 适合帮你查订单-调接口-查数据库-自动执行固定业务步骤。Agentic 适合先分析问题,再规划步骤,再调用多个系统,最后汇总结果,长流程任务,如客服分流、工单处理、审批流、代码修复闭环。

3.Prompt优化是什么?

定义:

prompt优化,就是通过改进对大模型的输入指令,让模型输出更准确、稳定、可控,符合业务目标。包括指令怎么写-上下文怎么组织-示例怎么给-输出格式怎么约束-工具调用规则怎么限定-多轮对话里历史信息怎么注入,解决回答不稳定-幻觉多等问题。

原理:

大模型本质上根据输入上下文生成最可能的下一个结果,所以输入怎么组织,输出就大概率怎么走。常见的优化方法有明确任务目标-增加角色和约束-给输出格式-少文本方式加示例-复杂任务拆步骤。

优缺点:

成本低,不用训练模型,不用改参数,改提示词就能试。见效快。但是也容易玄学化,上限受模型能力限制,业务场景多了,提示词版本、分支和规则容易乱。

应用场景:

用在RAG问答场景,限制只能基于检索内容回答,没查到就明确说没依据,规定回答结构,比如先结论再依据。结构化输出比如商品属性抽取,固定JSON字段,禁止输入多余解释。Agent和工具调用在提示词里明确什么情况下调用工具,调用失败怎么兜底,先检索还是先判断。

4.Function tool 与 MCP的区别

定义:

Function tool 是 tool calling 的一种具体工具形态,function 是一种特定类型的tool,它通过JSON schema 定义输入参数,让模型把结构化参数传给你的应用代码。

MCP 是一个协议层标准,通过标准化协议接口向AI应用暴露能力的程序。

原理:

Function tool 的工作流是:先把函数名、说明、参数schema 提供给模型,模型决定是否调用,模型返回工具名和参数,应用执行函数,把结果再喂给模型,模型继续生成最终回答。

MCP 的统一协议包括 Tools-模型可主动调用的功能,Resource-只读上下文数据源,Prompts-用户显式触发的结构化提示模版。

优缺点对比:

Function tool 简单直接,适合查订单、查天气这类能力快速交给模型,参数是结构化schema。而MCP适合统一接多个外部系统。

应用场景:

如果需求是查订单、调内部接口、执行一个后端函数,优先用Function tool。要是场景要接很多外部系统,更适合MCP.

5.Transformer 基本原理

定义:

Transformer 是2017年提出的一种神经网络架构,最早用于机器翻译,后来逐渐成为NLP、大模型、计算机视觉和多模态任务的核心基础结构。是一种基于自注意力机制的序列建模,能够高效捕捉全局依赖,并支持并行训练。

原理

整体架构包含编码器和解码器。流程是输入token先变成向量,然后加上位置编码。自注意力每个token都会和其他token计算关联程度,核心有三个向量Query、Key、Value,用Query和所有的Key算相似度,做缩放和softmax-把模型分数映射为概率分布的函数,得到注意力权重,用这些权重与Value加权求和。多头注意力是并行计算。前馈神经网络-注意力做完后,每个位置还会过一个前馈全连接网络,进一步增强特征表达。残差连接和层归一化让训练更稳定。

优缺点

标准自注意力的实践和显存复杂度对序列长度是O(n2)

应用场景

大模型底层都是用Transformer的变体。

6.向量检索、Dense+ Sparse混合检索

定义

向量检索是指把文本、图片等内容编码成向量,然后通过向量距离或相似度,找到语义上最接近的内容。混合检索是把稠密检索和稀疏检索结合起来,因为单向量检索语义强,但对专有名词、编号、精确词不稳定,单关键词检索精确,但是理解语义弱。

原理

向量检索的基本流程是:文档切分-用embedding模型把每个chunk编码成向量-存入向量库-用户提问也转成向量-计算query与文档向量的相似度-返回top k 结果。混合检索是多路并行检索,路径1是关键词稀疏检索,用BM25算法匹配倒排索引,输出文档ID列表和相关性得分;路径2是向量语义检索,用HNSW近似搜索查找相似向量,输出文档ID列表和相似度,两路并行执行,各自取Top-K,结果合并两路结果,按文档ID去重,得分归一化把BM25分数和余弦相似度映射到同一区间[0,1],再进行融合排序。有两种主流方法:一种是线性加权融合-w1 * 关键词得分 + w2 * 向量得分,另一种是RRF倒数排名融合,计算方式是 score = 1/ (k+rank1)  + 1/ (k+rank2)。重排rerank:把融合后的Top -N 送入交叉编码器Cross-Encode,对查询-文档做深度语义打分,输出最终Tok-K,可以进一步提高精度,但是随便变慢,成本更高。

优缺点对比

向量检索的语义理解强,适合自然语言问答,对长文本语义表达更友好,但是对型号、订单号等精确关键词不一定稳,所以混合检索的召回更稳,语义和关键词都有,对复杂查询鲁棒性更好。

应用场景

实际项目是通用知识问题、FAQ、数据相对干净、术语没那么重的场景用向量检索。

如果是企业知识库、API文档检索、工单系统、带大量专有名词的场景用混合检索。

7.RRF排序

定义:

倒数排名融合,是一种把多路检索结果合并成一个最终排序的方法,它不直接看各路检索的原始分数,而是主要看一个文档在每一路结果里排第几。

原理:

核心公式是 常数k加上文档d在第q路结果中的名次的倒数在进行求和。

应用场景

这样做的好处是不同检索器分数体系不一致也能融合,工程上更稳。实际项目里我会先做 BM25 + 向量双路召回,再用 RRF 合并候选集,最后接 rerank 提升最终排序质量。

8.Rerank精排

定义:

rerank 一般叫重排序/ 精排,语义重排模型会根据query和候选文档之间的语义相关性重新排序。

原理:

rerank模型给每个候选一个更精细的相关性分数。用的是交叉编码器,把用户查询query与Doc文档拼接成一条完整输入,经过词嵌入和位置编码,送往Transformer编码器,互相计算注意力,最后对所有的文档打分并排序。

优缺点:

显著提升排名质量,特别适合RAG, 一般都是和混合检索+倒数排名融合+精排。

9.BM25关键词相关性打分算法

定义:

用来衡量一个文档D对一个查询Q的相关度,是搜索引擎和信息检索系统里非常常见的排序函数。

原理:

词稀有性权重 * 饱和型词频贡献 * 文档长度修正。

10.父子分块检索策略、父块Auto-merge策略

定义:

将文档按层级切分为字块和父块,检索时先用子块做向量召回定位相关片段,再按父类块id 回填对应父块(Auto-merge)作为最终上下文。核心目标是同时兼顾检索精度和语义完整性。

原理:

离线阶段把文档切成两层:父块(页/段级,语义完整)和子块(句/片段级,便于精确命
中),并建立 child -> parent 映射。在线检索先召回子块(通常是向量或混合检索),因为子块更容易命中问题关键点。命中后按 parent_chunk_id 回填父块(Auto-merge),把多个同父的子块去重合并。最终把“命中的关键片段 + 完整父块上下文”一起喂给模型生成答案。

优缺点:

解决矛盾:块太大:语义完整,但检索不准。块太小:命中更准,但上下文容易断裂,所以采用先小块定位,再大块补全。既保留检索精度,又保证回答时上下文完整。

应用场景

1.长文档知识库:SOP、产品手册、制度规范、技术文档。
2. 需要“精确定位 + 完整解释”的问答:流程、规则、条件判断类问题。
3. 合规/法务/金融/医疗等对上下文完整性要求高的场景。
4. 多轮企业知识助手(需要稳定引用来源、减少幻觉)。

11.HNSW 与 Sparse 索引

定义:

HNSW 近似最近邻图索引,适合大规模数据集,其核心是构建多层图来加速相似向量搜索。Sparse 是利用倒排索引原理来高效存储和搜索稀疏向量。

原理:

HNSW的核心思路是把向量组织成一个多层图结构,搜索时先从高层的稀疏图快速缩小范围,再逐层往下逼近更精确的近邻。Sparse倒排索引,因为稀疏向量绝大多数维度都是0,所以系统只存非零维度及其权重,检索时直接根据query中出现的此项或非零维度去定位候选文档。

优缺点:

HNSW 索引适合语义检索,速度块规模化好,适合实时查询;Sparse索引适合过滤编号类检索。

12. step_back / HyDE / complex 三类重写策略

定义:

step_back:先退一步问上位概念;HyDE 生成一段看起来像正确答案的假文档,再把这段文档向量化话用来检索。complex问题以上两者都可以。

原理:

step_back 有些用户问题太细、太具体,直接检索容易漏掉更关键的背景知识。于是先让 LLM 生成一个更抽象、更普适的问题,再同时检索.HyDE: 用户的原始 query 往往太短、太稀疏,不一定和库里的文档表述接近。于是先让 LLM 生成一段“假设性的标准答案文档”.

step_back:包含具体名称、日期、代码等细节,需要先理解通用概念的问题。\n"
hyde:模糊、概念性、需要解释或定义的问题。\n"
complex:多步骤、需要分解或综合多种信息的复杂问题。

13.长短期Memory机制

定义:

短期记忆就是模型在单次会话或单个线程中保存中的上下文,比如历史消息、当前任务状态、中间推理结果;长期记忆是跨会话持久存在的数据,比如用户资料、用户偏好、事实性信息。

应用场景:

上下文记忆是存在后端的,前端每次发送都会带session_id,后端按照user_id和session_id加载历史消息,把会话消息缓存和会话列表缓存保存到redis里面,每次读的时候先查缓存,缓存没有的话就查Mysql。把历史消息转成Message给agent。当消息数大于50时候,会把前40条总结成一条系统摘要,再拼后续消息。,避免上下文超限。

14.SSE  与 websockt

定义:

SSE 是一种基于 HTTP 的服务端推送技术,浏览器通过 EventSource 和服务端建立长连接,服务端可以持续把消息流式推给前端。

WebSocket是一种全双工通信协议,连接建立后,客户端和服务端都可以主动发消息。

原理:

SSE 本质还是基于 HTTP 长连接,浏览器发起 HTTP 请求,服务端返回 text/event-stream,,连接不关闭,服务端持续往这个流里写数据,前端实时接收并处理;客户端发起握手请求,服务端同意升级协议,建立持久化双向连接,双方都可以随时发消息。

应用场景

大模型流式输出、RAG 问答逐字返回、后台任务进度条等AI应用适合SSE场景。而多人实时聊天、实时协同编辑、浏览器和服务端频繁互发事件适合webSocket。

前端调用后端的流式输出接口,请求体是message和session_id,后端路由接到请求,返回流式响应,流式请求先创建一个队列,生成器内部一边跑agent,一边持续生产推SSE事件,前端ReadableStream循环读流,解析JSON,再进行渲染。

15. Skills -MCP 扩展机制

定义:

Skills是模块化的能力包,包含指令、脚本和资源,让agent在需要时自动加载和使用。而MCP是一个连接协议,能让agent访问外部系统,如数据库、接口、文件系统、各种Saas服务。

原理:

agent启动时只读取skill的头部元数据,用于匹配路由,只有判断需要这个Skill时,才会完整读取里面的指令。当 skill 需要访问外部系统时,就通过 MCP server 暴露出来的工具、数据源或 workflow 来完成,Agent 根据 skill 的步骤说明和 MCP 返回结果,继续推理、生成输出或执行下一步。这一点是在OpenClaw社区里的agent skill里学的。

优缺点:

Skills 负责业务流程,MCP 负责系统接入,边界清楚,便于维护;skill 的正文只在使用时加载,长参考材料在不用时几乎不耗 token。

应用场景

用 Skills 封装可复用的业务流程和提示策略,用 MCP 标准化接入外部工具、数据源和工作流,让 Agent 同时具备“知道怎么做”和“真的能去做”的能力。

16.会议论文

定义:

基于图注意力解决旅行商问题,第14届计算与模式识别国际会议。

主要内容是对单旅行商问题做了强化学习的建模,按顺序一个点一个点选下一个城市”的决策问题,然后用一个图神经网络 + 注意力的模型去学怎么选,再用强化学习把它训好。

研究的是单旅行商问题 TSP:给定若干城市节点,旅行商从起点出发,要求每个城市访问一次且仅访问一次,最后回到起点,使整条路径总长度最短。

原理:

先用图神经网络理解城市之间的结构关系,再用注意力解码器一步步选择下一个城市,最后用强化学习优化路径长度。

模型设计:提出了一种基于深度强化学习的多层混合图卷积注意力网络模型,在模型结构上,编码器结合图注意力机制与残差多层图卷积,以增强图结构特征表达能力,解码器采用自适应多头注意力机制,以提升路径构造过程中的节点选择质量,最后,在训练阶段采用 PPO,并进一步引入自适应学习率和动态裁剪阈值机制,提高模型训练的稳定性与收敛效率。实验结果表明,所提方法在单旅行商问题上提升了3个百分点。。

编码器:结合图注意力机制与残差多层图卷积 - >  图注意机制:在图结构中为不同邻居节点分配不同的重要性权重,根据节点特征计算邻居对当前节点的重要性分数,在经过softmax归一化得到注意力权重,最后对邻居特征进行加权聚合。计算公式:用一个小的前馈神经网络打分。

强化学习的奖励与惩罚机制:奖励:当前城市i走到下一个城市j,这一步走了多远,就给一个负的距离值,走的越远,奖励越小,走的越近,奖励越大。因为强化学习就是最大化累计回报。

17.数学建模

研究对象:高速列车轴承智能故障诊断

源域:实验台架数据,有标签,适合训练;

目标域:真实列车运行数据,基本无标签,更接近实际。

用的迁移学习的方法。

先把振动信号榨成一堆有物理意义的特征,再在实验室数据上把分类器练好,接着用 DANN 把“实验室知识”迁移到真实列车数据上,最后用 SHAP/t-SNE 解释模型为什么这么判。

18.实习一业务流程

定义:

马帮erp3.0的跨境电商卖家管理系统有一个商品上架的业务,升级成AI驱动,原先的流程是用户根据site、选择类目路径和产品规格信息,痛点就在每次都要手动上传很多信息。改造后实现AI流程自动化。

原理:

用户输入站点、产品图片和标题,两阶段推理,第一轮推理通过优化提示词引导视觉大模型生成一个三级类目路径,经过embedding模型转成向量,与数据库中的所在站点类目进行混合检索进行加权融合排序召回 Top3。第二轮推理是引导文本模型根据Top3 和文本选出,最匹配的一个类目路径,后续在根据类目路径生成标题、属性和描述。后续我自己对最后一步的生成进行了优化,利用Lora 和 SFT 对千问模型进行微调,构造多适配器进行部署,根据不同站点调用不同的模型进行生成不同风格的文案。

 

19、实习二业务流程

定义:

实习期间参加的是仓配业务相关项目。团队内部有大量仓储、配送、WMS操作、业务规则等文档。这些文档分散在不同位置,业务排查时查找成本比较高,所以我们基于RAG构建团队内部知识库,让成员可以通过自然语言提问快速定位相关文档内容。

原理:

业务流程:

入库预约

到货收货

质检 / 清点

上架入库

库存管理

订单下发

拣货

复核

打包

出库交接

配送 / 发运

签收 / 异常处理

RAG项目的业务流程是 团队文档收集 -> 文档清洗与切分 -> 向量化入库 -> 用户提问 -> Dense + Sparse 混合检索 -> RRF 融合 -> Rerank 精排 -> 返回答案和文档来源。

针对wms系统的自动化检测,基于playwright + pytest 进行检测,结合Jenkins 做 CICD 部署。

20.项目流程

定义:

计划驱动型 Agentic RAG 知识库助手

第一版

用户 query

加载历史消息

IntentService 任务分类

PlannerService 创建计划

RuntimePolicy 生成运行策略

build_turn_prompt 构造本轮提示词

Agent 执行

RAG / MCP / Weather 等工具

SSE 返回内容 + trace

 

第二版 简单工具Agentic RAG

query

加载历史消息

Agent 自己判断任务

Agent 自己选择工具

调用 RAG / MCP / Weather / DB

观察工具结果

继续调用或最终回答

第三版 基于工具召回的自主型 Agentic RAG

用户 query

加载历史消息

ToolRetriever 召回候选工具 Top-K

PolicyGuard 过滤工具权限

Agent 自主选择工具

Tool / MCP / RAG 执行

Agent 观察工具结果

必要时继续调用

最终回答 + SSE trace

 

 

原理:

 

优缺点:

 

应用场景

21. SFT / LoRA 微调

定义:

原理:

优缺点:

应用场景

22.异步任务

定义:

原理:

优缺点:

应用场景

23.你的缺点

24你的项目有什么改进?

25.你怎么设计一个agent项目?不用框架的话,流程

26.你遇到最困难的事情是什么?怎么解决的?

项目经历答题技巧:STAR :情境、任务、行动、结果

- THE END -
最后修改:2026年4月28日
1

非特殊说明,本博所有文章均为博主原创。

共有 0 条评论