这三个是AI Agent / RAG 岗位面试绝杀三连问,我给你写最标准、最详细、面试官最爱听、能直接背的完整版答案,每个问题单独成体系,你面试遇到直接照着说就行。
一、Agent 出现幻觉怎么解决?
1. 什么是幻觉
模型编造不存在的信息、乱答规则、瞎编订单号、胡说政策,看起来很合理但实际是错的。
2. 核心解决思路(工程化标准答案)
基于 RAG 检索增强,强制模型只能用检索到的知识回答
不给模型自由发挥空间,严格遵循知识库内容,不知道就说不知道。Prompt 工程约束
- 明确要求:“仅根据提供的参考资料回答,资料中没有就回答‘暂无相关信息’”
- 禁止编造、禁止联想、禁止扩展
- 加上事实校验指令
增加事实校验环节(Self-Check)
模型生成回答后,再调用一次 LLM 做校验:- 回答是否全部来自知识库
- 是否存在编造内容
- 不一致则重新生成或拒绝回答
限制模型自由度
- 降低 temperature(0.1 ~ 0.3)
- 使用 top_p 采样,提高确定性
- 关闭自由联想、多步推理能力
知识库高质量治理
- 清洗脏数据、重复数据
- 结构化 FAQ、标准化问答对
- 避免模糊、歧义、冲突知识点
拒绝回答兜底策略
不确定的问题直接转人工或提示用户咨询客服,不强行回答。
3. 面试满分总结句
通过RAG 检索约束 + 严格 Prompt 限制 + 事实校验机制 + 低温度生成 + 知识库治理,从源头减少模型编造,确保回答真实可靠。
二、RAG 检索准确率低怎么优化?
1. 问题本质
召回不相关、关键信息漏召回、碎片太多、语义不匹配。
2. 完整优化方案(工程级,非常加分)
(1)数据层优化
- 文档分块优化
按章节/段落/固定长度+滑动窗口切分,避免语义断裂 - 清洗噪声数据
去掉无关文本、重复内容、格式乱码 - 构建 FAQ 对
高频问题单独建索引,优先匹配
(2)向量与检索优化
- 更换更好的嵌入模型(bge-small/m3e等)
提升语义相似度能力 - 使用混合检索:向量检索 + 关键词检索(BM25)
语义+全文匹配互补,显著提升准确率 - 调整召回数量 topK
一般 3~10,根据内容长度适配 - 加入重排序模型(Rerank)
对初步召回结果二次精排,把最相关的排最前
(3)查询层优化
- 查询改写(Query Rewrite)
把口语化问题转成标准问句,增强匹配度 - 多轮追问补全信息
意图不明确时主动引导用户补充 - 关键词提取增强检索
(4)业务层优化
- 知识库分类/标签体系
按业务域隔离,缩小检索范围 - 权限过滤 + 业务场景过滤
只检索当前场景相关内容
(5)评估与迭代
- 人工 badcase 标注
- 不断优化分块、prompt、rerank 策略
- 建立检索效果评估指标(召回率、精准率)
3. 面试总结句
从文档切分、嵌入模型、混合检索+重排序、查询改写、知识库治理五个维度系统性优化,大幅提升 RAG 检索精准度。
三、Agent 多轮对话状态怎么管理?
1. 核心需求
记住用户历史意图、上下文信息、当前任务进度、槽位信息,实现连贯多轮对话。
2. 完整实现方案(SpringBoot + AI 项目标准做法)
(1)会话唯一标识
- 前端生成conversationId
- 每次请求携带,后端根据它管理上下文
(2)上下文存储结构
存储内容包括:
- 历史问答对(user/assistant)
- 当前意图(intent)
- 已填槽位(slot:订单号、手机号、商品名等)
- 任务状态(开始/处理中/完成/取消)
- 知识库过滤条件
- 用户角色与权限
(3)存储方案
- Redis 缓存(最常用)
key = conversationId
value = 序列化的对话上下文对象 - 过期时间 30~60 分钟,超时自动清理
(4)对话管理流程
- 每次请求先根据 conversationId 读取历史
- 将历史拼入 Prompt 传给 LLM
- Agent 理解当前意图 + 槽位是否完整
- 缺失信息则主动追问
- 信息完整后执行工具/生成回答
- 把最新对话追加到 Redis,更新状态
(5)槽位填充(Slot Filling)
用 Agent 管理状态机:
- 订单查询 → 缺订单号 → 追问订单号
- 退款 → 缺原因 → 追问原因
- 状态推进由 LLM 自主判断
(6)上下文截断策略
- 只保留最近 N 轮对话
- 超长时做摘要压缩
- 避免超出模型上下文窗口
3. 面试满分总结句
通过conversationId 唯一标识 + Redis 存储对话历史 + 槽位与任务状态管理 + 动态上下文拼接,实现 Agent 多轮对话的状态持久化与流程可控。