LLM面试8大实操问题:从原理到显存数字的工程真相
1. 这不是“背题库”而是考察你和大模型真实相处的能力最近在多个技术社区和面试复盘帖里反复看到一句扎心的话“问LLM基础题不是考你能不能背出Transformer公式是看你在项目里有没有真正用过、调过、踩过坑。”这句话背后藏着一个被很多人忽略的事实当前大模型岗位的筛选逻辑已经从“知识广度测试”悄然转向“实操痕迹识别”。我参与过某高校实验室、两家AI初创公司和一家传统企业AI中台的LLM方向面试评估发现一个稳定规律——所有被当场叫停的候选人问题都不出在答错某个定义上而是在回答“你用过哪些开源模型”时脱口而出“Llama3、Qwen、GLM”却说不清自己本地跑过哪个版本、量化用了什么参数、推理时显存峰值出现在哪一步。这暴露的是“接触≠使用下载≠理解”的断层。标题里说的“8个问题”本质是8个行为探测点。比如问“为什么需要RoPE位置编码”表面考理论实际在等你讲出“我在微调一个长文本摘要任务时原始位置编码导致2048长度后loss突然震荡换成RoPE后收敛稳定了”再比如问“LoRA和QLoRA的区别”高手会直接掏出终端截图“你看我用peftbitsandbytes跑QLoRA--load-in-4bit --bnb-4bit-quant-type nf4 --bnb-4bit-compute-dtype bfloat16显存从24G压到9.2G但eval loss比纯LoRA高0.03所以生产环境我选LoRA只在POC阶段用QLoRA快速验证”。这种带着温度、带参数、带代价权衡的回答才是面试官想听的。关键词“LLM面试”“必问问题”“淘汰”组合在一起指向的不是知识恐慌而是能力映射失效的风险。如果你刷了50道题却依然紧张很可能是因为你把“面试准备”当成了“知识搬运”而忽略了所有优质LLM岗位真正要找的人能独立完成一次从模型选型→数据清洗→指令构造→训练配置→效果诊断→部署验证闭环的执行者。这篇文章不提供标准答案而是还原这8个问题背后的实操现场——告诉你每个问题在真实项目里对应哪块显卡、哪行代码、哪次报错以及为什么答错某个细节就可能让面试官判定“你没亲手干过”。2. 问题拆解与底层逻辑为什么这8个点成为硬性门槛2.1 问题设计的本质是“行为指纹采集”面试官手里的8个问题不是随机抽选的知识点而是一套经过验证的“行为指纹采集系统”。它不依赖你是否记得某个论文标题而是通过你的回答路径反向推导你是否经历过真实的LLM工程闭环。我们以其中三个典型问题为例拆解其设计逻辑问题1“Transformer中Attention计算为什么要除以√dₖ”这不是考数学推导而是探测你是否调试过梯度异常。我见过最典型的错误回答是“因为要缩放方差避免softmax输出过于尖锐”。这没错但面试官真正想听到的是“我在用HuggingFace Trainer微调时把q_proj的weight初始化从default改成torch.nn.init.xavier_normal_没加scale结果前3个epoch梯度norm爆到1e6加了√dₖ缩放后稳定在0.8~1.2之间”。前者是教科书复述后者是显存监控器里跳动的数字。问题2“如何判断一个LLM是否产生了幻觉”标准答案常聚焦于“事实核查”“引用溯源”但实操中更关键的是信号捕捉。某次我们给金融客服模型做上线前测试发现它对“2023年Q3营收”回答准确但对“2023年Q3环比增长率”给出虚构数值。排查发现不是模型本身问题而是RAG检索阶段向量数据库把“Q3财报”和“Q2财报”chunk混排导致context拼接错误。所以真正有效的幻觉检测是结合日志埋点如记录每个response对应的retrieved chunk id、置信度阈值logits softmax后的max概率0.65则触发人工审核、以及领域规则校验金融数据必须含“来源XX公告”字样的三层机制。答不出这个说明你没处理过线上bad case。问题3“为什么微调时常用Lora而不是全参数微调”正确答案不能停留在“节省显存”必须带出成本换算。比如“全参微调7B模型需2×A100 80G单卡显存占用42G按云服务报价$3.2/h一个epoch耗时1.8h总成本$11.5LoRA秩设为64显存压到18G单卡可跑epoch耗时升至2.3h但总成本降到$1.8且支持热插拔不同LoRA adapter应对多业务线ROI提升5倍”。这种回答背后是真实的预算审批经验。提示所有“必问问题”的陷阱在于——它默认你已跨过“能跑通demo”的初级阶段进入“要为结果负责”的工程阶段。如果你的回答里没有显存数字、时间成本、错误率变化、AB测试指标面试官会默认你尚未进入该能力域。2.2 领域适配性决定问题权重不同岗位对8个问题的考察深度差异极大这直接影响你准备策略岗位类型重点考察问题实操证据要求典型淘汰点算法研究员Attention机制、位置编码、损失函数设计需展示自定义attention mask实现、梯度检查代码无法解释为什么交叉熵损失在长文本生成中会导致重复MLOps工程师量化方法、推理加速、部署监控必须提供triton kernel优化前后latency对比、prometheus监控面板截图说不清vLLM的continuous batching如何降低P99延迟应用开发岗RAG流程、Prompt工程、工具调用要求演示LangChain中CustomRetriever的override逻辑、function calling的schema validation失败日志把RAG简单等同于“向量检索拼接prompt”我曾面试一位候选人他精准回答了全部8个问题的理论定义但在追问“请描述你最近一次RAG项目中如何解决query改写导致召回率下降的问题”时支吾说“我们用了HyDE方法”。当我要求他写出HyDE prompt模板并解释为什么选择temperature0.3而非0.7时他承认是复制了GitHub demo。这个案例印证了一个残酷现实理论正确性只是入场券实操痕迹才是通行证。2.3 时间压力下的认知负荷测试这8个问题通常被压缩在15分钟内连续抛出本质是施加认知负荷压力。面试官观察的不仅是答案更是你调用知识的路径当问及“KV Cache原理”时高手会先画简图“假设batch_size4, seq_len1024每个token生成时K和V矩阵尺寸是[4,32,1024,128]cache就是把每次计算的K/V沿seq_len维度append下次decode只需计算新token的Q再与整个cache做matmul”同时手指在白板上模拟append操作而新手常陷入术语循环“KV Cache就是缓存Key和Value……因为Transformer需要……attention需要……所以要缓存……”。这种差异暴露的是思维模式前者用空间换时间把抽象概念锚定在具体张量维度上后者用概念解释概念陷入语言空转。在真实LLM工程中debug的核心能力正是将问题映射到tensor shape、memory layout、cuda stream等底层实体。3. 核心问题逐个击破从原理到实操的完整链路3.1 问题1Self-Attention中QKV矩阵的初始化方式如何影响训练稳定性这个问题直指LLM训练的“地基工程”。很多候选人知道“Xavier初始化”但不知道为什么在LLM中要调整。我们来看真实场景某次微调Qwen-1.5B用于法律文书生成初始用torch.nn.init.xavier_uniform_初始化q_proj训练第2个epoch出现loss nan。用torch.autograd.gradcheck检查梯度发现q_proj.weight梯度norm达1e7。根本原因在于Xavier初始化假设输入服从均匀分布但LLM的embedding层输出实际是正态分布且经过LayerNorm后方差被强制归一化。当q_proj接收一个方差≈1的输入若权重初始化标准差仍按Xavier的1/√d_in设置d_in4096时≈0.0156则Q矩阵元素方差≈0.0156²×4096≈1.0导致QKᵀ结果方差≈1.0×dₖ128远超softmax稳定范围。实操解决方案# 正确做法采用RotaryEmbedding论文推荐的初始化 def init_qkv_weights(module): if isinstance(module, nn.Linear) and q_proj in module._get_name(): # 按RoPE论文建议q_proj/k_proj/v_proj统一用std0.02 nn.init.normal_(module.weight, std0.02) if module.bias is not None: nn.init.zeros_(module.bias) elif isinstance(module, nn.Linear) and o_proj in module._get_name(): # o_proj需补偿缩放std0.02 * sqrt(2/d_model) nn.init.normal_(module.weight, std0.02 * (2/4096)**0.5) model.apply(init_qkv_weights)注意0.02这个值来自Llama官方config.json中的initializer_range字段不是凭空设定。它经过大规模实验验证在d_model4096时能平衡梯度流。如果你用其他d_model需按比例缩放std 0.02 × √(4096/d_model)。避坑心得我踩过的最大坑是在LoRA微调时只初始化base model权重忘记LoRA A/B矩阵也需要特殊初始化。LoRA A矩阵应设为nn.init.kaiming_uniform_(a, a5)保证稀疏性B矩阵初始化为零避免引入额外偏差。否则LoRA微调初期loss震荡剧烈误判为数据问题。3.2 问题2RoPE位置编码相比绝对位置编码的优势以及其实现中的关键细节RoPE已成为LLM事实标准但多数人只知其名不知其痛。我们以Qwen-2的RoPE实现为例看真实工程细节Qwen-2使用rotary_emb RotaryEmbedding(dim128, max_position_embeddings32768)其中dim128是head_dim。关键细节在于RoPE不是简单地对Q/K加旋转而是对Q/K的偶数位和奇数位分别做cos/sin变换。具体到CUDA kernel实现它要求Q/K张量按[batch, head, seq_len, dim]布局且dim必须为偶数。如果dim127kernel会直接报错。实操验证步骤在transformers源码中定位modeling_qwen2.py的Qwen2RotaryEmbedding类查看forward方法中inv_freq计算inv_freq 1.0 / (self.base ** (torch.arange(0, self.dim, 2).float() / self.dim))注意torch.arange(0, self.dim, 2)生成0,2,4,...,126共64个频率这是RoPE能保持旋转不变性的数学基础为什么绝对位置编码被淘汰在真实长文本任务中如处理100页PDF绝对位置编码的position_id达到10000时embedding向量会严重偏离训练分布。我们做过对比实验用绝对位置编码微调Qwen-1.5B处理法律合同平均长度8192验证集loss比RoPE高0.42且生成文本中“第X条”出现频率下降37%——因为模型把高position_id当噪声过滤了。独家技巧RoPE的max_position_embeddings参数不能乱设。Qwen-2官方设为32768但如果你的业务场景最长只需4096应显式修改为4096。否则RoPE会预计算32768个位置的cos/sin表浪费1.2GB显存。修改方法from transformers import Qwen2Config config Qwen2Config.from_pretrained(Qwen/Qwen2-1.5B) config.max_position_embeddings 4096 # 关键 model Qwen2ForCausalLM.from_config(config)3.3 问题3LoRA微调中r秩、alpha缩放系数、dropout丢弃率三个超参的实际影响LoRA参数不是调参游戏而是显存、精度、训练速度的三角博弈。我们用实测数据说话在A100 80G上微调Qwen-1.5B数据集为10万条医疗问答对比不同LoRA配置ralphadropout显存占用训练速度(tokens/s)eval lossPPL8160.0518.2G1421.876.4816320.121.5G1281.795.99641280.0528.7G951.725.5864640.0528.7G951.755.77关键发现alpha/r比值决定补偿强度。当alpha/r2时如r16,alpha32效果最优若alpha/r1r64,alpha64loss反而上升说明补偿不足。dropout对小rr≤16几乎无效因为低秩矩阵本身已具正则化效果仅当r≥32时dropout才开始抑制过拟合。最佳实践r16, alpha32, dropout0.05这是我们在12个业务场景中验证的黄金组合兼顾显存、速度、精度。实操陷阱LoRA的target_modules不能盲目设为所有Linear层。Qwen-2中q_proj,k_proj,v_proj,o_proj,gate_proj,up_proj,down_proj都可加LoRA但lm_head必须排除。因为lm_head的输出维度vocab_size151936远大于hidden_size4096加LoRA会导致显存爆炸。正确配置lora_config LoraConfig( r16, lora_alpha32, target_modules[q_proj, k_proj, v_proj, o_proj, gate_proj, up_proj, down_proj], lora_dropout0.05, biasnone, task_typeCAUSAL_LM )3.4 问题4RAG系统中如何设计Query改写Query Rewriting来提升召回率RAG不是“扔个query进去就完事”Query改写是决定效果上限的关键环节。我们以法律咨询场景为例原始用户query“交通事故对方全责我脚骨折了能赔多少”直接向量检索召回率仅32%因为向量库中文档多用“人身损害赔偿”“伤残等级鉴定”等专业术语而用户用口语化表达。我们的四步改写方案意图识别用轻量级分类器DistilBERT微调判断query属于“赔偿计算”“责任认定”“流程咨询”三类本例判为“赔偿计算”术语映射构建法律术语同义词表将“脚骨折”→“足部骨折”“踝关节骨折”“跖骨骨折”“赔多少”→“赔偿金额”“伤残赔偿金”“误工费计算”结构化扩展按法律逻辑补全要素生成“【事故责任】对方全责【伤情】足部骨折需明确是否构成伤残【诉求】计算赔偿金额含医疗费、误工费、护理费、残疾赔偿金”向量融合将原始query和改写query的embedding做加权平均原始权重0.3改写权重0.7送入向量库检索实测效果召回率从32%提升至89%且首条结果相关度人工评分从2.1/5升至4.6/5。注意Query改写不是越复杂越好。我们测试过用LLM做改写如用Qwen-1.5B生成3个变体虽然召回率升至92%但P99延迟从120ms增至480ms线上服务不可接受。最终选择规则轻模型方案在延迟和效果间取得平衡。3.5 问题5vLLM推理框架中PagedAttention的内存管理原理vLLM的杀手锏是PagedAttention它解决了传统Attention的内存碎片问题。理解它等于掌握LLM服务化的底层逻辑。传统Attention中每个请求的KV Cache按sequence length分配连续显存。例如100个并发请求长度从128到4096不等显存分配会产生大量碎片。vLLM将其改为类似操作系统内存分页将显存划分为固定大小的block默认16个token每个请求的KV Cache分散存储在多个block中通过block table索引。实操验证启动vLLM服务时添加--block-size 32增大block size减少table开销监控显存block_size16显存占用22.4GP99延迟89msblock_size32显存占用21.1GP99延迟76msblock_size64显存占用20.8G但P99延迟升至92ms因block内token过多attention计算效率下降关键参数--max-num-seqs最大并发请求数设为256时block table内存约1.2MB可忽略--gpu-memory-utilization显存利用率设为0.9时vLLM会动态调整block数量避免OOM避坑指南不要盲目调高--max-model-len。Qwen-2官方max_length32768但vLLM默认只分配16384。若强行设为32768block table内存翻倍且大部分block长期空闲。正确做法是按业务95分位长度设置如法律文档平均长度5120则设--max-model-len 8192。3.6 问题6如何诊断和解决LLM生成中的重复输出Repetition问题重复输出是LLM落地最头疼的bug之一。它不是模型缺陷而是解码策略与模型特性的不匹配。根因分析三层次Token层面logits中某几个token概率异常高导致连续采样相同token。用torch.topk(outputs.logits[0, -1], k5)查看末尾token的top5 logits若某token概率0.85大概率重复。Sequence层面ngram重复检测。我们用nltk.ngrams(token_ids, 3)扫描生成序列若3-gram重复出现2次触发惩罚。语义层面即使token不同语义重复。如“赔偿金额约为”“赔偿数额大约是”“赔付数目大概是”——需用sentence-transformers计算embedding余弦相似度0.95即判重复。实操解决方案# 在transformers generate中启用多重惩罚 output model.generate( input_ids, max_new_tokens512, do_sampleTrue, temperature0.7, top_p0.9, repetition_penalty1.2, # token级惩罚 no_repeat_ngram_size3, # ngram级惩罚 eos_token_idtokenizer.eos_token_id, pad_token_idtokenizer.pad_token_id )独家技巧对法律/医疗等专业领域重复常源于模板化表达。我们开发了领域敏感重复检测构建“赔偿”“责任”“鉴定”等核心词的同义词组当检测到同义词组在短距离内高频出现即触发重采样。该方案使法律文书生成重复率从12.3%降至1.7%。3.7 问题7量化推理中NF4与FP4的区别以及何时选择哪种量化方式量化不是“越小越好”NF4Normal Float 4和FP4Floating Point 4的选择取决于硬件和精度要求。NF4原理将权重分布强制拟合为标准正态分布N(0,1)然后用4bit表示其分位数。Qwen-2官方量化用的就是NF4因为它对LLM权重分布拟合度高LLM权重天然接近正态。FP4原理用4bit表示指数尾数类似IEEE浮点但指数位更少。优势是动态范围大适合权重分布偏斜的模型如某些视觉-语言模型。实测对比Qwen-1.5B on A100量化方式显存占用PPLWikiText推理速度适用场景NF45.2G12.8185 tokens/s通用LLM推理FP44.8G15.3192 tokens/s对延迟极致敏感可容忍精度损失INT44.5G28.6210 tokens/sPOE验证非生产环境关键结论生产环境首选NF4它在精度和速度间取得最佳平衡FP4仅在NF4不支持的硬件如部分Jetson设备上作为备选绝对不要用INT4做生产推理PPL20意味着生成质量不可控。配置命令# NF4量化推荐 vllm serve Qwen/Qwen2-1.5B --dtype bfloat16 --quantization bitsandbytes --load-in-4bit --bnb-4bit-quant-type nf4 # FP4量化谨慎使用 vllm serve Qwen/Qwen2-1.5B --dtype bfloat16 --quantization bitsandbytes --load-in-4bit --bnb-4bit-quant-type fp43.8 问题8如何构建有效的LLM评估体系而非依赖单一指标LLM评估是最大误区区。很多团队用BLEU/ROUGE打分结果上线后用户投诉“答非所问”。真实评估必须分层第一层基础能力自动化忠实性Faithfulness用BERTScore计算生成文本与参考答案的token级相似度阈值0.85事实性Factuality用Google Search API对生成中的实体人名、机构、数字做验证错误率5%连贯性Coherence用GPT-4作为裁判对生成文本打分1-5分取平均分4.2第二层业务价值人工AB测试法律场景抽取生成文本中的“赔偿金额”“责任比例”“诉讼时效”三个关键字段与律师标注对比F10.9客服场景上线AB测试对照组用规则引擎实验组用LLM核心指标“首次解决率”提升8%第三层风险控制强制幻觉检测部署实时检测服务对每个response调用fact-checker模型置信度0.95则返回“我需要更多信息”合规审计用正则匹配敏感词如“保证”“绝对”“稳赚”命中即拦截实操教训我们曾因过度依赖ROUGE得分0.72上线一个医疗问答模型结果用户反馈“它告诉我吃维生素C能治癌症”。事后发现ROUGE高是因为模型复述了训练数据中的错误表述。从此我们规定任何LLM上线前必须通过“医生盲测”——邀请3位执业医师对100个case打分平均分4.5不予上线。4. 面试现场还原与避坑指南那些没人告诉你的细节4.1 面试官的“三秒判断法则”在技术面试中面试官对你的能力判断往往在前3秒就已完成。这不是玄学而是基于多年经验形成的模式识别当你听到问题后立即在白板上画出tensor shape或流程图面试官会认为你有工程直觉如果你开口第一句是“根据XX论文...”大概率被判定为理论派除非后续能立刻切换到实操语境若你回答时频繁使用“可能”“应该”“一般来说”暴露的是经验缺失——真实干过的人会说“我试过结果是...”“我们线上监控显示...”。真实案例面试一位候选人问“如何解决长文本生成中的上下文丢失”。他回答“可以用滑动窗口把长文本分段喂给模型”。这不算错但没触及本质。当追问“窗口大小设多少重叠多少token如何处理跨窗口的指代消解”时他卡住了。而另一位候选人直接掏出手机展示监控截图“我们用8192窗口2048重叠但发现‘他’指代前文人物时准确率仅63%。后来在prompt里加了‘请特别注意前文提到的人物关系’准确率升到89%”。后者当场进入下一轮。4.2 “不会答”比“答错”更危险但可以这样挽救面试中遇到完全不会的问题比答错更致命。但“不会”不等于“放弃”而是展现解决问题的方法论正确示范以“解释FlashAttention的IO优化原理”为例“这个问题我还没深入研究过FlashAttention的CUDA kernel但我知道它的目标是减少HBM访问。根据我调试vLLM的经验当batch_size增大时传统Attention的显存带宽成为瓶颈。我推测FlashAttention通过分块计算让每个block的数据在SRAM中复用减少HBM读写次数。为了验证我会1用Nsight Compute分析vLLM的kernel launch看shared memory usage2对比开启/关闭flash_attn时的HBM bandwidth指标。如果您允许我可以现在用colab跑个简单测试。”这种回答展示了承认知识边界不装懂关联已有经验vLLM调试提出可验证的假设SRAM复用给出具体验证路径Nsight、bandwidth错误示范“FlashAttention啊...好像是个加速库...我用过很快...”暴露零深度理解4.3 简历与面试回答的“一致性校验”面试官手上有你的简历他们会做严格的一致性校验。常见雷区简历写“精通vLLM”面试问“vLLM的scheduler有几种策略”答“没关注过”。简历写“微调Qwen-2提升30%准确率”问“提升的是哪个指标在哪个数据集baseline是什么”答“记不清了”。自查清单简历中每个技术名词必须能说出1你用它的具体场景2你调过的关键参数3你遇到的典型问题及解法。所有量化成果如“提升30%”必须准备好数据集名称、评估脚本链接、baseline模型版本、显著性检验p值。我们曾筛掉一位候选人只因他简历写“优化RAG延迟至200ms”但当问“200ms是P50还是P99在什么并发量下测得”他回答“应该是P50吧...并发没测过”。这暴露了成果水分。4.4 那些藏在问题背后的“真问题”有些问题看似考技术实则考工程素养和产品意识问“为什么用Qwen不用Llama”真问题你是否做过技术选型决策能否权衡中文能力、生态支持、商用许可✅ 正确回答“Qwen-2中文理解SOTA且阿里云提供全链路支持Llama3虽强但商用需Meta授权我们业务涉及金融数据合规风险高。”问“如何监控LLM服务”真问题你是否具备SRE思维能否定义SLI/SLO✅ 正确回答“我们定义SLI为‘响应时间1s且无幻觉’SLO为99.5%。用Prometheus采集vLLM metricsrequest_latency_ms、num_prompt_tokens、num_generation_tokens用Grafana看板监控P99延迟和幻觉率通过fact-checker服务返回的is_factual字段统计。”问“如果老板要求明天上线但模型还有幻觉怎么办”真问题你是否有上线红线意识能否做风险分级✅ 正确回答“立即启动降级方案1对高风险领域如医疗建议强制走规则引擎2对中风险如法律流程添加‘以上内容仅供参考’水印3对低风险如合同格式正常上线。同时同步启动幻觉修复专项48小时内交付hotfix。”4.5 终极避坑三个绝对不能踩的红线不要编造项目细节面试官只需一个追问就能戳穿“你说用LoRA微调那LoRA的r设多少为什么选这个值” 编造的数字必然矛盾。真实项目中r8/16/32/64都有合理场景但必须能解释选择逻辑。不要贬低其他技术说“RAG太low只有Agent才高级”暴露技术偏见。真实世界是混合架构RAG解决信息检索Agent解决工具调用二者互补。高手会说“我们用RAG做知识增强用Agent做合同生成两者通过统一orchestrator调度。”不要脱离业务谈技术所有技术方案必须锚定业务价值。当被问“为什么选vLLM”不能只说“它快”而要说“我们日均请求200万vLLM使单卡QPS从35提升至128服务器成本从42台降至15台年节省$280k。”5. 实战复盘一次完整LLM面试的全流程推演5.1 面试前72小时从知识整理到故事打磨面试不是知识考试而是故事讲述。你需要把技术点转化为有血有肉的项目片段Step1梳理你的“技术故事线”按“问题→行动→结果→反思”四要素准备3个核心故事故事1模型层“解决Qwen-2在长文本生成中的重复问题”问题法律文书生成中“根据《民法典》第XXX条”重复出现行动分析logits分布发现末尾token概率坍缩启用repetition_penalty1.2 no_repeat_ngram_size3结果重复率从15.2%降至2.1%用户满意度37%反思单纯调参不够需结合领域特征设计ngram检测故事2系统层“构建RAG系统的端到端监控”问题线上RAG服务幻觉率突增无法定位是检索问题还是生成问题行动在pipeline各节点埋点query_rewrite_score、retrieval_recall5、generation_factuality_score结果5分钟内定位到向量库更新故障MTTR从47分钟降至3分钟反思监控不是加metrics而是建因果链故事3业务层“LLM在保险理赔中的ROI验证”问题老板质疑LLM投入产出比行动设计AB测试对照组用传统NLU实验组用Qwen-2 RAG核心指标“首次解决率”和“坐席辅助时长”结果首次解决率22%坐席辅助时长-41%ROI3.8反思技术价值必须用业务语言表达Step2预测高频追问对每个故事预设5个追问“当时为什么没选其他方案”如为什么不用HyDE做query改写“数据怎么来的样本量多少”“这个提升在统计上显著吗”“如果现在重做会改进哪里”“这个方案能迁移到其他业务吗”**Step3技术点速