BinRag 面试深挖 · 项目入口
本页是本项目的入口页(属于「面试项目深挖」栏目)。先读本页建立全局认知,再按下面的文档地图进入正文。
一句话说明材料来源:全部内容基于当前仓库源码逐行核对,带行号的技术事实可以直接在 IDE 里跳转验证;核对的底稿放在
_源码档案(逐行核对用)/。
一、一句话定位
BinRag 是一个 Go 写的企业级文档知识库 RAG 问答系统。 入库是异步管道:多格式解析 → 三种分块策略 → Embedding 存 Qdrant,同时灌一份自研 BM25 内存倒排索引;问答侧是混合检索 → RRF 融合 → cross-encoder 重排 → LLM 生成,并把整条能力包成 MCP Server 对外暴露 6 个只读工具。
被问「介绍一下这个项目」,先给这句,再用 01-项目口述介绍 的 30 秒 / 2 分钟 / 5 分钟版展开。
二、文档地图(本目录文件清单与优先级)
| 文件 | 对应简历 bullet | 用途 | 优先级 |
|---|---|---|---|
00-使用说明与阅读路线 | — | 3 天冲刺路线、三个记忆锚点、保命话术、材料事实边界 | ⭐⭐⭐ 先读 |
01-项目口述介绍 | 全部 | 30 秒 / 2 分钟 / 5 分钟口述稿 + vibe coding 怎么坦白 + 12 个数字卡 + 雷区清单 | ⭐⭐⭐ 必读必背 |
02-入库链路深挖问答 | ② 完整文档处理管道 | 17 个 Q:同步/异步边界、多格式解析、扫描件拒绝、三种分块、chunk_id 与幂等、worker 原子认领、退避、重启恢复、PG↔Qdrant 一致性 | ⭐⭐⭐ |
03-检索与重排深挖问答 | ① 混合检索与精排 | 16 个 Q:BM25 公式与自研实现、中文 bigram、RRF 与量纲、cross-encoder、多租户隔离、三个真实缺陷 | ⭐⭐⭐ 深挖主战场 |
04-LLM问答链路深挖问答 | ③ LLM 问答链路 | 23 个 Q:Query 改写、token 预算与截断顺序、prompt 原文、SSE 事件序列与断连、多查询/分解/Step-Back/HyDE/路由、工具循环 | ⭐⭐⭐ |
05-MCP-Server深挖问答 | ④ MCP Server 接口 | 16 个 Q:MCP 协议与 streamable HTTP、6 个 Tool 逐个、401 与 -32001 分层、双层开关、审计、owner 解析 fail-open、默认不限流 | ⭐⭐ |
06-认证权限与多租户深挖问答 | OIDC 登录 / API Key | 认证双通道、API Key 哈希存储、OIDC/GitHub 流程、JWT 缺陷、跨租户越权面、安全自查清单 | ⭐⭐⭐ 字节安全面必问 |
07-工程化部署与评估深挖问答 | 双形态部署 / RAG 评估 | 单二进制 + Wails、Docker/CI、配置系统、评估体系(Recall@K + LLM-as-Judge + RAGAS 服务)、可观测性缺口 | ⭐⭐⭐ |
08-压力面-量化指标与反问 | — | 效果/容量/对比/自我批判类逼问的标准答法、白板手撕关联题、反问清单、收尾话术 | ⭐⭐⭐ 必读 |
09-口袋速背卡片 | — | 一页速背:主线口述 + 数字卡 + 十个必答 + 六个缺陷 + 三个反问 | ⭐⭐⭐ 考前只看这个 |
_源码档案(逐行核对用)/(6 篇) | — | 检索 / 入库 / RAG 引擎 / API·认证·存储 / MCP / 工程化,逐行核对的技术底稿 | 查证用,不必背 |
三、推荐阅读顺序
完整 3 天路线见 00-使用说明与阅读路线,浓缩版:
| 时间 | 做什么 |
|---|---|
| Day 1 · 建主干(约 3h) | 读 01,把 30 秒版和 2 分钟版念出来录音;读 01 第六节 vibe coding 话术(决定面试基调);背 01 第七节 12 个数字;读 08 第一~三节 |
| Day 2 · 三块硬骨头(约 4h) | 精读 03 的 Q1 / Q4(RRF)/ Q8 / Q9 / Q11 ——这五个是主动加分点;02、04 各背「30 秒总述 + 5 个最可能被问的 Q」;05/06/07 读「30 秒总述 + 不足与改进表」 |
| Day 3 · 模拟收口(约 3h) | 白板默画 09 第八节架构图并同步讲 5 分钟;随机念简历 bullet 即时展开 60 秒;只读 09 把「六个缺陷」练到脱口而出 |
四、诚实边界(不能吹的点)
这一节的每一条,被问到都要主动交底,不要等面试官挖:
- 没有真实用户、没有线上流量、没有压测数据、没有大规模标注评测集——
08把这类列为「B 类数字」,任何场景都不要编造。 - 评估框架已落地可跑,但基线尚未跑完;而且 Go 侧评估 CLI 因为 BM25 未回灌,实际只测到了纯向量检索路径。这一点在
03Q9 和07里都有标注。 - BM25 重启静默失效(内存索引无持久化、启动无回灌 →
DocCount()>0门控整路跳过 → 混合检索悄悄退化成纯向量)。主动承认它,比被问出来强一百倍。 - 重排候选池 = topK,没有 oversample——等于把漏斗下半截砍了,重排只能改排序、救不了召回。
- 行号对应的是生成这批材料时的代码版本,之后改代码会漂移,面试前建议抽查几处。
五、三个记忆锚点(全程反复用)
- 量纲不可比 → 所以用 RRF:余弦相似度 0~1、BM25 无上界,加权求和必须先归一化,而归一化假设不成立;RRF 只用排名,天然可比,且双路命中自动上位。
- BM25 重启静默失效:见上文边界第 3 条。
- 重排候选池 = topK(没有 oversample):这是最容易被面试官认可的「你懂 RAG 工程」的判断。
➡️ 开始阅读:00-使用说明与阅读路线 | 返回栏目:面试项目深挖总览 | 同栏项目:Vistack · EasyCoding