百度 AI Agent开发 一面

1.多轮对话中,如果不同轮次的记忆发生冲突,你如何处理?

这个问题本质上不是“删哪条、留哪条”,而是做记忆的版本管理。实际处理时一般会同时看三个维度:时间、来源、置信度。时间上通常新信息优先,但前提是它来自更可信的输入;来源上,用户当前轮明确表达、工具查询结果、系统写入,优先级通常高于模型从历史里自己总结出来的内容;置信度上,如果只是一次低置信抽取,不会直接覆盖长期稳定画像。

工程上我会把记忆拆成两层,一层是 event log,完整保留用户每次表达过什么;另一层是 materialized profile,也就是给模型使用的当前画像。冲突发生时,不是直接物理覆盖,而是先记事件,再按规则刷新画像。如果冲突很大,比如之前说“常驻北京”,现在说“长期在上海”,我会先标成待确认,优先在当前任务里使用最新信息,但不会马上把长期记忆彻底改掉。

2.chunk 切分时为什么要有重叠区域?比例一般怎么确定?

加重叠的原因很直接,很多语义不是刚好落在一个 chunk 里,而是跨边界分布的。如果硬切,前一个 chunk 可能只有定义,后一个 chunk 才有限制条件,单独看都不完整,召回时就容易漏。

比例没有统一答案,一般和文档类型、chunk 长度、信息密度有关。普通文本常见是 10% 到 20%,技术文档、规则文档、长句很多的材料,可能会放到 20% 到 30%。如果 chunk 本来就很短,重叠太大又会带来冗余,增加索引量和重复召回。实际做法通常是先按标题、段落、句子这些自然边界切,再加少量 overlap,而不是只按字符数机械滑窗。

def split_text(text, chunk_size=300, overlap=60):
    chunks = []
    start = 0
    while start < len(text):
        end = start + chunk_size
        chunks.append(text[start:end])
        start += chunk_size - overlap
    return chunks

3.是否做过关键词召回和向量召回的融合?具体怎么做的?

做过,这基本是线上检索比较常见的方案。因为关键词召回和向量召回各有短板,BM25 这类关键词召回对实体词、缩写、错误码、产品型号很敏感,但语义泛化差;向量召回擅长同义表达和自然语言问题,但在精确词匹配上不一定稳。融合之后效果通常比单路更均衡。

落地时一般是两路并行召回:一条走 BM25,一条走 dense retrieval,各自取 TopN,合并去重后做融合排序,再进入 rerank。融合方法可以是加权分数,也可以是 RRF 这种按排序做融合。进一步一点,还会先做 query 分类,如果判断是实体型 query,就提高关键词召回权重;如果是开放问答型 query,就提高向量召回权重。

def rrf_fusion(rank_lists, k=60):
    score = {}
    for rank_list in rank_lists:
        for rank, doc_id in enumerate(rank_list, start=1):
            score[doc_id] = score.get(doc_id, 0) + 1 / (k + rank)
    return sorted(score.items(), key=lambda x: x[1], reverse=True)

4.向量检索中 Top-K 设置过大或过小分别会带来什么问题?

Top-K 太小,最直接的问题就是召回不足。真正相关的 chunk 可能根本没进候选集,后面的 rerank 再强也救不回来。尤其是 query 本身比较模糊、文档切得很细、embedding 区分度一般的时候,K 太小会明显影响最终答案质量。

Top-K 太大也不是越多越好。候选一多,噪声会明显上升,rerank 成本更高,后面给大模型组上下文时也更容易把无关内容带进去,反而让生成变差。所以 Top-K 本质上是召回率、精确率、成本之间的平衡。线上一般不会写死一个值,而是根据 query 类型、召回置信度、文档域做动态调整。

5.rerank 之后的截断策略是怎么设计的?为什么选这个 K 值?

rerank 之后的截断不是简单“固定保留前 K 条”,而是同时看分数、token 预算和证据覆盖。因为有些问题只需要 2 到 3 个强证据,有些问题则需要多个片段拼起来才能答完整。

常见做法是先设一个最大 K,比如 5 或 8,再结合 rerank 分数阈值、相邻分差、去重情况做动态截断。如果前 3 条分数很高,后面明显掉档,那就没必要继续带;如果前几条各自只覆盖问题的一部分,就会多保留几条。为什么选这个 K,通常不是拍脑袋,而是通过离线评测看 answer accuracy、引用完整性、token 成本和时延,在效果和成本之间找平衡点。

6.HyDE 在 query 模糊时是如何提升召回效果的?

HyDE 的思路是先让模型根据用户 query 生成一段“假想答案”或者“伪文档”,再拿这段文本去做向量检索。因为很多 query 本身特别短,比如“权限怎么做”“发票规则呢”,这种表达语义太稀,直接 embedding 后检索空间里信息量不够。HyDE 会把潜在语义展开,比如补出角色、资源、策略、审批、范围这些相关概念,这样更容易召回到真正相关的文档。

但 HyDE 也不是一定更好。如果模型一开始就猜偏了,它生成的伪文档会把召回方向也带偏。所以线上一般不会只依赖 HyDE,而是保留原 query 召回,再把 HyDE 召回作为补充,最后做融合。

7.设计一个支持多轮对话 + 工具调用的 Agent,整体架构怎么拆?

这种 Agent 一般会拆成接入层、会话层、决策层、工具层、知识层和治理层。接入层负责 API、鉴权、流式输出;会话层维护 session、历史消息、当前状态和短期记忆;决策层负责意图识别、任务规划、工具选择和结束条件判断;工具层统一封装搜索、数据库、业务接口、代码执行这类能力;知识层负责 RAG、向量库、长期记忆和文档解析;治理层负责日志、监控、审计、限流和权限。

真正关键的是状态不能全靠模型“记住”,而要由系统显式维护。每一步都应该是读取状态、组装上下文、让模型决策、执行工具、写回状态、再进入下一步。这样工具调用、多轮记忆和流程控制才能稳定,不然一长链路就容易跑飞。

8.Prompt 如何设计才能降低 hall

剩余60%内容,订阅专栏后可继续查看/也可单篇购买

AI-Agent面试实战专栏 文章被收录于专栏

本专栏聚焦 AI-Agent 面试高频考点,内容来自真实面试与项目实践。系统覆盖大模型基础、Prompt工程、RAG、Agent架构、工具调用、多Agent协作、记忆机制、评测、安全与部署优化等核心模块。以“原理+场景+实战”为主线,提供高频题解析、标准答题思路与工程落地方法,帮助你高效查漏补缺.

全部评论
想问一下实习面试也是这个难度吗
点赞 回复 分享
发布于 03-27 16:19 吉林

相关推荐

随着人工智能的快速发展,AI&nbsp;Agent已逐渐成为许多行业中不可或缺的角色。如果你有兴趣进入AI领域,成为一名AI&nbsp;Agent,其实有多种不同的岗位可以选择,以下是一些主要方向:智能客服Agent:这是AI&nbsp;Agent最常见的一类,广泛应用于客户服务行业。智能客服利用自然语言处理技术(NLP)与客户进行对话,解答问题,处理查询和投诉。这个岗位要求你理解并实现AI与人类之间的顺畅沟通,具备较强的技术背景和对用户需求的敏感度。AI助手:AI助手,如Siri、Alexa等,已经成为现代生活的一部分。作为AI助手的开发者,你需要设计和优化AI系统,让它能够处理语音识别、任务调度、设备控制等功能。这个岗位要求你精通机器学习、数据分析和人工智能相关的算法。推荐系统Agent:在电商、娱乐和社交平台上,推荐系统扮演着重要角色。AI&nbsp;Agent在此类岗位上通过数据分析和算法模型,帮助平台为用户推荐商品、电影或内容。你需要具备良好的数据挖掘和机器学习知识。AI研究员/工程师:如果你有强大的技术背景,成为一名AI研究员或工程师也是一个不错的选择。你将致力于AI算法、机器学习模型、强化学习等领域的研究和开发,为AI&nbsp;Agent的优化和创新提供理论支持和技术基础。自动化运营Agent:随着行业自动化的推进,AI&nbsp;Agent在业务运营中的应用越来越广泛。从自动化生产到流程优化,AI&nbsp;Agent可以通过数据驱动的决策帮助企业提升效率。这类岗位通常需要你拥有工程背景,能够与AI技术结合,进行智能化的业务流程设计和优化。AI伦理专家:随着AI技术的普及,AI伦理问题也成为了一个重要议题。AI伦理专家的职责是确保AI系统的开发和应用符合伦理道德,保障用户隐私和数据安全。这个岗位适合那些对伦理问题和技术有深入思考的人。
想做Agent可以做哪些...
点赞 评论 收藏
分享
评论
点赞
17
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务