我的职业发展路径并非线性。它充满转折,包含在不同情境下获得的技能,以及传统简历难以呈现的转型轨迹。
多年来,我面临的挑战不是"如何写简历",而是:如何让非线性的职业历程变得清晰可读?
经典的作品集格式(按时间顺序、线性、静态)很适合描述连续发展的职业轨迹,但对于非线性的经历就捉襟见肘了。这个项目正是源于我的个人需求:我们能否不再将职业生涯强行压成一条时间线,转而展现它的真实形态——一个由技能、项目和经验相互连接而成的网络?
步入2026年,"新年新气象"不一定意味着彻底重塑自我。有时,它意味着更准确地展现真实的自己。
作品集在线演示:AI知识图谱简历构建器
功能概览
为方便您立即探索,应用已默认加载我的简历作为演示:
- 网络图谱:30多个相互关联的节点,展示技能、项目和专业领域
- 流程示意图:从技能→项目→专业领域的可视化路径
- 技能矩阵:热力图展示各项目使用的技术栈
开箱即用:无需上传任何文件,即可直接体验效果。如需测试个人简历,点击"上传您的简历"即可。
职业演变可视化
为测试系统捕捉职业轨迹的能力,我对比分析了2021年与2025年的简历:
2021年图谱(37个节点,74条边):
- 企业导向:Skyrock、Logic-Immo、Photobox
- 传统技术:Flash/Zend_Amf、Palm webOS、ORACLE
- 广泛职能:首席开发、项目经理、全栈工程师
2025年图谱(30个节点,74条边,密度提升23%):
- 独立发展:自由职业+个人项目
- 现代技术栈:Astro、LLM/RAG、Docker、PostgreSQL
- 专业聚焦:迁移工程+AI自动化
核心变化:
- 淘汰8项技术(传统技术退役)
- 新增2个专业概念(AI自动化、迁移工程)
- 密度提升23%(专业深化取代广度拓展)
图谱不仅展示技能——更讲述了一个职业转型的故事:从企业通才到独立专家的转变。这正是传统简历无法捕捉的维度。
职业演变:2021→2025| 指标 | 2021 | 2025 | 变化 |
|---|---|---|---|
| 节点数 | 37 | 30 | -19% ↓ |
| 边数 | ~74 | 74 | = |
| 密度 | 2.0 | 2.2 | +23% ↑ |
| 技术栈 | 传统+现代 | 纯现代 | 🔄 |
| 聚焦点 | 企业通才 | 独立专家 | 🎯 |
关键转型:
- 淘汰:Flash、ORACLE、Palm webOS、5家企业客户
- 新增:Astro、LLM/RAG、Docker、AI自动化、迁移工程
- 演进:PHP 4→7、WordPress(传统→现代)、MySQL
图谱不仅追踪技能变化——更揭示战略转型轨迹。
实际测试验证使用三种典型画像测试工具效果:
资深专家(30节点,密度2.47)
- AI/迁移领域深度专长
- 现代技术栈(Astro、LLM、Docker)
- 细分领域内高度互联
中级多面手(33节点,密度2.42)
- 广泛CMS经验(WordPress、Magento、PrestaShop)
- 传统电商技术栈
- 技能分散于多样化项目
初级多面手(35节点,密度2.57)
- 现代全栈技能(MERN、Angular、Symfony)
- 创意技能(设计、视频)
- 矩阵揭示有趣缺口:声称掌握Symfony但无项目验证
核心洞察:工具能适配不同职业阶段,并揭示可操作模式——如声称掌握但未经验证的技能。
技术实现方案核心问题:结构化而非简单提取
这不是关键词提取。而是要求AI进行上下文推理并生成结构化表征:节点、关系及图谱导向的视觉呈现。
多数简历解析器仅提取表层关键词。本项目探讨的是:"我的Python技能、迁移项目和AI自动化专业知识之间存在怎样的语义关联?"
技术架构
AI层:
- Gemini Flash Preview 3.0用于简历分析
- Google AI Studio进行提示工程与迭代
- 包含6级提取规则的自定义系统提示
可视化层:
- Streamlit构建Web界面(快速原型开发)
- vis.js(通过streamlit-agraph)实现网络图谱
- Plotly生成桑基图与热力图
部署方案:
- Google Cloud Run实现容器化部署(挑战要求)
- Docker容器化封装
- GitHub集成实现CI/CD
为何选择streamlit-agraph进行网络可视化?
网络图谱视图使用streamlit-agraph(vis.js封装库)。开发过程中评估了多种在Streamlit中展示交互式网络图谱的方案,决策矩阵如下:
| 库名称 | 响应式 | 交互性 | 力导向布局 | 开发时间 | 结论 |
|---|---|---|---|---|---|
| streamlit-agraph | ⚠️ 固定画布 | ✅ 完整(点击、缩放、平移) | ✅ 自动生成 | ~2小时 | ✅ 入选 |
| Plotly图形对象 | ✅ 100%响应式 | ⚠️ 有限交互 | ❌ 手动定位 | ~6小时 | ❌ 工作量过大 |
| Pyvis | ⚠️ HTML文件生成 | ✅ 完整 | ✅ 自动生成 | ~4小时 | ❌ 集成复杂 |
| NetworkX+Matplotlib | ✅ 完全响应式 | ❌ 静态图像 | ✅ 自动生成 | ~3小时 | ❌ 无交互性 |
| D3.js自定义 | ✅ 100%响应式 | ✅ 完全可控 | ✅ 自定义 | ~8+小时 | ❌ 时间成本过高 |
决策依据:
本项目优先考虑交互性。动态点击节点、聚焦模式探索连接的功能价值超越iframe中的完美响应式表现。
streamlit-agraph实现:
✅ 零配置力导向布局(节点自动定位)
✅ 完整交互支持(点击处理、缩放、平移)
✅ 约2小时开发即可投入生产
✅ 开箱即用的专业视觉质量
接受的权衡:
⚠️ 固定画布尺寸(1400×900px)未占满iframe宽度
✅ 缓解方案:画布尺寸适配1440px+屏幕(笔记本/台式机)
考虑的替代方案(Plotly、D3.js)能提供更好响应式表现,但需3-4倍开发时间且降低交互性。
因此streamlit-agraph在功能、视觉质量与开发速度间找到最佳平衡点。
注:为获得最佳体验,请直接打开完整应用。
响应式策略
虽然画布固定为1400×900px,用户可折叠侧边栏(<<按钮)获得约250px垂直空间。这使得应用在1366-1680px屏幕上完美运行。
- 侧边栏展开:完整控制+图谱(1920px+最优)
- 侧边栏折叠:全屏图谱(1366px+最优)
用户可控的响应式策略比尝试CSS魔法调整固定画布元素更实用。
开发流程
1. Google AI Studio中的提示工程
在编写应用代码前,我在AI Studio中精心设计提取提示词。此阶段至关重要:
LEVEL 1: 核心实体(人员、技能、项目)
LEVEL 2: 关系(使用、创建、掌握)
LEVEL 3: 技术关系(PHP赋能WordPress)
LEVEL 4: 概念与专业领域
LEVEL 5: 时间与上下文关系
LEVEL 6: 双向概念-项目链接 ← 关键创新
重要性:简历不仅是节点集合,连接关系才是核心。"Python"不仅是技能——它赋能AI自动化,在多个项目中实施,并证明迁移工程专业能力。
提示词经过AI Studio中20+次迭代才最终集成。
2. 多视图仪表盘
初始版本仅包含网络图谱。用户反馈揭示问题:不同受众需要不同视图。
- 开发者希望探索连接(网络图谱)
- 招聘人员需要快速视觉叙事(流程示意图)
- 管理者要求快速技能扫描(技能矩阵)
关键突破在于意识到这不是三个独立功能——而是同一数据的三种视角。
3. 迭代式UX优化
基于真实用户测试:
- V7.0:多视图仪表盘
- V7.1-V7.6:间距优化(解决节点重叠)
- V8.0-V8.2:英文界面+演示自动加载
演示简历自动加载受挑战主题启发:展示而非讲述。让访问者即时看到结果,而非要求先上传文件。
4. Google Cloud Run部署
按挑战要求,应用部署于Google Cloud Run。部署流程简洁:
- 容器化:Streamlit应用打包至Docker
- 无服务器:自动扩缩容,按使用付费
- 公开URL:无需认证即可访问
- CI/CD:连接GitHub实现自动部署
选择Cloud Run因其简单性及与Google AI生态的契合度。
使用的Google AI工具
Google AI Studio在以下方面不可或缺:
- 快速提示词迭代而无需部署代码
- JSON验证确保输出结构一致
- 令牌优化遵守速率限制
选择Gemini Flash Preview 3.0的原因:
- 多模态能力(PDF→结构化JSON)
- 大上下文窗口(处理长简历)
- 结构化输出保持格式一致
- 高速响应实现实时提取
设计决策
为何选择图谱?
传统简历是树状结构(按时间顺序)。职业身份是图谱结构(关系型)。这种不匹配导致信息丢失。
示例:我的"WordPress转Astro迁移"项目连接:
- Astro框架(使用)
- WordPress(使用)
- 网页性能(展示)
- 迁移工程(展示)
- SSG生态系统(实施于)
时间线无法呈现这种丰富性。图谱可以。
为何需要三种可视化?
网络图谱:用于探索发现
- 最适合:深度研究、理解连接关系
- 受众:技术主管、开发同行
流程示意图:用于故事叙述
- 最适合:快速推介、视觉叙事
- 受众:招聘人员、招聘经理
技能矩阵:用于快速扫描
- 最适合:30秒技能评估
- 受众:HR、技术筛选人员
单一可视化无法满足所有受众。这是关键洞察。
为何采用演示优先?
受产品设计原则启发:将摩擦降为零。
之前:"上传简历查看效果"→50%跳出率
之后:"已加载我的简历,立即探索"→即时参与
1. 双向语义关系
图谱不仅显示"Newsletter Engine使用Python",更展示:
- Python赋能AI自动化(能力)
- AI自动化实施于Newsletter Engine(证据)
- Newsletter Engine展示AI自动化(实证)
这种双向性创造语义完整性。每个项目不仅是技术容器——更是概念专业能力的证明。
2. 高密度图谱质量(70+关系)
多数简历提取器生成稀疏图谱(每节点1.0-1.5条边)。本项目实现密度2.4(30节点72条关系),通过:
- 提取所有提及技术(不仅是"主要"技能)
- 创建技术链(Docker运行于Linux)
- 关联相关项目(wp2md关联WordPress迁移)
高密度图谱即真实图谱。
3. 零配置演示体验
应用预加载我的简历分析结果。无需认证、API密钥配置或文件上传。
这契合"新年新气象"主题——作品集立即展示转变而非空口承诺。
4. 实时反馈适配
每个版本(V1→V8.2)都融入用户反馈:
- "节点重叠"→超宽间距模式
- "标签不清"→Verdana无衬线字体、尺寸优化
- "需要不同视图"→多视图仪表盘
- "摩擦过大"→演示自动加载
公开构建,对话优化。
5. 技术优雅性
整个提取过程仅需单次提示。无需多阶段管道或外部工具。
response = model.generate_content([
{"mime_type": "application/pdf", "data": cv_bytes},
EXTRACTION_PROMPT
])
graph_data = json.loads(response.text)
输入:PDF字节流+提示词
输出:完整知识图谱
仅此而已。复杂性在于提示词设计(在AI Studio中精心打磨),而非代码。
个人反思:新年新视角这个项目始于个人需求,却演变为更宏大的命题:邀请人们以不同视角看待职业身份。
我们耗费大量精力试图将职业生涯塞进模板。如果模板本身就不合适呢?
知识图谱不评判你的路径是否"正确"。它单纯呈现现实:你拥有的技能、构建的项目及其连接关系。
秉承"新年新气象"的精神,这并非关于重塑自我,而是更准确地展现自我。有时这就足够了。
亲自体验🔗 在线应用:knowledge-graph-cv-837592265234.europe-west1.run.app
默认加载我的简历——探索三种视图后,可上传个人简历。
📂 源代码:github.com/pcescato/knowledge-graph-cv
技术指标- 提取时间:约15-25秒(Gemini Flash Preview 3.0)
- 平均图谱:25-35节点,60-80条关系
- 密度:2.0-2.8(每节点边数)
- 支持格式:仅PDF
- 可视化方案:3种(网络、流程、矩阵)
- 语言支持:英文界面
此MVP作为谷歌AI挑战的概念验证,耗时3天完成。
技术路线图(尚未实现):
- 导出格式:JSON、GraphML、Neo4j查询语句,确保数据可移植性
- 对比模式:并行简历分析追踪职业演变
- 技能差距分析:对比个人图谱与目标职位描述
- 时间维度:可视化职业发展时序
但我看到超越个人作品集的潜力:
- HR科技:基于技能图谱而非关键词的智能候选人匹配
- 内部人才映射:企业理解团队间的知识分布
- 职业指导:可视化技能差距与成长路径
图谱方法揭示了传统简历隐藏的连接关系。如果您正于此领域耕耘,或对招聘、人才分析、知识管理的应用感兴趣——期待交流。
感谢阅读! 若此文引发共鸣,期待聆听您的见解。
您的职业生涯适合时间线,还是更适合图谱? 💭



随时随地看视频