Skip to content

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 把「六个缺陷」练到脱口而出

四、诚实边界(不能吹的点) ​

这一节的每一条,被问到都要主动交底,不要等面试官挖:

  1. 没有真实用户、没有线上流量、没有压测数据、没有大规模标注评测集——08 把这类列为「B 类数字」,任何场景都不要编造。
  2. 评估框架已落地可跑,但基线尚未跑完;而且 Go 侧评估 CLI 因为 BM25 未回灌,实际只测到了纯向量检索路径。这一点在 03 Q9 和 07 里都有标注。
  3. BM25 重启静默失效(内存索引无持久化、启动无回灌 → DocCount()>0 门控整路跳过 → 混合检索悄悄退化成纯向量)。主动承认它,比被问出来强一百倍。
  4. 重排候选池 = topK,没有 oversample——等于把漏斗下半截砍了,重排只能改排序、救不了召回。
  5. 行号对应的是生成这批材料时的代码版本,之后改代码会漂移,面试前建议抽查几处。

五、三个记忆锚点(全程反复用) ​

  1. 量纲不可比 → 所以用 RRF:余弦相似度 0~1、BM25 无上界,加权求和必须先归一化,而归一化假设不成立;RRF 只用排名,天然可比,且双路命中自动上位。
  2. BM25 重启静默失效:见上文边界第 3 条。
  3. 重排候选池 = topK(没有 oversample):这是最容易被面试官认可的「你懂 RAG 工程」的判断。

➡️ 开始阅读:00-使用说明与阅读路线 | 返回栏目:面试项目深挖总览 | 同栏项目:Vistack · EasyCoding

持续学习,持续构建。