问题:法国总统的妻子是谁
1️⃣ 考察意图
面试官想考察你能否识别LLM的“事实性天花板”——模型参数无法存储所有动态事实,并给出工程化解决方案。这是系统设计+工程取舍型问题,刁钻点在于:看似简单(答案固定),实则暴露你是否理解“知识截止日期”和“幻觉”是LLM的硬伤,而非调参能解决。答好了能展示你对RAG、工具调用、Agent记忆更新的实战理解,以及从“给答案”到“设计系统”的思维跃迁。
2️⃣ 标准答
核心思路:先确认事实,再拆解LLM的局限性,最后给出Agent级解决方案。
- 事实确认:截至2025年,法国总统是埃马纽埃尔·马克龙(Emmanuel Macron),其妻子是布丽吉特·马克龙(Brigitte Macron)。但面试官不关心这个,而是看你如何应对“模型不知道”的情况。
- LLM的三大硬伤:
- 知识截止日期:GPT-4训练数据截止2023年,若法国总统在2024年换届,模型会给出错误答案。例如,2022年法国大选后,模型可能仍输出“马克龙”,但若2027年新总统上任,模型会完全失效。
- 幻觉:模型可能编造“玛丽·勒庞”或“瓦莱丽·特里耶韦勒”(前女友)等错误信息,因为训练数据中“法国总统妻子”的关联性弱,且多义性(如“妻子”可能指现任或前任)。
- 多义性:“妻子”可能被理解为“配偶”或“伴侣”,若用户问“法国总统的妻子是谁?”,模型需区分“现任总统”和“历史总统”。
- 解决方案:RAG + 工具调用 + 记忆更新
- RAG检索:用BM25(k1=1.5, b=0.75)做稀疏检索,结合DPR(Dense Passage Retrieval)做稠密检索,从Wikipedia或新闻API获取最新信息。为什么这么做:BM25擅长精确匹配(如“法国总统”),DPR能理解语义(如“妻子”与“配偶”的关联),两者互补,避免单一检索的漏召回。
- 工具调用:设计Agent调用搜索API(如SerpAPI或Bing Search),设置
query="法国总统 妻子 2025",并解析返回的摘要。坑:搜索API可能返回广告或低质量内容,需用reranker(如Cohere rerank)对Top-10结果重排序,过滤掉非权威来源(如个人博客)。 - 记忆更新:Agent维护一个“知识缓存”,用Redis存储高频事实(如“法国总统:马克龙”),并设置TTL(Time-To-Live)为7天。当用户再次提问时,先查缓存,若过期则触发RAG。取舍:缓存减少API调用成本,但牺牲实时性;TTL设为7天平衡了准确率和开销。
- 实际落地的坑 + 解法:
- 坑:用户问“法国总统的妻子是谁?”时,Agent可能检索到“布丽吉特·马克龙”,但若用户隐含指“前任总统的妻子”(如萨科齐的妻子),模型会混淆。解法:在Prompt中加“当前时间”和“总统任期”约束,例如“请基于2025年5月的数据回答,若问题涉及历史总统,需明确标注”。
- 坑:RAG检索到多篇文档(如“马克龙妻子布丽吉特”和“马克龙前女友瓦莱丽”),模型可能错误融合。解法:用LLM做“答案验证”,让模型输出置信度(如“0.95”),低于阈值(如0.8)时触发二次检索或拒绝回答。
- Agent设计总结:一个处理动态事实的Agent应包含:检索模块(BM25+DPR)、验证模块(reranker+置信度)、记忆模块(缓存+TTL)、决策模块(若置信度低,反问用户“您指的是现任总统吗?”)。这能挡住至少3轮追问。
3️⃣ 答题模板(30 秒电梯版)
“这个问题我从三个层面回答:第一,事实层面,法国总统是马克龙,妻子是布丽吉特;第二,LLM局限性层面,模型有知识截止日期和幻觉风险,不能依赖参数存储;第三,工程解决方案层面,用RAG(BM25+DPR)检索最新资料,结合工具调用(搜索API)和记忆缓存(Redis TTL),并加置信度验证。总结一句:动态事实查询必须用外部知识+Agent设计,而非模型参数。”
4️⃣ 高频追问 & 应对
追问 1:如果用户问“法国总统的妻子是谁?”,但模型检索到“布丽吉特·马克龙”和“瓦莱丽·特里耶韦勒”,你怎么选?
用reranker(如Cohere rerank)对检索结果排序,优先选择与“当前总统”相关的文档。具体做法:在检索Query中加入时间戳(如“2025年”),并让LLM输出答案时附带来源URL。若两个结果置信度都低于0.7,则反问用户“您指的是现任总统马克龙的妻子吗?”——这比硬选更安全,避免误导。
追问 2:你的RAG方案中,BM25和DPR的权重怎么设置?为什么?
权重取决于场景。若Query包含精确实体(如“法国总统”),BM25权重设0.7,DPR设0.3;若Query是语义模糊(如“谁是国家元首的配偶”),则反过来。取舍:BM25召回快但漏语义,DPR慢但泛化强。实际中,我用Grid Search在验证集上调参,发现k1=1.5,b=0.75的BM25 + DPR的Top-5召回率最高(约92%),且延迟控制在200ms内。
追问 3:如果用户问“法国总统的妻子是谁?”时,模型缓存了“布丽吉特”,但法国总统刚换届(假设2027年),你怎么处理?
缓存TTL设为7天,但换届是突发事件,TTL不够。解法:在Agent中加“事件触发器”,订阅新闻API的“法国总统”关键词,当检测到“新总统就职”事件时,主动清空相关缓存。坑:事件检测可能误报(如“总统候选人”),需用LLM做事件分类(如“是否涉及权力交接”),避免误清空。
5️⃣ 避坑 · 常见错误答法
- ❌ 直接回答“布丽吉特·马克龙”,然后说“模型知道这个事实”。 → ✅ 先指出LLM的局限性(知识截止日期、幻觉),再给出RAG/工具调用方案,展示系统思维。
- ❌ 说“用RAG检索Wikipedia,然后让模型生成答案”。 → ✅ 具体化:BM25+DPR的检索策略、reranker过滤、置信度验证、缓存TTL设计,体现工程细节。
- ❌ 忽略“多义性”,假设用户只问现任总统。 → ✅ 主动区分“现任”和“历史”,用Prompt约束或反问用户,避免歧义。
6️⃣ 简历呼应
- 如果你有RAG项目:从“检索策略”切入,强调你如何用BM25+DPR解决事实性查询,并对比过单一检索的召回率提升(如从85%到92%)。
- 如果你只做过传统NLP:用“知识图谱”类比,说“LLM的参数相当于静态知识库,而RAG是动态查询接口,类似SPARQL对图谱的查询”。
- 如果你是校招无项目:聚焦“论文复现”,提到“我复现了REALM或RAG论文,用Wikipedia API做检索,并分析了知识截止日期对准确率的影响”。
- 《Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks》(Lewis et al., 2020)
- 《REALM: Retrieval-Augmented Language Model Pre-Training》(Guu et al., 2020)
- 《Dense Passage Retrieval for Open-Domain Question Answering》(Karpukhin et al., 2020)
- 《ColBERT: Efficient and Effective Passage Search via Contextualized Late Interaction》(Khattab & Zaharia, 2020)
- 《Toolformer: Language Models Can Teach Themselves to Use Tools》(Schick et al., 2023)