Skip to content

课 3 · 项目答辩材料

本课目标

把进阶项目整理成可以在面试中使用的答辩材料:30 秒项目介绍、架构图讲解脚本、Bad Case 复盘稿。

这节课没有代码,只有"如何把做过的事情讲清楚"。

30 秒项目介绍

面试开场,面试官说"先介绍一下你的项目",用 30 秒说清楚:

我做的是一个企业知识库问答平台,叫 AI KnowledgeOps Agent。

它的核心能力是:上传内部文档后,用户可以用自然语言提问,系统用混合检索(向量检索 + Elasticsearch 全文检索)找到相关内容,再用 LLM 生成带引用来源的答案。

和普通 RAG Demo 不同的地方是:文档导入异步处理(BullMQ + Redis),有完整的评测体系(Hit Rate、Faithfulness、Bad Case 分析),实现了最小 StateGraph 来演示 LangGraph 原理,还支持实体关系图谱检索(Graph RAG)。

技术栈是 TypeScript + Hono API + React 前端 + Redis + Elasticsearch + Neo4j,本地用 Docker Compose 一键启动。

架构图讲解脚本(3 分钟版)

用户


apps/web(React 前端)
  │ HTTP + SSE

apps/api(Hono API)

  ├── 问答请求 ─────────────────────────────────────────┐
  │                                                    │
  │  packages/agent-runtime(StateGraph)               │
  │    └── Router Node                                 │
  │         ├── Retrieve Node                          │
  │         │     ├── packages/rag-core                │
  │         │     │     ├── 向量检索(sqlite-vec)       │
  │         │     │     ├── 关键词检索(Elasticsearch)   │
  │         │     │     ├── RRF 融合                    │
  │         │     │     └── Rerank                     │
  │         │     └── Graph RAG(Neo4j)[可选]           │
  │         └── Generate Node(LLM + 引用)             │
  │                                                    ◄┘

  └── 文档上传 ──> 任务创建 ──> Redis BullMQ ──> apps/worker

                                                解析/切块/Embed/索引

讲解要点(按模块顺序展开):

  1. 前端 → API:前端用 SSE 消费流式答案,API 层负责路由和校验(模块 1)
  2. 文档导入:上传即返回任务 ID,Worker 异步处理(模块 2)
  3. Redis 的作用:会话缓存、问答缓存、限流、BullMQ 队列(模块 3)
  4. 混合检索:向量 + ES + RRF 融合,比单路检索召回率更高(模块 4)
  5. 评测体系:有标注评测集,能量化 Recall@5 和 Faithfulness(模块 5)
  6. StateGraph:解释 LangGraph 原理,State/Node/Edge/Reducer(模块 6)
  7. Graph RAG:针对关系推理场景的补充检索能力(模块 7)
  8. 部署和观测:Docker Compose 一键部署,有 Trace 和成本统计(模块 8)

Bad Case 复盘稿(10 分钟版)

面试官问"介绍一个你遇到的问题,你怎么解决的"——这是最好的 Bad Case 复盘机会:


问题描述

我们的知识库里有一批技术规范文档,用户提问"RFC-2119 里的 MUST 和 SHALL 有区别吗?",系统返回了一个听起来合理但完全是编造的答案。

定位过程

  1. 用 Trace ID 找到这个请求的完整日志
  2. 看检索结果:Top-5 没有一个是 RFC-2119 相关的文档
  3. 判断根因:这是召回失败(Retrieval Failure),不是幻觉——文档里有答案,但没被检索到
  4. 深挖:RFC-2119 是专有名词,Embedding 模型对这类缩写词的向量表示质量差

解决方案

  1. 引入 Elasticsearch 全文检索,专有名词用 BM25 关键词检索更可靠
  2. 用 RRF 融合两路结果后,这类问题的 Hit Rate 从 52% 提升到 78%
  3. 把这类"专有名词查询"加入回归测试,防止未来退化

结论

通过这个 Bad Case,建立了"先看是召回问题还是生成问题"的排查思路,以及评测集 → 定位 → 改进 → 回归的完整闭环。


简历项目描述

AI KnowledgeOps Agent — 企业知识库问答与质量评测平台
技术栈:TypeScript, Hono, React, Redis, Elasticsearch, Neo4j, Docker
核心能力:
• 设计异步文档处理流水线(BullMQ + Redis),解决大文件导入阻塞请求的问题
• 实现混合检索(向量检索 + BM25 + RRF 融合),Recall@5 较纯向量检索提升 26%
• 建立 RAG 质量评测体系(Hit Rate、Faithfulness、Bad Case 分析),可量化准确率
• 从零实现最小 StateGraph,解释 LangGraph 的 State/Node/Edge/Reducer 原理
• 接入 Graph RAG(Neo4j 图谱),支持实体关系多跳推理场景
• 完整 Docker Compose 部署,含 Trace 追踪和 LLM 成本统计

常见面试追问与回答框架

问题回答策略
LangGraph 的实现原理StateGraph = while 循环 + Reducer + Checkpoint,展开讲三个核心概念
问答机器人准确率如何保证分两层:检索准确率(Recall@K)+ 答案准确率(Faithfulness),用评测集量化
如何解决幻觉问题引用约束 + 拒答策略 + 答案后校验(从 prompt 到检索到后处理三层)
Graph RAG 适合什么场景多跳关系推理,举具体例子,同时说清楚什么场景不适合
Redis 用来做什么四个角色:会话缓存、问答缓存、限流、任务队列,每个用一句话解释
线上出问题怎么排查Trace ID → 定位阶段 → 看输入输出 → 对比评测集 → 找变更记录

本节产物

docs/interview/
  project-pitch.md        # 项目介绍稿(多个版本)
  architecture-script.md  # 架构图讲解脚本
  bad-case-story.md        # Bad Case 复盘稿
  faq.md                  # 常见面试题回答

面试追问

你的项目你负责了什么?

这是针对"团队项目"的追问,独立项目不存在这个问题。但面试官有时用这个问题测试你对项目的深入程度。标准回答框架:说你设计的关键决策(选了什么,为什么),说你解决的最难的技术问题,说你从中学到了什么。细节越具体,可信度越高。

3 分钟讲清楚项目架构?

用一个简单口诀:入口 → 核心流程 → 每个模块负责什么。不要从头讲所有技术选型,先画出最关键的数据流(用户问问题 → 检索 → 生成 → 返回),然后逐层展开。面试官会打断你问他感兴趣的部分。

面向前端工程师和独立开发者的 AI 应用工程课程