大模型-面试问题记录

Rudy 2025-4-10 10 4/10

以下为针对简历内容所提问题记录:

1.混合检索怎么做的? Dense + Sparse Hybrid Search 检索链路

我回答:在查询知识库的时候,我会将一个问题进行图编排,也就是构建 LangGraph 状态流,配合milvns服务进行初始化 Milvus 集合,把用户问题转换成稠密向量,把查询转为稀疏变量。稠密检索就是语义理解,而稀疏检索就是关键词检索。

稠密检索:将query和文档映射为稠密向量表示,再基于向量相似度进行召回。

稀疏检索:1.BM25,一种经典的稀疏检索打分算法,主要考虑是查询词在文档中出现的次数和词在整个语料库中的稀有程度,分数越高,说明文档和query越相关。

倒排索引:关键词到文档列表的映射,检索时可以根据查询的关键词快速定位候选文档。

2.两阶段匹配决策中的粗识别和精重排怎么做的?

我回答:粗识别:指第一步类目推理多模态,先让LLM看商品标题、图片以及原始类目,输出一个大概的类目路径,然后再用混合检索=语义检索0.8+关键词检索02.召回TOP3。第二步类目重排文本,把商品标题和候选类目列表再次交给LLM,挑选出最匹配的候选,如果有结果,再去调用一次混合检索,取top1为最终类目。

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融合计算得分排序,结果去重,得到最终检索上下文。

4.RRFRanker的计算方式怎么计算的?

我回答:计算步骤:每个召回的文档先各自排序。对每个文档,按它在每个列表中的名次加上平滑系数的倒数计分进行累加,最后按总分排序。

5.HNSW 和 sparse 索引用了嘛?

我回答:是的,dense_embedding稠密向量用的是HNSW:快速近邻搜索,而sparse_embedding稀疏向量用的是SPARSE_INVERTED_INDEX稀疏倒排索引。

原因:

1.稠密检索

方案 准确性 查询速度 内存占用 适合场景
FLAT暴力检索 最高 最慢 小数据、基准测试
HNSW 很高 很快 较高 在线 RAG、通用检索
IVF_FLAT倒排分桶 中高 大规模、可接受调参
IVF_PQ / PQ量化 很快 超大规模、重成本控制

2.稀疏检索

索引类型 核心思路 优点 缺点 适用场景
倒排索引(Inverted Index) 按“非零维度 → 文档列表”建表,查询时只访问命中的非零维度 最贴合稀疏向量结构;查询只看非零维;召回稳定;和关键词/BM25思路一致 结果集很大时,纯遍历 posting list 可能慢一些 稀疏检索、关键词检索、BM25/TF-IDF、混合检索中的 sparse 分支 (Milvus)
倒排索引 + WAND / MaxScore / Block-Max WAND 仍基于倒排表,但用剪枝算法跳过“不可能进 TopK”的候选 TopK 检索更快,尤其大库/长 posting list 时收益明显 逻辑更复杂;某些近似策略会在速度和召回间权衡 大规模稀疏检索、只关心前 K 条结果的场景 (Milvus)
精确扫描(Brute Force Sparse Dot Product) 不建复杂索引,逐条算稀疏点积 实现最简单;结果最准确;适合做基准 数据一大就慢 小数据集、离线评测、验证召回效果
AUTOINDEX(Milvus 自动索引) 由 Milvus 自动选择/优化索引配置 省配置,适合先跑通 可控性较低,不利于你精调 原型验证、先快速上线 (Milvus)

6.召回率top_k 知道嘛?

我回答:检索时,返回最相关的前K条结果。

Recall@K

召回率= 找回来的正确结果数 / 所有正确结果总数

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

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

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

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

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

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

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

9.聊天页面的上下文记忆怎么保存的?最大上下文长度超限怎么办?

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

10.怎么评估Rag模型的准确度?

我回答:用LangSmith来进行评估。在LangSmith的评估脚本里设置了击中率,

11.出现过千问模型生成不准确的情况吗?

 

12.EI会议讲的是什么?图注意力怎么弄的?强化学习的奖励机制怎么弄的?

我回答:这篇论文是第14届计算与模式识别国际会议。主要内容是对单旅行商问题做了强化学习的建模,按顺序一个点一个点选下一个城市”的决策问题,然后用一个图神经网络 + 注意力的模型去学怎么选,再用强化学习把它训好。

研究对象:研究单旅行商问题

问题痛点:为了解决现有方法局部信息、全局结构和训练稳定性方面的不足。

建模方式:把TSP看成逐步选下一个城市的决策过程。

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

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

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

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

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

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

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

14.数学建模做了什么?

我回答:

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

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

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

用的迁移学习的方法。

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

15.function tool与mcp什么区别?

我回答:Function Tool 是把函数schema 直接提供给模型,模型决定是否调用,但正在执行逻辑还是在我的应用后端。而MCP是把能力封装成一个标准协议服务,模型通过MCP server 去发现和调用工具。

16.BM25排序算法?为什么用这个?干嘛的?

我回答:是一种基于关键词相关性排序打分算法,用来对召回出来的候选文档进行打分和排序。实际搜索系统中通常先基于倒排索引召回,再使用BM25排序。

17.langchain与langgraph有什么区别?

我回答:Langchain是更高层的AI应用开发框架,适合快速构建agent和工具调用应用;而LangGraph 是更底层的 workflow 编排框架,适合构建有状态、可恢复、支持人工介入的复杂agent系统。

18.智能体开发?AutoGen?AgentScope?

我回答:

维度 LangGraph AutoGen AgentScope
推荐场景 单 Agent 为主,但流程复杂;需要状态流转、条件分支、循环、人工审核、断点恢复。 (LangChain Docs) 多角色协同任务,例如 planner / executor / reviewer;研究型、多代理对话、事件驱动分布式协作。 (GitHub Microsoft) 需要更完整的工程能力:本地/云/K8s 部署、观测、MCP/A2A、工具生态、多智能体工作流。 (GitHub)
上手感受 控制力强,但要自己建 State / Node / Edge。 (LangChain Docs) 多智能体表达自然,但系统复杂度更容易上来。官方强调 event-driven 和 distributed。 (GitHub Microsoft) 开箱能力多,但理解成本也更高,因为不仅有 framework,还有 runtime 生态。 (GitHub)
企业里更像什么 Agent 工作流底盘 多智能体协作框架 智能体框架 + 运行时/部署体系
一句话选型 强流程、强控制、强状态 选它 多代理分工协作 选它 更偏生产落地

19.prompt 提示词优化?

我回答:

prompt 类型

① System Prompt

定义智能体身份、职责、边界。

② Router Prompt

决定问题走哪条链路。

③ Tool Use Prompt

控制什么时候调工具、怎么调工具。

④ Planner Prompt

让 Agent 先规划步骤。

⑤ Reviewer / Critic Prompt

让另一个节点或子 Agent 复核输出。

优化的核心方法:

角色要清楚,但别空

把“流程”写出来

把工具使用规则写死一点

输出格式标准化

给反例和边界

20.上下文工程?

我回答:

  1. system prompt:你是订单异常助手
  2. 最近 5 轮对话
  3. 历史摘要:用户之前问过退款
  4. 当前任务状态:已拿到 order_id=A1001
  5. 工具结果:订单状态=已支付未发货
  6. 知识库片段:未发货规则说明

然后再喂给模型。

21.爬虫的签名验证?

我回答:用户输入 1688 商品链接 → 你的后端解析商品 ID / 链接参数 → 调 1688/阿里开放平台官方 API 获取商品信息 → 映射成你跨境上架系统的商品结构。

  • app_key
  • session(用户/卖家授权后拿到)
  • timestamp
  • sign_method
  • sign

22.ReAct怎么做的?

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

23.Agentic 与 Agent 有什么区别?

我回答:

Agent 指具体的智能体系统,是一个能感知、决策、执行任务的实体;

Agentic 更强调系统是否具备自主规划、工具调用、任务分解和结果修正等“智能体式行为”。

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

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

共有 0 条评论