manoj-chavan-13/redrob-ranker

GitHub: manoj-chavan-13/redrob-ranker

该系统通过十阶段混合排名流水线,从十万级候选人中高效筛选并排序最匹配人选,同时提供可解释的招聘推理依据。

Stars: 0 | Forks: 0

# 🚀 企业级 AI 候选人发现与排名系统 [![Challenge](https://img.shields.io/badge/Hackathon-Redrob%20Intelligent%20Ranking-2563eb?style=for-the-badge&logo=ai)](https://redrob.io) [![Status](https://img.shields.io/badge/Validator-PASSED%20(100%20Rows)-10b981?style=for-the-badge)]() [![Runtime](https://img.shields.io/badge/Runtime-~26s%20(100K%20Profiles)-f59e0b?style=for-the-badge)]() [![RAM Budget](https://img.shields.io/badge/Peak%20RAM-~145%20MB%20%2F%2016%20GB-06b6d4?style=for-the-badge)]() [![Python](https://img.shields.io/badge/Python-3.11%2B-1e293b?style=for-the-badge&logo=python)]() [![Docker Hub](https://img.shields.io/badge/Docker%20Hub-manojc13%2Fredrob--ranker-06b6d4?style=for-the-badge&logo=docker)](https://hub.docker.com/r/manojc13/redrob-ranker) ## 🏗️ 执行摘要与招聘挑战 传统招聘筛选依赖于简单的向量相似度或布尔简历抓取(`"RAG" AND "LangChain"`)。这引入了严重的系统性漏洞: 1. **关键词堆砌陷阱**:初级候选人可以通过列出数十个流行的封装框架来轻易操纵余弦相似度得分。 2. **资历盲区**:构建自定义、分布式检索基础架构的杰出架构师通常使用朴素的工程术语来描述他们的系统(`"implemented custom HNSW graph indexing over 50M vectors"`),而简单的关键词匹配器往往对他们的评分很低。 3. **可用性鸿沟**:如果技术得分很高的候选人无法联系、处于休眠状态,或受到严格的 90 天离职通知合同的限制,那么他们也是毫无用处的。 ### 我们的策略解决方案 我们设计了一个**两遍统计语料库 TF-IDF 与混合排名 Pipeline**,以离线流式传输的方式处理完整的 **100,000 名候选人数据集**。罕见的领域术语(`qlora`、`weaviate`、`ndcg`、`hnsw`)会获得动态提升的逆文档频率权重,在从数学上规范流行词垃圾信息的同时,将行为参与度信号作为直接的乘数进行评分。 ## 🧠 10 阶段 Pipeline 架构 ``` graph TD JD[Job Description & Taxonomies] --> S1[Stage 1: Job Intelligence Engine] Pool[100,000 JSONL Records] --> S2[Stage 2: High-Speed Ingestion Engine] S2 --> S5[Stage 5 & 6: Corpus TF-IDF & Hybrid Retrieval] S1 --> S5 S2 --> S4[Stage 4: Honeypot Detection Engine] S2 --> S3[Stage 3: Behavioral Signal Analyzer] subgraph Stage 9: Deterministic Hybrid Ranking Equation S5 --> HR[Semantic Depth & Seniority Score] S4 -->|Disqualify Synthetic Traps| HR S3 -->|Behavioral Probability Multiplier| HR end HR --> S10[Stage 10: Explainability Engine] S10 --> CSV[OUTPUT/submission.csv with Recruiter Reasoning] ``` ### 分阶段工程设计详解 | 阶段 | 模块名称 | 核心算法功能 | | :---: | :--- | :--- | | **1** | `Job Intelligence` | 编译领域分类法(`Vector DBs`、`Quant Eval`、`Foundational ML`),并建立企业文化契合度权重,优先青睐产品型公司的构建者,而非外包 IT 服务公司。 | | **2** | `Ingestion Engine` | 使用生成器将原始 `candidates.jsonl` 记录流式传输到强类型的 Python dataclass(`CandidateProfile`)中,将峰值内存消耗保持在 150 MB 以下。 | | **3** | `Behavioral Signal` | 计算复合招聘乘数($0.60\text{x}$ 至 $1.10\text{x}$ 范围),综合分析招聘人员回复率、近期登录情况以及即时的离职通知期可用性。 | | **4** | `Honeypot Detector` | 识别时间顺序上的异常和伪造的声明(例如,声称在职业生涯不足 $6$ 个月的情况下具备专家级熟练度),将陷阱硬性锁定为 `0.0` 分。 | | **5–8** | `Hybrid Scoring` | 将统计词汇领域深度与经验最佳区间(目标为 5-9 年)相结合,并对频繁跳槽者施加 $-40\%$ 的严厉惩罚。 | | **9–10**| `Explainability` | 将多维评分综合为人类可读的 1-2 句招聘人员评述,以证明候选人的排名和置信度。 | ## 🛡️ 击败 JD 陷阱与合成蜜罐 为了像执行技术招聘人员那样进行推理,我们的 Pipeline 在数学上强制执行了合理且有依据的质量阈值: * 🚨 **头衔追逐者惩罚(-40% 乘数)**:习惯性跳槽者在没有构建系统深度的情况下提升头衔。如果候选人在连续 $\ge 3$ 个职位中的平均任期 $<18$ 个月,引擎将应用 `0.60x` 的得分乘数。 * 📦 **框架封装过滤器**:列出表面封装库(`LangChain`、基础 API prompt)而没有核心基础架构术语的 profile,与深层系统工程师相比,其相关性权重会被降低。 * 🏢 **产品与服务对齐**:在软件产品公司发布过可扩展的面向用户架构的候选人,将比外包咨询路线获得更多的正向亲和力权重。 * 🕷️ **蜜罐取消资格**:注入数据集中的合成 profile(例如,声称在 2 年前毕业的情况下拥有 10 年以上的 PyTorch 经验)将被标记并锁定为 `0.0000`。 ## 📈 经验性能基准测试 在标准工作站(8 个 CPU 核心,Windows 11)上离线执行完整的 **100,000 名候选人数据集**: | 性能维度 | 实测基准 | 黑客马拉松规格预算 | 状态 | | :--- | :---: | :---: | :---: | | **第一遍:语料库 TF-IDF 训练** | 13.12 秒 | 离线流处理 | ✅ **已流式传输** | | **第二遍:混合评估** | 13.66 秒 | 离线流处理 | ✅ **已流式传输** | | **总端到端运行时间** | **26.78 秒** | $\le 300.00$ 秒(5 分钟) | ✅ **快 11.2 倍** | | **峰值 RAM 消耗** | **~145.4 MB** | $\le 16,000.0$ MB(16 GB 限制) | ✅ **99% 余量** | | **输出格式验证** | 100 行,单调得分 | 精确 100 行,CSV 已验证 | ✅ **100% 有效** | ## ⚡ 快速入门与执行指南 ### 前置条件 * Python 3.11 或更高版本 * 安装轻量级依赖项: ``` pip install -r requirements.txt ``` ### 1. 运行完整的 10 阶段排名 Pipeline 执行主编排器以评估所有 100,000 份 profile 并导出前 100 名入围名单: ``` python main.py --candidates ./data/candidates.jsonl --out ./OUTPUT/submission.csv ``` ### 2. 验证输出约束 验证输出格式是否严格遵守提交规范: ``` python validate_submission.py OUTPUT/submission.csv ``` 预期输出: ``` Submission is valid. ``` ### 3. 启动交互式 UI 沙盒 在浏览器中检查入围的候选人以及人类可读的招聘人员评述: ``` python -m streamlit run app.py ``` ## 📁 代码库目录结构 ``` redrob-ranker/ ├── app/ │ ├── __init__.py # Package initializer │ ├── models.py # Strongly typed Candidate & Signal dataclasses │ ├── ingestion.py # Memory-efficient JSONL streaming generator │ ├── behavioral.py # Behavioral Signal Analyzer & Envelope Logic │ ├── honeypot.py # Anomaly & Trap Detection Engine │ ├── scoring.py # Corpus TF-IDF & Hybrid Ranking Engine │ └── explainability.py # Recruiter Justification Narrative Generator ├── configs/ │ ├── settings.yaml # Pipeline execution weights & parameters │ └── weights.yaml # Component scoring multipliers ├── data/ │ ├── candidates.jsonl # Full 100,000 candidate dataset (Git LFS) │ ├── candidate_schema.json # Data structure specifications │ └── sample_candidates.json # Sample records for rapid development ├── OUTPUT/ │ ├── submission.csv # Verified Top 100 Candidate Recommendations │ ├── submission_metadata.yaml # Challenge declaration metadata │ ├── presentation_deck.html # Printable Executive Widescreen Slide Deck │ └── presentation_deck.md # Slide deck markdown source ├── app.py # Interactive Streamlit Sandbox UI ├── main.py # Master Pipeline Entrypoint ├── rank.py # CLI Shortcut Wrapper ├── requirements.txt # Pinned Dependencies ├── Dockerfile # Containerization Manifest └── docker-compose.yml # Automated Container Orchestration ``` ## 🐳 Docker 容器化 要在严格遵守资源限制($\le 16\text{ GB}$ RAM 预算,多核处理)的隔离容器内运行排名任务,请按照以下步骤操作: ### 选项 A:从 Docker Hub 拉取预构建镜像(推荐) 你可以直接从 Docker Hub 即时运行官方轻量级容器镜像,而无需在本地构建: ``` docker pull manojc13/redrob-ranker:latest ``` ### 选项 B:从源码本地构建 如果你更喜欢从本地代码库构建镜像: ``` docker build -t manojc13/redrob-ranker:latest . ``` ### 运行容器化 Pipeline 挂载你的本地 `data/` 和 `OUTPUT/` 目录,以便容器可以读取候选人记录并将最终的排名 CSV 导出回你的宿主机文件系统: **Windows PowerShell:** ``` docker run --rm -v "${PWD}/data:/app/data" -v "${PWD}/OUTPUT:/app/OUTPUT" manojc13/redrob-ranker:latest --candidates /app/data/candidates.jsonl --out /app/OUTPUT/submission.csv ``` **Windows Command Prompt (Legacy CMD):** ``` docker run --rm -v "%cd%/data:/app/data" -v "%cd%/OUTPUT:/app/OUTPUT" manojc13/redrob-ranker:latest --candidates /app/data/candidates.jsonl --out /app/OUTPUT/submission.csv ``` **Linux / macOS / Git Bash:** ``` docker run --rm -v "$(pwd)/data:/app/data" -v "$(pwd)/OUTPUT:/app/OUTPUT" manojc13/redrob-ranker:latest --candidates /app/data/candidates.jsonl --out /app/OUTPUT/submission.csv ``` ### 验证容器输出与合规性 直接在容器内部验证生成的输出,以确认符合 100 行格式规范: ``` docker run --rm --entrypoint python -v "${PWD}/OUTPUT:/app/OUTPUT" manojc13/redrob-ranker:latest validate_submission.py /app/OUTPUT/submission.csv ``` ## 📜 声明与合规性 * **原创性**:所有源代码均为 Team Titan 开发的 100% 原创作品。 * **隐私与安全**:排名执行过程在 CPU 上离线且本地运行。没有任何候选人的个人身份信息(PII)或 profile 文本被传输到沙盒评估环境之外。 * **可复现性**:排序算法强制按 `candidate_id` 进行二次确定性排序,确保在连续运行中产生完全相同的输出。
标签:Kubernetes, Python, TF-IDF, 人力资源, 人工智能, 候选人筛选, 排名算法, 数据清洗, 无后门, 版权保护, 用户模式Hook绕过, 请求拦截, 逆向工具