docs: 의도 분석과 엔티티 추출 분리 필요성 문서화
This commit is contained in:
parent
50b52ae4ac
commit
c8604acb8b
66
journey/troubleshooting/251118_claude_의도_분석_엔티티_추출_분리.md
Normal file
66
journey/troubleshooting/251118_claude_의도_분석_엔티티_추출_분리.md
Normal file
@ -0,0 +1,66 @@
|
|||||||
|
# rb8001: 의도 분석과 엔티티 추출 분리 필요
|
||||||
|
|
||||||
|
**날짜**: 2025-11-18
|
||||||
|
**작성자**: claude
|
||||||
|
**관련 파일**: `rb8001/app/services/workflows/web_search_workflow.py`, `rb8001/app/router/slack_handler.py`, `rb8001/app/brain/decision_engine.py`
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 문제 상황
|
||||||
|
|
||||||
|
- 사용자: "인터케어 검색해줘" → 로빙: "어떤 회사를 말씀하시나요?" (재질문만 반환, 검색 미수행)
|
||||||
|
- 웹 검색만 엔티티 추출 실패 시 차단하고, 이메일/캘린더/문서 분석은 차단하지 않음
|
||||||
|
- 의도 분석과 엔티티 추출이 혼재되어, 의도는 맞게 분석했지만 엔티티 추출 실패로 실행이 차단됨
|
||||||
|
|
||||||
|
## 원인 분석
|
||||||
|
|
||||||
|
- `web_search_workflow.py:144-146`: 엔티티가 없거나 `conf < 1.0`이면 `clarify_required`로 차단
|
||||||
|
- `_resolve_pronoun_and_link()`: 대명사("이 기업", "그 기업")가 있을 때만 엔티티 추출 시도
|
||||||
|
- 직접 검색어("인터케어")가 제공된 경우에도 엔티티 추출 실패로 검색 차단
|
||||||
|
- 하드코딩된 예시("지에프솔루션 / AIdol Company") 존재
|
||||||
|
|
||||||
|
## 해결 방안
|
||||||
|
|
||||||
|
### 1. 하드코딩 예시 제거 (완료)
|
||||||
|
- `web_search_workflow.py:145`: "예: 지에프솔루션 / AIdol Company" 제거
|
||||||
|
- `slack_handler.py:492`: 동일 예시 제거
|
||||||
|
|
||||||
|
### 2. 의도 분석과 엔티티 추출 분리 (제안)
|
||||||
|
- 직접 검색어가 제공된 경우 엔티티 추출 실패와 무관하게 검색 수행
|
||||||
|
- `web_search_workflow.py:link_node`: 엔티티 없어도 쿼리 원문으로 검색하는 폴백 경로 추가
|
||||||
|
- 대명사 사용 시에만 엔티티 추출 시도, 직접 검색어는 쿼리 그대로 사용
|
||||||
|
|
||||||
|
### 3. LangGraph 분기 개선 (제안)
|
||||||
|
- 엔티티 유무/대명사 여부를 판단해 분기
|
||||||
|
- 직접 검색어: clarify 없이 검색 진행
|
||||||
|
- 대명사만 있는 경우: 엔티티 추출 시도 후 clarify 또는 검색
|
||||||
|
|
||||||
|
## 시나리오 예시
|
||||||
|
|
||||||
|
1. **직접 검색어**: "인터케어 검색해줘" → 즉시 검색 수행
|
||||||
|
2. **대명사 + 이전 맥락**: "지에프솔루션 검색해줘" → "이 기업 대표 누구야?" → 맥락에서 엔티티 추출 후 검색
|
||||||
|
3. **이메일 수신자 명시**: "김팀장에게 메일 보내줘" → 즉시 처리
|
||||||
|
4. **이메일 수신자 불명확**: "메일 보내줘" → 수신자 재질문
|
||||||
|
5. **캘린더 정보 완전**: "11월 25일 오전 9시 검진 등록" → 즉시 등록 확인
|
||||||
|
6. **캘린더 정보 불완전**: "내일 회의 등록" → 시간/장소 재질문
|
||||||
|
7. **문서 첨부**: "[파일: 계약서.pdf] 분석해줘" → 즉시 분석
|
||||||
|
8. **문서 없음**: "계약서 분석해줘" → 파일 재요청
|
||||||
|
9. **뉴스 키워드 명시**: "AI 규제 뉴스 찾아줘" → 즉시 검색
|
||||||
|
10. **뉴스 키워드 불명확**: "뉴스 찾아줘" → 주제 재질문
|
||||||
|
|
||||||
|
## 교훈
|
||||||
|
|
||||||
|
### 의도 분석과 엔티티 추출 분리 원칙
|
||||||
|
- 의도 분석: 사용자가 무엇을 원하는가 (검색/이메일/캘린더 등)
|
||||||
|
- 엔티티 추출: 실행에 필요한 정보가 무엇인가 (검색어/수신자/일정 정보 등)
|
||||||
|
- 의도별로 필요한 정보가 없어도 가능한 범위에서 실행하도록 설계
|
||||||
|
|
||||||
|
### 웹 검색 특수성
|
||||||
|
- 직접 검색어 제공 시 엔티티 추출 실패와 무관하게 검색 수행
|
||||||
|
- 대명사 사용 시에만 엔티티 추출 시도
|
||||||
|
- 검색 결과 0건일 때만 재질문
|
||||||
|
|
||||||
|
### 다른 의도와의 일관성
|
||||||
|
- 이메일/캘린더/문서 분석은 엔티티 추출 실패 시 재질문하지만 실행은 차단하지 않음
|
||||||
|
- 웹 검색도 동일한 원칙 적용 필요
|
||||||
|
|
||||||
Loading…
x
Reference in New Issue
Block a user