一个面向求职场景的 AI 模拟面试系统。
项目围绕“简历解析 -> 岗位匹配 -> RAG 出题 -> AI 评分 -> 面试报告”构建了完整闭环,重点体现了我在 AI 应用开发、工程化落地、RAG 设计、Agent 工作流编排 方面的能力。
传统模拟面试系统通常只解决“出题”和“评分”,而这个项目进一步把 AI 放到了求职链路前面:
- 用户上传简历后,系统先调用 AI 解析简历并落库
- 基于岗位匹配 Agent,对候选人画像进行分析并推荐更适合的岗位方向
- 进入目标岗位的专项模拟面试
- 基于题库 RAG 召回高相关题目,并结合参考答案与采分点进行 AI 评分
- 输出结构化面试报告,帮助用户明确能力差距和下一步学习方向
这个项目不是单一 Prompt Demo,而是一个包含 前端、后端、数据库、异步任务、向量检索、Agent 编排、Docker 部署 的完整 AI 应用项目。
此项目实现了完整的求职场景闭环:
- 简历上传与解析
- 岗位匹配 Agent
- 题库 RAG 面试
- AI 评分与反馈
- 面试报告输出
项目中实现了两套 RAG,其中真正接入主业务的是 题库 RAG:
- 管理员维护结构化题库:题目、参考答案、采分点
- 将题目与参考答案拼接后做向量化
- 使用
PostgreSQL + pgvector存储 embedding - 面试发起时,结合岗位和简历技能做语义召回
- 当题库不足时,采用“二次召回 + AI 兜底补全”的策略保证流程稳定
相比纯 AI 生成题目,这种方式让题目更贴近岗位,也让评分更可控。
用户回答问题后,系统不会直接让大模型自由打分,而是把题库中的:
reference_answerkey_points
一起注入评分 Prompt,作为评分参考依据。
这样可以显著提升评分稳定性,减少大模型“凭感觉评分”的不确定性。
项目含有 岗位匹配 Agent功能,用于把“简历解析”和“模拟面试”连接起来。
它不是凭空推荐岗位,而是:
- 先读取已解析的结构化简历
- 构建候选人画像
- 再与系统中的岗位模板库做匹配
- 输出推荐岗位、推荐理由、能力差距和下一步建议
技术上使用了 LangChain Tool Calling Agent,并配合工具调用工作流来保证结果可解释、可调试。
项目中体现了较完整的工程化思维:
- 前后端分离架构
- Docker Compose 本地一键启动
- PostgreSQL / Redis / Celery 异步任务协同
- 静态文件挂载与容器内服务通信
- API 分层、Service 分层、Schema 分层
- 向量检索、异步任务、SSE 流式输出
- FastAPI
- SQLAlchemy 2.x
- PostgreSQL
- pgvector
- Redis
- Celery
- Alembic
- Uvicorn
- DeepSeek API
- OpenAI Compatible SDK
- LangChain
- LangChain OpenAI
- DashScope Embedding
- RecursiveCharacterTextSplitter
- Vue 3
- Vite
- Vue Router
- Pinia
- Axios
- Docker / Docker Compose
- Nginx
- Linux
[用户前端]
├─ 上传简历
├─ 岗位匹配
├─ 模拟面试
└─ 查看报告
│
▼
[FastAPI 后端]
├─ 简历解析服务
├─ 岗位匹配 Agent
├─ 面试服务
├─ 题库管理
└─ 知识库管理
│
├─ DeepSeek:简历解析 / 出题 / 评分 / 报告
├─ DashScope:Embedding
├─ PostgreSQL + pgvector:结构化数据 + 向量检索
├─ Redis:缓存 / Broker
└─ Celery:异步任务
用户上传 PDF 简历后,系统会:
- 提取 PDF 文本
- 调用 DeepSeek 解析成结构化简历
- 生成简历分析结果
- 将
parsed_content与analysis写入数据库
Agent 主流程:
- 读取已解析简历
- 构建候选人画像
- 匹配岗位模板
- 获取岗位面试重点
- 输出推荐岗位、推荐理由、能力差距和学习建议
发起面试时,系统会:
- 根据目标岗位 + 简历技能构造检索 query
- 调用 DashScope Embedding 生成 query vector
- 在
question_bank中用pgvector cosine_distance召回候选题 - 如果候选题足够,由 AI 选题并微调
- 如果候选题不足,触发二次召回或 AI 兜底补全
用户提交回答后,系统会:
- 获取当前题对应的
reference_answer和key_points - 构造评分 Prompt
- 调用 DeepSeek 评分并流式返回反馈
- 保存单题得分、反馈、整场报告
ai-interview/
├─ ai-interview-backend/ # FastAPI + PostgreSQL + Redis + Celery
├─ ai-interview-frontend/ # 用户端前端
├─ ai-interview-admin/ # 管理端前端
├─ 面试要点.md # 项目口述与面试整理
├─ 项目RAG实现原理.md # RAG 技术链路说明
后端采用较清晰的分层:
api:接口层schemas:请求/响应模型services:业务逻辑层models:数据库模型
这样做的好处是:
- 业务逻辑更集中
- 便于单独维护 RAG、Agent、简历、面试等模块
- 后续扩展更自然
ai_service.py 不是简单的模型调用文件,而是项目里的 AI 能力中枢,统一封装了:
- 简历解析
- 简历分析
- 面试出题
- 回答评分
- 流式反馈
- 报告生成
- 题库补题与微调
岗位匹配 Agent 不是“一个大 Prompt 全部搞定”,而是显式拆成多步工具调用:
get_parsed_resumebuild_candidate_profilematch_positionsget_position_interview_focusstart_mock_interview
这样结果更稳定,也便于调试和展示 Agent 的执行过程。
项目提供 Docker Compose 开发环境,能够快速拉起:
- App
- PostgreSQL
- Redis
- Celery Worker
- Celery Beat
对 AI 应用项目来说,这一点很重要,因为它体现的是“可运行、可联调、可部署”的完整能力。
进入:
cd ai-interview-backend使用 Docker Compose 启动:
docker compose -f docker-compose.yml -f docker-compose.dev.yml up -d --build进入:
cd ai-interview-frontend安装依赖并启动:
npm install
npm run dev进入:
cd ai-interview-admin安装依赖并启动:
npm install
npm run dev说明:实际运行前需要补充
.env配置,例如数据库、Redis、DeepSeek、DashScope 等相关参数。