Skip to content

Latest commit

 

History

1 Commit

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

AI 岗位信息问答系统(RAG)

基于检索增强生成(RAG)的中文 AI 岗位信息问答系统。用户可以用自然语言询问岗位信息,系统从岗位知识库中检索相关内容,并通过大模型以“朋友式聊天”的方式回答和推荐岗位。

功能特性

  • 读取并清洗 1000 条中文 AI 岗位数据
  • 使用 RecursiveCharacterTextSplitter 切分岗位 JD
  • 使用 sentence-transformers 中文 Embedding 模型生成向量
  • 使用 Chroma 持久化向量库
  • 通过 VectorStoreRetriever 检索 Top-K 相关岗位
  • 支持多轮对话,记住用户上下文
  • 使用 Flask + 原生 HTML/CSS/JS 构建 DeepSeek Harness 风格网页界面,可查看每次检索到的真实岗位信息
  • 大模型支持 OpenAI 兼容接口 / 国内大模型 API / Ollama 本地模型
  • 左侧会话列表支持三点菜单删除单个会话
  • 设置弹窗内可直接配置 API 并“测试连接”,保存后写入 .env

项目结构

job-rag/
├── data/
│   └── res.csv
├── src/
│   ├── __init__.py
│   ├── load_data.py          # 读取数据
│   ├── clean_data.py         # 清洗数据
│   ├── build_vectorstore.py  # 构建向量库
│   ├── retrieve.py           # 检索相关岗位
│   ├── prompt.py             # System Prompt 和 Prompt 模板
│   ├── llm.py                # 大模型调用
│   └── chat.py               # 多轮对话逻辑
├── app.py                    # Flask 入口
├── static/
│   ├── index.html            # 前端页面
│   ├── style.css             # 前端样式
│   └── app.js                # 前端交互
├── requirements.txt
├── .env.example
└── README.md

安装依赖

建议使用 Python 3.10+ 和虚拟环境。

cd job-rag
python -m venv .venv
# Windows
.venv\Scripts\activate
# macOS / Linux
source .venv/bin/activate

pip install -r requirements.txt

配置环境变量

复制 .env.example.env,然后按需修改:

cp .env.example .env

主要配置项:

变量 说明 示例
OPENAI_API_KEY 大模型 API Key sk-xxx
OPENAI_BASE_URL OpenAI 兼容接口地址 https://api.openai.com/v1
OPENAI_MODEL_NAME 大模型名称 gpt-4o-mini
EMBEDDING_MODEL_NAME Embedding 模型名称 BAAI/bge-small-zh-v1.5
EMBEDDING_CACHE_DIR Embedding 模型下载缓存目录,默认 models/,放在项目内 models
CHROMA_DIR Chroma 向量库目录 data/chroma_db

如果使用 Ollama 本地模型,可以配置为:

OPENAI_BASE_URL=http://localhost:11434/v1
OPENAI_MODEL_NAME=qwen2.5
OPENAI_API_KEY=ollama

如果使用 Anthropic 兼容接口(例如第三方路由),可以配置为:

ANTHROPIC_BASE_URL=https://routifyapi.com/v1
ANTHROPIC_AUTH_TOKEN=your-token
ANTHROPIC_MODEL_NAME=deepseek-v4-flash

系统会优先使用 Anthropic 配置。

运行项目

首次构建向量库会自动下载 BAAI/bge-small-zh-v1.5 Embedding 模型,需要联网;如果已有本地模型,可以通过 EMBEDDING_MODEL_NAME 指定。 模型默认下载到项目目录下的 models/,不会放到 C 盘用户目录;可通过 EMBEDDING_CACHE_DIR 修改。

首次运行时,如果 data/chroma_db 不存在,系统会自动读取 data/res.csv 并构建向量库。也可以先手动构建:

cd job-rag
python -m src.build_vectorstore

然后启动 Web 界面:

cd job-rag
python app.py

浏览器打开 http://127.0.0.1:5000

使用示例

  • 用户:有没有自动驾驶相关的算法岗?
  • 系统:检索自动驾驶/SLAM/感知/规划等相关岗位,并基于真实岗位信息给出推荐和理由。
  • 用户:这个岗位需要什么技能?
  • 系统:结合上一轮推荐的岗位,继续回答技能要求。

页面中会展示“检索到的岗位”展开区,方便调试和演示 RAG 效果。

在页面左侧的“设置”区域可以直接配置大模型 API(Anthropic 兼容或 OpenAI 兼容)、API Key、Base URL 和模型名称,并可以点击“测试连接”验证配置是否可用;保存后会写入 .env,重启后仍然生效。

说明

  • 当前数据只有岗位名称和 JD,没有公司、城市、薪资、发布时间等字段,因此系统不会生成这些信息。
  • 推荐岗位时,系统 Prompt 明确要求只能引用检索到的真实岗位,避免编造。
  • 如果未配置大模型 API,系统会使用一个简单的本地兜底回答,便于先验证数据读取、向量库构建和检索流程;配置 API 后即可获得完整的朋友式聊天体验。

License

MIT License

About

基于 Flask + RAG 的中文 AI 岗位问答助手,检索 1000+ 岗位 JD,并通过大模型生成自然语言推荐与求职建议。

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages