orion_interview_algorithms
算法 + AI 工程师面试题
一、Web 应用常见算法
Q1: 哈希表原理?如何解决哈希冲突?
参考答案要点: - 原理:通过 Hash 函数将 Key 映射到数组索引,O(1) 查找 - 冲突解决: - 链地址法(Separate Chaining):链表/红黑树存储冲突元素(Java HashMap) - 开放地址法(Open Addressing):线性探测、二次探测、双重哈希 - 再哈希法:多个 Hash 函数
Q2: Top K 问题算法设计?
场景:找出"面积 ≥60㎡ 且 价格 ≤5000 元"的房源中,"距地铁口最近"的 Top 10。
参考答案要点: - 先过滤(面积 + 价格条件) - 维护大小为 K 的大顶堆,遍历剩余元素 - 时间复杂度:O(N log K),N 为过滤后数量 - 空间复杂度:O(K)
Q3: 排序算法选择?红黑树 vs AVL 树?
参考答案要点: - 红黑树:近似平衡,插入/删除旋转次数少(最多 2 次),适合频繁修改的场景(如数据库索引、TreeMap) - AVL 树:严格平衡,查找快但修改代价高 - 排序选择:快速排序(平均 O(N log K))、归并排序(稳定)、堆排序(Top K)
二、数据清洗
Q1: 数据清洗的核心步骤?
参考答案要点: 1. 缺失值处理:删除 / 均值填充 / 中位数填充 / 模型预测填充 / 前向填充(时间序列) 2. 异常值检测:3σ 原则、IQR 法、孤立森林 3. 重复数据处理:去重(主键 / 全字段 / 相似度) 4. 格式统一:日期格式、单位统一、文本归一化(如"南向"→"朝南") 5. 类型转换:字符串→数值、分类变量编码(One-Hot / Label / Target)
Q2: 文本数据清洗?
参考答案要点: - 去除 HTML 标签、特殊字符、多余空白 - 分词(中文:Jieba / HanLP) - 去停用词 - 词干提取 / 词形还原(英文) - 归一化(同义词合并、繁简转换)
Q3: 数据清洗质量评估?
参考答案要点: - 完整性(缺失率) - 一致性(逻辑矛盾检测) - 准确性(与权威数据源对比) - 时效性(数据新鲜度)
三、数据分析
Q1: 探索性数据分析(EDA)核心方法?
参考答案要点: - 描述性统计(均值、中位数、方差、分位数) - 分布可视化(直方图、箱线图、密度图) - 相关性分析(Pearson / Spearman / Kendall) - 交叉分析(透视表、分组统计) - 时间序列分析(趋势、季节性、周期性)
Q2: 特征工程核心方法?
参考答案要点: - 特征提取:文本 TF-IDF / Word Embedding、时间特征(星期/节假日)、空间特征(距离) - 特征选择:方差阈值、相关系数、递归消除(RFE)、L1 正则化、基于树模型的重要性 - 特征构造:交叉特征、多项式特征、统计特征(均值/方差/最大/最小) - 特征降维:PCA、t-SNE、UMAP、AutoEncoder
四、机器学习
Q1: 机器学习核心评价指标?
参考答案要点: | 指标 | 公式 | 含义 | |------|------|------| | 准确率 | (TP+TN)/(P+N) | 整体预测正确比例 | | 精确率 | TP/(TP+FP) | 预测为正的样本中真正为正的比例 | | 召回率 | TP/(TP+FN) | 真实正样本中被预测出的比例 | | F1 | 2×P×R/(P+R) | 精确率和召回率的调和平均 | | ROC-AUC | - | 分类器区分正负样本能力,越接近 1 越好 | | PR-AUC | - | 正类占比少时更合适 |
Q2: 常见回归算法对比?
| 算法 | 核心思想 | 优点 | 缺点 | 适用场景 |
|---|---|---|---|---|
| 线性回归 | 最小二乘法拟合直线 | 简单、可解释 | 对非线性敏感 | 明显线性关系 |
| 多项式回归 | 添加高次项拟合曲线 | 捕捉复杂模式 | 易过拟合 | 数据呈曲线趋势 |
| 决策树回归 | 递归分割数据区域 | 非线性、无需缩放 | 易过拟合 | if-then 规则 |
| 随机森林回归 | 多棵树取平均 | 精度高、抗过拟合 | 失去可解释性 | 通用基准模型 |
| 支持向量回归 | 寻找间隔带 | 对异常值不敏感 | 大数据慢 | 异常值多、高维 |
| 梯度提升回归 | 串行构建纠正树 | 精度极高 | 调参复杂 | 竞赛/高精度场景 |
Q3: F1 值无限接近 1 是好事吗?
参考答案要点: 大概率不是好事,可能原因: 1. 严重过拟合:训练集表现完美,验证集断崖式下跌 2. 标签泄露:特征中包含标签信息 3. 数据分布异常:训练集和测试集高度重叠 4. 类别不平衡:模型无脑预测多数类 5. 评估方式错误:仅在训练集上评估
纠正措施:降低模型复杂度、加入正则化(L1/L2/Dropout/Early Stopping)、扩充数据、消除标签泄露、独立测试集评估
Q4: 过拟合与欠拟合的识别和解决?
参考答案要点: - 过拟合:训练集好、验证集差 → 降低复杂度、正则化、数据增强、交叉验证 - 欠拟合:训练集和验证集都差 → 增加复杂度、减少正则化、增加特征、延长训练
五、神经网络学习
Q1: 神经网络反向传播原理?
参考答案要点: - 前向传播:输入 → 隐藏层 → 输出层 - 计算损失:预测值 vs 真实值 - 反向传播:链式法则计算每个参数的梯度 - 参数更新:梯度下降(SGD/Adam)
Q2: 常见激活函数对比?
| 激活函数 | 公式 | 优点 | 缺点 |
|---|---|---|---|
| Sigmoid | 1/(1+e-x) | 输出 [0,1],适合二分类 | 梯度消失、非零中心 |
| Tanh | (ex-e-x)/(ex+e-x) | 零中心 | 梯度消失 |
| ReLU | max(0,x) | 计算快、缓解梯度消失 | 死亡 ReLU(负区梯度为 0) |
| Leaky ReLU | max(αx,x) | 解决死亡 ReLU | 效果不稳定 |
| GELU | x·Φ(x) | Transformer 常用 | 计算略复杂 |
Q3: 常见优化器对比?
- SGD:基础,需要手动调学习率,可加动量
- Adam:自适应学习率,收敛快,默认选择
- AdamW:Adam + 正确权重衰减,更适合大模型
- LAMB:Layer-wise 自适应,适合大 Batch 训练
Q4: 防止过拟合的神经网络技巧?
- Dropout / DropConnect
- BatchNorm / LayerNorm
- 早停(Early Stopping)
- 数据增强
- 权重正则化(L1/L2)
- 集成学习
六、CNN(卷积神经网络)
Q1: CNN 核心组件?
参考答案要点: - 卷积层:局部感受野 + 参数共享,提取空间特征 - 池化层:降采样(Max Pooling / Average Pooling),减少参数、增强平移不变性 - 全连接层:特征组合与分类 - 激活函数:ReLU 引入非线性
Q2: CNN 经典架构演进?
| 架构 | 特点 | 贡献 |
|---|---|---|
| LeNet-5 | 卷积+池化+全连接 | 开创 CNN 应用 |
| AlexNet | ReLU + Dropout + GPU | 深度学习复兴 |
| VGG | 小卷积核 (3×3) 堆叠 | 证明深度重要性 |
| GoogLeNet | Inception 模块 | 多尺度并行 |
| ResNet | 残差连接 | 解决梯度消失,支持极深网络 |
| EfficientNet | 复合缩放 | 精度与效率平衡 |
Q3: CNN 在图像处理中的应用?
- 图像分类、目标检测(YOLO/Faster R-CNN)、语义分割(U-Net/DeepLab)
- OCR(文字识别)、人脸识别、图像生成(GAN/Diffusion)
七、Transformer
Q1: Transformer 核心架构?
参考答案要点: - 编码器-解码器架构,基于自注意力机制 - 编码器:N 层堆叠,每层含多头自注意力 + 前馈网络 + 残差连接 + LayerNorm - 解码器:N 层堆叠,每层含掩码自注意力 + 编码器-解码器注意力 + 前馈网络 - 自注意力公式:Attention(Q,K,V) = Softmax(QKT/√d_k)·V
Q2: 为什么需要位置编码?
- Transformer 无循环/卷积结构,无法捕捉序列顺序
- 正弦/余弦位置编码或可学习位置编码注入位置信息
Q3: 多头注意力的作用?
- 拆分为多个"头"并行计算,每个头关注不同维度的语义关联
- 拼接后线性变换,综合多视角特征
Q4: Transformer 训练常见问题及解决?
| 问题 | 原因 | 解决方案 |
|---|---|---|
| 显存不足 | 自注意力 O(n²) 复杂度 | 梯度累积、混合精度、量化、梯度检查点 |
| 训练速度慢 | 单卡、数据加载慢 | 分布式训练、多进程数据加载、混合精度 |
| 过拟合 | 数据量小、模型过大 | 正则化、早停、数据增强、降低复杂度 |
| 注意力失效 | 关键信息未聚焦 | 注意力掩码、对比学习、领域适配 |
八、BERT
Q1: BERT 核心设计?
参考答案要点: - 全称:Bidirectional Encoder Representations from Transformers - 仅使用编码器:专注语言理解(分类/NER/语义匹配),不需要生成 - 双向自注意力:每个 token 同时关注左右上下文(区别于单向 GPT) - 输入嵌入:词嵌入 + 段嵌入 + 可学习位置嵌入
Q2: BERT 预训练任务?
- MLM(掩码语言模型):随机掩码 15% token,预测被掩码 token → 学习双向上下文
- NSP(下一句预测):判断句子对是否连续 → 学习句子间逻辑关系
Q3: BERT 下游任务适配?
- 分类:取
[CLS]输出 + 全连接层 - NER:取每个 token 输出 + 全连接层,预测实体类型
- 句子对匹配:
[CLS] 句子A [SEP] 句子B [SEP]→[CLS]向量分类
Q4: BERT 改进模型?
- RoBERTa:去 NSP、更大 Batch/数据、动态掩码
- ALBERT:跨层参数共享、句子顺序预测替代 NSP
- DistilBERT:知识蒸馏,70% 参数、97% 性能、60% 速度提升
九、LLM(大语言模型)
Q1: LLM 核心架构演进?
参考答案要点: - Decoder-only 架构(GPT 系列)成为主流 - 关键组件:RMSNorm、RoPE(旋转位置编码)、SwiGLU 激活、Grouped Query Attention - 模型规模从 7B → 70B → 万亿参数
Q2: LLM 预训练 vs 微调?
| 阶段 | 目的 | 数据 | 方法 |
|---|---|---|---|
| 预训练 | 学习语言和世界知识 | 海量无标注文本 | Next Token Prediction |
| SFT(指令微调) | 学习遵循指令 | 高质量指令数据 | 有监督微调 |
| RLHF / DPO | 对齐人类偏好 | 偏好对比数据 | 强化学习 / 直接偏好优化 |
Q3: LLaMA Factory 全流程工具?
参考答案要点: - 支持 100+ 主流模型(LLaMA/Qwen/ChatGLM/Mistral) - PEFT 高效微调(LoRA/QLoRA/DoRA) - 4bit 量化(消费级 GPU 可运行) - 支持 SFT/RM/PPO/DPO - WebUI + CLI 双入口
十、LangChain
Q1: LangChain 核心组件?
参考答案要点: | 组件 | 作用 | |------|------| | Model I/O | LLM/ChatModel 封装、Prompt 管理、输出解析 | | Retrieval | 文档加载、文本切分、Embedding、向量存储 | | Chains | 组件串联(如 RetrievalQA 链) | | Agents | 工具调用、ReAct 模式、决策循环 | | Memory | 对话历史管理(Buffer/Summary/VectorStore) | | Callbacks | 执行过程监控和日志 |
Q2: LangChain 常见 Chain 类型?
- LLMChain:基础 LLM 调用 + Prompt
- RetrievalQA:RAG 标准流程(检索 + 生成)
- ConversationalRetrievalChain:多轮对话 RAG
- Stuff/Map-Reduce/Refine:长文档处理策略
十一、LangGraph
Q1: LangGraph 解决什么问题?
参考答案要点: - LangChain 的线性 Chain 不足以表达复杂的多步骤、循环、条件分支逻辑 - LangGraph 基于有向图建模,支持: - 循环(Agent 决策循环) - 条件分支(根据 LLM 输出决定下一步) - 状态持久化(Checkpointer) - 人机协同(Human-in-the-loop)
Q2: LangGraph 核心概念?
- StateGraph:定义图结构,节点(函数)和边(转换逻辑)
- State:图的全局状态,在节点间传递
- Tool Node:工具调用节点
- Checkpointer:状态持久化,支持断点续传
十二、LangSmith
Q1: LangSmith 的作用?
参考答案要点: - LLM 应用开发的全生命周期平台 - Trace:记录每次 LLM 调用的输入/输出/延迟/Token 消耗 - Dataset:管理测试数据集 - Evaluation:自动化评估(准确率、事实一致性等) - Prompt Hub:Prompt 版本管理 - 用于调试、监控、迭代优化
十三、ReAct 模式
Q1: ReAct 核心思想?
参考答案要点:
- Reasoning + Acting:让 LLM 交替进行思考和行动
- 思维链(CoT)+ 工具调用相结合
- 标准格式:
Thought: 我需要做什么...
Action: 调用什么工具...
Observation: 工具返回结果...
Thought: 基于结果我下一步...
...
Final Answer: 最终答案
Q2: ReAct 相比传统方法的优势?
- 比 CoT 更强:可调用工具获取外部信息,不局限于内部知识
- 比纯工具调用更强:有推理过程,能根据结果动态调整策略
- 适用于:多跳问答、复杂任务规划、信息检索
十四、多 Agent 架构
Q1: 常见多 Agent 架构模式?
参考答案要点: | 架构 | 说明 | 适用场景 | |------|------|----------| | 管道(Pipeline) | Agent A → Agent B → Agent C | 线性处理流程 | | 路由(Router) | 根据输入选择不同 Agent | 意图识别后分流 | | 并行(Parallel) | 多个 Agent 并行处理 | 多维度分析 | | 监督者(Supervisor) | 主 Agent 协调多个子 Agent | 复杂任务分解 | | 辩论(Debate) | 多个 Agent 互相辩论 | 质量校验、减少幻觉 | | 市场(Marketplace) | Agent 竞价完成任务 | 资源分配优化 |
Q2: AutoGen / CrewAI / LangGraph 多 Agent 框架对比?
- AutoGen(微软):对话式多 Agent,灵活但调试复杂
- CrewAI:角色扮演 + 任务分工,适合业务流程
- LangGraph:图结构建模,精确控制流转,适合复杂逻辑
十五、Prompt Engineering
Q1: Prompt 设计核心原则?
参考答案要点: 1. 明确指令:清晰说明任务、格式、约束 2. 提供上下文:背景信息、示例(Few-shot) 3. 结构化:使用分隔符、XML 标签组织内容 4. 思维链:引导逐步推理("Let's think step by step") 5. 约束输出:指定输出格式(JSON/Markdown/列表)
Q2: Few-shot Prompting 技巧?
- 选择代表性示例(覆盖不同场景)
- 示例格式与期望输出一致
- 按难度递增排列
- 避免示例中的偏见(平衡正负样本)
Q3: Prompt 安全与防护?
- 系统指令优先级高于用户输入
- 输入过滤(注入检测、敏感词)
- 输出过滤(幻觉检测、安全策略)
- Prompt 模板变量转义
十六、向量数据库:Qdrant & Milvus
Q1: Qdrant vs Milvus 对比?
| 维度 | Qdrant | Milvus |
|---|---|---|
| 语言 | Rust | Go + C++ |
| 部署 | 单节点 / 分布式 | 分布式优先 |
| 索引 | HNSW 为主 | IVF/IVF_SQ8/HNSW/DiskANN |
| 过滤 | 强(Payload 过滤) | 支持 |
| 适用场景 | 中小规模、开发友好 | 大规模、企业级 |
| 生态 | 相对轻量 | 云原生、Attu 管理工具 |
Q2: 向量索引算法?
- HNSW(Hierarchical Navigable Small World):多层图结构,速度快、内存占用高
- IVF(Inverted File Index):聚类后搜索,内存友好
- DiskANN:磁盘索引,超大规模数据集
- Flat/Brute Force:精确但慢,适合小数据集
Q3: 向量数据库优化?
- 选择合适维度(768/1024/1536)
- 合理设置 n_probe / ef_search 参数
- 结合标量过滤减少搜索空间
- 定期重建索引(数据量大时)
十七、Neo4j(图数据库)
Q1: Neo4j 核心概念?
参考答案要点: - 属性图模型:节点(Node)、关系(Relationship)、属性(Property)、标签(Label) - Cypher 查询语言:声明式图查询,类似 SQL 但面向图 - 索引:节点属性索引、全文索引、向量索引(5.0+)
Q2: 图数据库 vs 关系型数据库?
| 维度 | 图数据库 | 关系型数据库 |
|---|---|---|
| 关联查询 | 原生支持,性能好 | JOIN 操作,深关联性能差 |
| 灵活 Schema | 是 | 否 |
| 适用场景 | 社交网络、知识图谱、推荐系统 | 事务处理、报表统计 |
Q3: Neo4j 在 RAG 中的应用?
- 实体关系存储(NER 提取的实体 + 关系)
- 多跳检索(通过图遍历找到关联信息)
- Graph RAG:向量检索 + 图遍历混合检索
十八、RAG(检索增强生成)
Q1: RAG 核心流程?
参考答案要点: 1. 文档处理:加载 → 清洗 → 切分 → Embedding → 向量入库 2. 检索:用户 Query → Embedding → 向量相似度检索 → Top-K 文档 3. 生成:检索结果 + Query + Prompt → LLM → 生成答案
Q2: RAG 核心缺点及解决措施?
| 缺点 | 解决措施 |
|---|---|
| 检索精度低 | 混合检索(向量 + BM25)、语义切分、Cross-Encoder 精排 |
| 生成幻觉 | 强制引用标注、事实校验、结构化 Prompt、CoT 提示 |
| 工程维护成本高 | 增量更新、版本管理、自动化清洗、轻量向量库选型 |
| 复杂推理不足 | RAG + Agent 架构、Self-RAG 自优化机制 |
Q3: RAG 四要素制约关系?
数据特点 → 分块切片 → 向量维度 → 模型选型 → 反向适配
- 数据特点决定分块:短文本 50-100 tokens,长文档 200-500 tokens(按语义边界)
- 分块决定向量维度:小粒度 768 维足够,大粒度需 1024+ 维
- 分块 + 维度决定模型:小粒度 + 低维 → 轻量模型(BERT-base);大粒度 + 高维 → 大模型
- 模型反向要求数据适配:通用模型处理专业数据需强化领域关键词
十九、Graph RAG
Q1: Graph RAG vs 传统 RAG?
| 维度 | 传统 RAG | Graph RAG |
|---|---|---|
| 知识表示 | 文本块向量,无显式结构 | 实体-关系三元组,图结构 |
| 检索机制 | 纯向量相似度匹配 | 向量匹配 + 图遍历 |
| 推理能力 | 擅长单跳、细节查询 | 适配多跳、因果/关联推理 |
| 可解释性 | 低 | 高(子图、路径展示) |
| 构建成本 | 低 | 高(NER + 关系抽取 + 图谱) |
| 适用场景 | 通用问答、文档检索 | 多跳问答、实体推理、复杂摘要 |
Q2: Graph RAG 实施步骤?
- 从文本提取实体和关系(NER + 关系抽取)
- 构建知识图谱(Neo4j / NebulaGraph)
- 检索时结合向量匹配与图遍历
- 生成时融合图谱信息和文本块信息
Q3: 融合方案(推荐)?
- 基础查询走传统 RAG(低延迟)
- 多跳/推理查询触发 Graph RAG
- 用图谱的实体-关系校验 RAG 结果,降低幻觉率
二十、MM RAG(多模态 RAG)
Q1: MM RAG 核心概念?
参考答案要点: - 传统 RAG 仅处理文本,MM RAG 处理文本 + 图像 + 音频 + 视频等多模态数据 - 核心:多模态 Embedding(CLIP、BLIP、Qwen-VL) - 检索:跨模态检索(文本搜图、图搜文、图文联合检索)
Q2: MM RAG 技术方案?
- 文本模态:文本 Embedding → 向量库
- 图像模态:CLIP 图像 Embedding → 向量库
- 联合检索:文本 Query → 检索相关文本 + 图像 → 多模态 LLM 生成
- 应用场景:以图搜文、文档图文联合理解、多模态问答
二十一、召回方法
Q1: 常见召回方法?
| 方法 | 原理 | 特点 |
|---|---|---|
| 向量召回 | Embedding + 相似度(Cosine/IP) | 语义匹配,泛化能力强 |
| BM25 召回 | 词频-逆文档频率 | 精确匹配,术语友好 |
| 关键词召回 | 倒排索引精确匹配 | 快速、精确 |
| 规则召回 | 业务规则过滤(如标签、分类) | 精准控制 |
| 协同过滤召回 | 用户行为相似度 | 推荐场景 |
| 图召回 | 图遍历找关联实体 | 多跳关联 |
Q2: 召回策略设计原则?
- 多路召回互补:语义 + 精确 + 规则
- 召回数量:每路 Top-N,总数控制在精排可处理范围
- 去重融合:多路结果合并去重
二十二、重排方法(Reranking)
Q1: Reranking 方法?
| 方法 | 原理 | 特点 |
|---|---|---|
| Cross-Encoder 精排 | Query + 文档联合编码,输出匹配分数 | 精度高,速度慢 |
| 规则重排 | 时间、权威度、距离等业务规则加权 | 灵活可控 |
| LLM 重排 | LLM 判断相关度排序 | 灵活但成本高 |
| 学习排序(Learning to Rank) | 训练排序模型(LambdaMART) | 可训练优化 |
Q2: Reranking 流程?
- 粗排:向量检索 / BM25 召回 Top-50~100
- 精排:Cross-Encoder 计算 Query-文档匹配分
- 业务加权:时间衰减、权威度、用户偏好
- 输出 Top-10 送入 LLM
二十三、多路融合方法
Q1: 多路召回融合方法?
| 方法 | 原理 | 适用场景 |
|---|---|---|
| 简单拼接 | 多路结果直接拼接去重 | 快速实现 |
| 加权融合 | 各路结果按权重排序合并 | 有明确优先级 |
| RRF(Reciprocal Rank Fusion) | 1/(k + rank) 倒数排名融合 | 无明确权重时效果好 |
| 学习融合 | 训练模型学习多路结果权重 | 有标注数据时最优 |
| Borda Count | 排名投票制 | 多路均衡时 |
Q2: RRF 公式?
RRF_score(d) = Σ 1/(k + rank_i(d))
- k 通常取 60
- 对各路结果的排名取倒数求和,无需调权重
二十四、模型训练
Q1: 模型训练完整流程?
参考答案要点: 1. 数据准备:收集 → 清洗 → 标注 → 划分(7:2:1) 2. 模型选型:根据任务选择(分类/回归/生成/检索) 3. 训练:选择优化器、学习率、Batch Size、Epoch 4. 验证:监控验证集指标,早停 5. 测试:在独立测试集上评估 6. 部署:导出模型(ONNX/TensorRT),服务化(FastAPI/TorchServe)
Q2: 训练调参技巧?
- 学习率:从 1e-3 开始,配合学习率调度(Cosine / Warmup)
- Batch Size:显存允许范围内尽量大,大 Batch 需大学习率
- 优化器:AdamW 默认选择
- 梯度裁剪:防止梯度爆炸(max_grad_norm=1.0)
- 混合精度:FP16/BF16 加速训练
Q3: 分布式训练?
- Data Parallel:每卡完整模型,数据分片
- Distributed Data Parallel (DDP):推荐方案
- DeepSpeed ZeRO:超大模型显存优化
- FSDP(Fully Sharded Data Parallel):PyTorch 原生 ZeRO 实现
二十五、模型微调
Q1: 全量微调 vs PEFT 微调?
| 维度 | 全量微调 | PEFT(参数高效微调) |
|---|---|---|
| 训练参数 | 全部 | 少量(< 5%) |
| 显存需求 | 高 | 低 |
| 效果 | 上限高 | 接近全量微调 |
| 适用场景 | 有充足算力 | 消费级 GPU / 快速验证 |
Q2: 常见 PEFT 方法?
| 方法 | 原理 | 特点 |
|---|---|---|
| LoRA | 低秩矩阵旁路更新 | 显存低、效果好、可插拔 |
| QLoRA | LoRA + 4bit 量化 | 消费级 GPU 可跑 7B 模型 |
| Prefix-Tuning | 在输入前添加可训练前缀 | 适合生成任务 |
| P-Tuning v2 | Prompt 可训练版本 | 通用性强 |
| DoRA | 分解权重更新 | 比 LoRA 更稳定 |
Q3: 微调最佳实践?
- 数据质量优先:少量高质量数据 > 大量低质量数据
- 学习率:PEFT 用 1e-4 ~ 5e-4,全量用 1e-5 ~ 5e-5
- Epoch:3 ~ 5 轮,避免过拟合
- 评估:多维度评估(准确率/F1/人工评测)
- 模型合并:LoRA 权重合并到基座模型或保持分离
二十六、命名实体识别(NER)
Q1: NER 任务类型与标注体系?
任务类型:Flat NER(扁平)、Nested NER(嵌套)、Discontinuous NER(不连续)
标注体系: | 体系 | 说明 | 示例 | |------|------|------| | BIO | B-开头 I-内部 O-非实体 | B-PER 张,I-PER 三,O 在 | | BIOES | 增加 E-结尾 S-单字符 | 更精准区分边界 | | BMES | B-M-E-S | 适合中文等细粒度语言 |
Q2: NER 模型架构?
- BERT + CRF:BERT 编码语义,CRF 优化序列标注全局一致性
- 学习率:BERT 部分 2e-5 ~ 5e-5,CRF 层 1e-3
- 领域适配:领域文本继续预训练 → 标注数据任务微调
Q3: NER 工程优化?
- 模型量化(FP32 → INT8/FP16)
- 模型裁剪(DistilBERT 70% 大小,速度 +60%)
- 批量推理(提升吞吐量)
- 后处理:实体去重、规则校验、实体链接到知识图谱
二十七、面试官评分指南
| 维度 | 不合格 (Junior) | 合格 (Mid) | 优秀 (Senior/Lead) |
|---|---|---|---|
| 算法基础 | 仅知道基本排序 | 能分析复杂度、选合适算法 | 能设计自定义算法解决业务问题 |
| 机器学习 | 仅调用 API | 理解原理、能调参 | 能从头实现、解决过拟合等难题 |
| 深度学习 | 知道 CNN/RNN 概念 | 理解 Transformer、能微调 | 能设计架构、优化训练效率 |
| LLM/RAG | 仅会使用 ChatGPT | 能搭建 RAG 系统、微调模型 | 能设计多 Agent 架构、优化全链路 |
| 工程能力 | 无部署经验 | 能用 FastAPI 部署模型 | 能设计高可用推理服务、性能优化 |
| 业务理解 | 不了解业务场景 | 能将算法映射到业务需求 | 能主动发现算法优化业务的机会 |
Page Source