43 lines
1.2 KiB
Markdown
43 lines
1.2 KiB
Markdown
# 架构说明
|
||
|
||
## 总体架构
|
||
项目采用前后端分离部署:
|
||
- `apps/api`:FastAPI 服务,负责抽取、入库、匹配、解释、查询
|
||
- `apps/web`:React/Vite 控制台,负责 POC 演示
|
||
- `postgres`:结构化数据持久化
|
||
- `qdrant`:LightRAG 风格向量召回层
|
||
|
||
## 后端分层
|
||
- `api`:HTTP 路由
|
||
- `services`:抽取、入库、匹配、RAG 适配
|
||
- `repositories`:数据库读写
|
||
- `domain`:Pydantic schema 与 SQLAlchemy model
|
||
|
||
## 抽取链路
|
||
1. 读取 `packages/prompts`
|
||
2. 若配置了外部 LLM,则走 OpenAI 兼容结构化抽取
|
||
3. 如果外部 LLM 不可用,则回退到本地规则抽取
|
||
4. 所有输出统一走 Pydantic 校验
|
||
|
||
## RAG 方案
|
||
当前 POC 使用 `LightRAGAdapter` 作为轻量适配层:
|
||
- 结构化卡片先落 PostgreSQL
|
||
- 关键信息序列化后写入 Qdrant
|
||
- 使用技能近义词图做扩展召回
|
||
- 对召回结果进入规则打分排序
|
||
|
||
## 匹配公式
|
||
```text
|
||
MatchScore =
|
||
0.35 * SkillScore
|
||
+ 0.20 * RegionScore
|
||
+ 0.15 * TimeScore
|
||
+ 0.15 * ExperienceScore
|
||
+ 0.15 * ReliabilityScore
|
||
```
|
||
|
||
## 部署方式
|
||
- 本地:`infrastructure/docker-compose.yml`
|
||
- 生产:`infrastructure/docker-compose.prod.yml`
|
||
- 前端通过 Nginx 独立容器部署,并反向代理 API,保持前后端分离
|