信雅达 AI Agent开发 二面
1. 你做过的 Agent 项目里,Agent 和普通问答系统最大的区别是什么?
普通问答系统更多是输入一个问题,模型生成一个回答,核心在回答质量。Agent 更强调任务闭环,不只是回答,还要规划步骤、调用工具、拿到结果、根据结果继续下一步,最后把任务完成。也就是说,问答系统重点是“说”,Agent 重点是“做”。如果项目里接了数据库查询、知识库检索、接口调用、审批流或者脚本执行,那基本就已经不是单纯的聊天系统了。
2. 你怎么理解 Agent 的核心组成?
一个完整的 Agent 一般包括模型、Prompt、工具、记忆、规划、执行控制这几部分。模型负责理解和推理,Prompt 负责约束行为,工具负责连接外部能力,记忆负责保存上下文和状态,规划决定下一步做什么,执行控制负责终止条件、错误重试和流程编排。如果只有模型加 Prompt,没有工具和状态控制,那更像增强版聊天;如果能感知环境、调用工具、根据反馈继续执行,才更接近真正的 Agent。
3.RAG 和 Agent 怎么结合
在实际系统里,RAG 可以作为 Agent 的一个工具或者一个子模块,当 Agent 需要知识支撑时,先去检索相关文档,再根据检索结果决定是直接回答、继续追问,还是调用其他工具。所以两者不是替代关系,而是配合关系。RAG 提供外部知识,Agent 负责决策和执行。
4. 如果知识库问答效果不好,你会从哪几层排查?
先看数据层,文档有没有脏数据、格式错乱、切分是否合理、索引有没有及时更新。再看检索层,embedding 模型是否适合当前业务,召回条数是否过少或过多,query 是否需要改写,是否需要引入 rerank。最后看生成层,Prompt 是否明确要求基于检索内容回答,是否把无关上下文带进去了,模型输出有没有胡编。大多数效果差的问题,根因不一定在大模型,很多时候是数据和检索链路本身就没处理好。
5. chunk 切分你一般怎么做?为什么不能只按固定长度切?
只按固定长度切会破坏语义边界,比如把一个定义切成两半,或者把问题和答案拆开。更合理的做法是优先按标题、段落、列表、语义边界切,再适当增加 overlap,这样既能保持语义完整,又能减少上下文丢失。如果是 FAQ、接口文档、制度文档这种结构很强的内容,最好按结构切;如果是长篇自然文本,再考虑按字符数或 token 数做辅助切分。
def split_text(text, chunk_size=300, overlap=50):
chunks = []
start = 0
while start < len(text):
end = min(len(text), start + chunk_size)
chunks.append(text[start:end])
if end == len(text):
break
start = end - overlap
return chunks
6. rerank 的作用是什么?为什么只做向量召回往往不够?
向量召回擅长先把可能相关的内容快速找出来,但它更像粗筛,容易把语义相近但不真正回答问题的内容一起召回来。rerank 的作用是对召回结果再排序,让真正和问题最相关的内容排到前面。所以常见做法是“向量召回 + rerank”,前者负责效率,后者负责精度。特别是在企业知识库场景里,很多文本长得都像,不做重排时结果会很飘。
7. Function Calling 的本质是什么?它和让模型自己输出调用指令有什么区别?
Function Calling 的本质是把工具调用变成结构化协议,而不是让模型随意生成一段“我现在要调用某个接口”的自然语言。区别在于,结构化协议能明确工具名、参数格式、字段约束,程序更容易解析,也更稳定。如果完全靠模型自由输出,常见问题就是字段名变了、参数漏了、格式不合法。Funct
剩余60%内容,订阅专栏后可继续查看/也可单篇购买
本专栏聚焦 AI-Agent 面试高频考点,内容来自真实面试与项目实践。系统覆盖大模型基础、Prompt工程、RAG、Agent架构、工具调用、多Agent协作、记忆机制、评测、安全与部署优化等核心模块。以“原理+场景+实战”为主线,提供高频题解析、标准答题思路与工程落地方法,帮助你高效查漏补缺.
查看5道真题和解析