IDEA-8: GraphRAG — NetworkX 기반 지식 그래프
- td_knowledge_graph 테이블 (user_id, subject, relation, object 트리플) - GraphService: MultiDiGraph 인메모리 캐시 + MySQL 영속화 - add_relation / query_entity LangChain 도구 - call_model에 그래프 요약 자동 주입 (시스템 프롬프트) - GRAPH_ENABLED=true 환경변수로 활성화 - requirements.txt에 networkx>=3.0 추가 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
+19
-6
@@ -656,14 +656,27 @@ Phase 20 RAGAS 평가 → Phase 15 (모델선택) → Phase 16 (Docke
|
||||
|
||||
### 장기 — 구조적 확장
|
||||
|
||||
#### IDEA-8. GraphRAG / 지식 그래프
|
||||
#### ✅ IDEA-8. GraphRAG / 지식 그래프
|
||||
|
||||
**배경**: `td_user_profile`이 flat key-value라 엔티티 간 관계 추론이 불가능하다.
|
||||
|
||||
**구현 방향**:
|
||||
- `(도율) -[알레르기]→ (복숭아)`, `(아록) -[부모]→ (도율)` 형태 그래프
|
||||
- NetworkX 기반 로컬 그래프 + 그래프 쿼리 도구
|
||||
- 복잡한 추론 질문 ("도율이 먹으면 안 되는 음식은?") 대응 가능
|
||||
**구현 내용**:
|
||||
- `td_knowledge_graph` 테이블 — (user_id, subject, relation, object) 트리플 영구 저장
|
||||
- `GraphService` — NetworkX `MultiDiGraph` 인메모리 캐시 + MySQL 영속화
|
||||
- `add_relation(subject, relation, obj)` 도구 — 관계 저장
|
||||
예: `도율 -[알레르기]→ 복숭아`, `아록 -[자녀]→ 도율`
|
||||
- `query_entity(entity)` 도구 — 출발/도착 방향 모든 관계 조회
|
||||
- `call_model`에 저장된 그래프 요약을 시스템 프롬프트에 자동 주입
|
||||
- `.env` `GRAPH_ENABLED=true`로 활성화 (기본 비활성)
|
||||
|
||||
**사용 예시**:
|
||||
```
|
||||
사용자: "도율이 복숭아 알레르기가 있어"
|
||||
→ add_relation("도율", "알레르기", "복숭아")
|
||||
|
||||
사용자: "도율이 먹으면 안 되는 음식은?"
|
||||
→ query_entity("도율") → "도율 -[알레르기]→ 복숭아"
|
||||
```
|
||||
|
||||
**난이도**: 높음 | **임팩트**: 높음 (메모리 추론 능력 대폭 향상)
|
||||
|
||||
@@ -694,5 +707,5 @@ Phase 20 RAGAS 평가 → Phase 15 (모델선택) → Phase 16 (Docke
|
||||
| IDEA-5 CRAG | ✅ crag_check LangGraph 노드 | 중간 | 높음 | — |
|
||||
| IDEA-7 Auto-Eval | ✅ eval/auto_tune.py | 중간 | 중간 | — |
|
||||
| IDEA-6 영수증 OCR | analyze_image 재활용 | 중간 | 높음 | 1순위 |
|
||||
| IDEA-8 GraphRAG | 새 데이터 구조 | 높음 | 높음 | 7순위 |
|
||||
| IDEA-8 GraphRAG | ✅ NetworkX + MySQL + 2개 도구 | 높음 | 높음 | — |
|
||||
| IDEA-9 PWA WebUI | 프론트엔드 재작성 | 높음 | 높음 | 8순위 |
|
||||
|
||||
Reference in New Issue
Block a user