LalithNeelapu/SMARTHIREAI
GitHub: LalithNeelapu/SMARTHIREAI
一个基于两阶段语义检索的 AI 候选人排名系统,能在大规模候选人池中快速匹配职位需求并过滤虚假档案。
Stars: 0 | Forks: 0
## SmartHireAI
emoji: 🤖
colorFrom: indigo
colorTo: green
sdk: streamlit
sdk_version: 1.39.0
app_file: app.py
pinned: false
license: mit
# SmartHireAI 候选人排名系统
SmartHireAI 是一个为 Redrob Hackathon 设计的端到端智能候选人发现与排名系统。它根据指定的职位描述,将候选人池与 **Senior AI Engineer — Founding Team** 职位进行匹配。
## 🚀 核心功能
* **两阶段候选人检索**:
* **阶段 1 (启发式过滤)**:使用快速且 CPU 友好的启发式函数(结合职位名称匹配、检索关键词、所需技能、工作年限和行为参与度),在 2 秒内对所有 100,000 名候选人进行评分。
* **阶段 2 (语义重排)**:提取前 2,500 名候选人,并使用本地 `SentenceTransformer` 双编码器(`sentence-transformers/all-MiniLM-L6-v2` 或 `BAAI/bge-small-en-v1.5`)对他们进行排名,在 1.5 分钟内完成。
* **蜜罐/陷阱防护机制**:
* 使用严格的阈值检查(`honeypot_penalty >= 0.4`),明确过滤掉具有不可能的配置文件或关键蜜罐信号的合成候选人(例如,技能持续时间超过工作年限、摘要中堆砌关键词、具有 AI 技能的非技术职位),在前 100 名中实现了 **0% 的蜜罐率**。
* **完全遵守 CPU 约束**:
* 经过优化,可以在标准 CPU 上 **1.5 分钟** 内(远低于 5 分钟的限制)完全离线执行(无网络 API 调用)。
## 📁 仓库结构
```
SmartHireAI/
│
├── README.md
├── requirements.txt
├── rank.py
│
├── src/
│ ├── candidate_filter.py
│ ├── feature_engineering.py
│ ├── honeypot_detector.py
│ ├── jd_parser.py
│ ├── scoring.py
│ ├── ranker.py
│ └── submission_generator.py
│
├── output/
│ └── final_submission.csv
│
├── audit_honeypots.py
├── submission_metadata.yaml
└── docs/
└── PPT.pdf
```
## 🛠️ 设置与安装
1. 创建并激活您的虚拟环境:
python -m venv venv
.\venv\Scripts\activate # On Windows
source venv/bin/activate # On Linux/macOS
2. 安装依赖项:
pip install -r requirements.txt
## 🏃 使用与复现
运行排名 pipeline:
```
python rank.py --model fast
```
* 使用 `--model fast` 选择快速的 MiniLM embedding 模型(默认,耗时约 1.5 分钟)。
* 使用 `--model quality` 选择 BGE-small embedding 模型。
* 输出结果将保存为 `output/final_submission.csv`。
## 🔍 验证
运行蜜罐审计工具,以验证最终前 100 名候选人列表的质量和安全性:
```
python audit_honeypots.py
```
预期输出:
```
Loading candidates...
Honeypots in Top100: 0
```
## 🌐 Streamlit Web 界面
我们提供了一个专业的 Streamlit Web 界面,用于交互式的候选人排名和发现。它允许您动态上传自定义的职位描述和候选人数据集,运行 AI 排名 pipeline,检查排名前列的候选人,并下载生成的 CSV 文件。
### 🛠️ 本地运行
1. 确保已安装所有依赖项(包括 Streamlit):
pip install -r requirements.txt
2. 启动 Streamlit 应用程序:
streamlit run app.py
3. 打开浏览器并访问 `http://localhost:8501`。
4. 上传您的职位描述(格式为 `.md` 或 `.txt`)和候选人档案(`.jsonl`),选择 embedding 模型,然后点击 **Rank Candidates**。
### ☁️ 部署到 Hugging Face Spaces
您只需几个步骤即可将此应用程序部署到 Hugging Face Spaces:
1. **创建新的 Space**:
- 前往 [Hugging Face Spaces](https://huggingface.co/spaces) 并点击 **Create new Space**。
- 设置名称,选择 **Streamlit** 作为 SDK,并选择所有者/可见性。
2. **提交/上传文件**:
- 将以下文件和目录上传到您的 Space 仓库的根目录下:
* `app.py` (Streamlit 入口点)
* `requirements.txt` (依赖项列表)
* `src/` (包含过滤器、特征和排名代码的整个源代码目录)
* `rank.py` (命令行脚本)
* `audit_honeypots.py` (蜜罐审计工具)
* `submission_metadata.yaml` (元数据描述)
3. **自动部署**:
- 文件上传完成后,Hugging Face 将自动安装 `requirements.txt` 中的依赖项并启动 Streamlit 服务器。
- 您可以通过以下地址访问您已部署上线的应用程序:`https://huggingface.co/spaces//`。
标签:Kubernetes, 人力资源科技, 人工智能, 候选人匹配, 反作弊检测, 特征工程, 用户模式Hook绕过, 语义搜索, 逆向工具