科大讯飞羚羊一面:Agent 落地、RAG 文档解析与稀疏稠密向量
- 轮次
- 一面
- 时间
- 2026-10
- 来源
- 牛客网
《面试题目》
- Agent 这个项目除了你自己学习练习之外,有没有实际的应用落地?
- 在 RAG 项目的开发过程中遇到过什么样的技术挑战,你都解决过哪些关键的问题?
- 讲一下文档解析的过程,说一下特别难的文档大概长什么样子,你最后解决完的效果是什么样的?
- 对于文件中的一个流程图,你调用 VLM 识别出来的结果是什么样的,这个结果怎么用到你后续的 RAG 项目里?得到这个信息对你的系统有什么帮助?
- 用的向量化模型是什么?是稀疏模型还是稠密模型?
- 文档解析工具 MinerU 是用的私有化版本还是付费的?
- gap 期间都做了什么,有没有找工作?
(反问:团队的业务。作者反馈对面信号很差、噪音大,反问部分基本没听清。)
《参考解析》
「有没有实际落地」是 Agent 项目最容易被问穿的一问。 面试官问这句,本质是在区分「跟着教程跑通了 demo」和「为了让它在真实场景里不出错做过工程取舍」。有效的回答结构是:谁在用(哪怕是同学、社团、自己的日常流程)、替代了什么人工步骤、上线后出现的具体失败案例、你为此改了什么。哪怕规模很小,「每周有十几个人在用、平均每天跑三十次、失败率从 20% 降到 5%」这样的数字也比「做了个很完整的 Agent」有说服力得多。如果没有真实用户,诚实地把项目定位成技术验证,然后讲清楚你在其中验证了什么假设(工具调用的错误恢复?长任务的上下文压缩?),比硬编一个落地故事安全——深挖两轮就会露馅。
RAG 的技术挑战要挑「有取舍」的讲,不要罗列。 常见的高价值素材有四类:检索召回不足(查询改写、多路召回、混合检索、rerank 的引入顺序与各自的收益);切块与语义完整性冲突(按固定长度切会把表格和条款切断,按结构切又会产出过长块);生成端不忠于原文(引用约束、答案必须带出处、检索为空时明确拒答);以及工程侧的延迟与成本(预计算、缓存、并发)。讲每一类时把「原来什么样、改了什么、指标怎么变」三件事说全,比说「我用了 RAG、用了 LangChain」高一个量级。
「特别难的文档」这类问题考的是你踩过多少真实的坑。 值得讲的难文档:双栏甚至三栏排版的论文(按 y 坐标排序会把两栏文字交错拼接)、扫描件与倾斜拍照(需要先做去噪、纠偏、OCR)、跨页表格(表头在第一页、续页没有表头)、公式与化学式、页眉页脚与页码混进正文、以及图文混排里图注和正文的归属。完整链路通常是:版面分析(区分文字区、表格区、图片区、公式区)→ 分区块识别(文本走 OCR 或 PDF 文本层、表格走结构化识别、公式走专用模型)→ 按阅读顺序重排 → 后处理(去页眉页脚、合并断行、修连字符)→ 切块入索引。效果验收不要只说「好多了」,给可量化的东西:关键字段抽取准确率、表格还原的行列准确率、人工抽检的通过率。
流程图经 VLM 转成文本之后,真正的难点是「怎么让它可检索」。 直接喂给 VLM 得到的通常是一段自然语言描述(有哪些节点、箭头从谁指向谁、分支条件是什么),这段描述如果原样入库,用户问「退款流程走到哪一步需要人工审核」时很难命中,因为描述用的是「节点 3 → 节点 4」这种与提问不同构的表述。可行的处理是三步:让 VLM 输出结构化结果(节点列表 + 边列表 + 每个节点的文字标签),而不是自由文本;用图上的原文标签构造一句「流程摘要」,把节点名、条件、终点串成可读句子作为检索单元;同时把原图作为附件关联到该 chunk 上,命中后直接回传图片给前端展示。这样图既进了召回,也保住了可读性。更有价值的一步是把流程图里的分支条件抽成结构化字段——它常常是业务规则问答的关键,纯文本检索恰恰最容易漏掉。
稀疏与稠密不是二选一,要答出各自擅长什么。 稠密模型(BGE、GTE、E5 这类双塔 embedding)把语义压到向量里,擅长同义改写、跨语言、模糊表述,但精确匹配弱;稀疏模型(BM25 一类,或 SPLADE 这种学习式稀疏)保留词项权重,擅长专有名词、型号、编号、错误码这类必须字面命中的查询。工程上主流做法是混合检索:两路各召回 Top-K,用 RRF 融合或训练一个 rerank 模型统一排序,再交叉编码器精排。回答时把「我们最终用的是 BGE-M3 这类同时支持稠密、稀疏、多向量的模型」或「稠密 + BM25 双路」讲清楚,并说明选择依据(数据里专有名词多不多、有没有多语言需求、显存与延迟预算),比只报一个模型名可信。
「MinerU 用私有化还是付费」是个不起眼但很实用的问题。 它其实在问两件事:你是否清楚数据合规的边界(文档能不能出内网),以及你有没有真的部署过而不只是调 API。私有化部署意味着要自己扛 GPU 显存、模型版本、批量吞吐与失败重试;付费 API 省事,但数据要出网、按量计费、并且受对方限流。答的时候把自己的实际约束说清楚(个人项目用 API 完全合理,企业内网文档就必须私有化),再补一句你知道的部署成本,比如版面分析 + OCR + 公式识别三套模型的显存占用和并发瓶颈,这一问就答满了。
gap 的追问按「事实 → 行动 → 现状」三段答。 一句话交代起止时间与原因(求职探索、备考、家庭安排都在正常范围内),然后给可验证的产出(做完的项目、系统学的方向、投递与面试的场次),最后主动给一句稳定性信息:现在可全职到岗、计划在这个方向长期做。不用解释得太细,也别加入情绪化描述——含糊和回避才会触发继续追问。
这场面试的形态很典型:不问八股,全程沿简历一条线往下钻,每一问都在验证「这是你亲手做的,还是照着教程抄的」。应对这类面试的准备方式不是背题,而是把自己的项目按「动机 → 方案取舍 → 踩过的坑 → 量化效果 → 如果重做会怎么改」过一遍,每一层都能说出具体的数字和失败案例。