---
tags: [workflow, conversation, web-search, query-rewrite, ssot, robeing]
---

# web_search_query_rewrite_workflow 워크플로우

## 상위 원칙

- [Writing Principles](https://github.com/happybell80/0_VALUE/blob/main/20_Governance/writing-principles.md)
- [프로젝트 아티팩트 SSOT](https://github.com/happybell80/0_VALUE/blob/main/20_Governance/project-artifacts-ssot.md)

## 목적

웹 검색이 필요한 사용자 질문을 검색 엔진에 바로 던지기 전에, 검색어를 맥락에 맞게 재작성하는 고정 기준을 정의합니다.

이 문서는 특히 아래 회귀를 막기 위한 SSOT입니다.

- `fear & greed`를 일반 단어로 분해해 음악/도서/일반 공포 검색으로 흐르는 문제
- `"내 이름이 뭐야?"` 같은 자기지시 표현을 웹 검색으로 보내는 문제
- 사용자가 힌트를 줬는데도 검색 질의에 반영하지 못하는 문제

## 적용 범위

- rb8001의 Slack 대화 처리 중 `web_search`로 분류된 요청
- `message_router.py` 또는 동등한 검색 진입 전처리 레이어
- 검색 쿼리 생성이 필요한 실시간 질의

## 흐름

```text
사용자 메시지 수신
  → 자기지시 / self-inspect 보호 표현 검사
  → 복수 질문이면 질의 단위 분해
  → 직전 정정/재촉/힌트 발화 확인
  → 고정 표현 보호 사전 검사
  → 검색용 쿼리 재작성
  → web_search 실행
  → 결과 요약 + 출처 반환
```

## 고정 규칙

### 1. 자기지시 표현은 웹 검색보다 self-inspect를 우선합니다

아래 표현은 검색 전 단계에서 먼저 보호합니다.

- `내 이름`
- `내가 누구`
- `내 정보`
- `내가 전에 뭐라고`
- `지난주에 뭐라 했어`

처리 기준:
- 사용자 자신, 세션 정보, 최근 대화, 사용자 프로필을 묻는 질문이면 검색으로 보내지 않습니다.
- 이 단계에서 self-inspect 또는 대화 이력 조회 경로로 분기합니다.

### 2. 복합 고정 표현은 분해하지 않고 보존합니다

아래와 같은 표현은 단어 단위로 분해하지 않습니다.

- `fear & greed index`
- `cnn fear and greed index`
- 회사명/제품명/서비스명
- 사용자가 직접 다시 설명한 전문 용어

처리 기준:
- 띄어쓰기나 특수문자가 있어도 하나의 검색 단위로 유지합니다.
- 일반 명사 해석보다 관용 표현/전문 용어 해석을 우선합니다.

### 3. 사용자가 준 힌트는 다음 검색 질의에 반드시 반영합니다

예:
- 사용자: `미국 주식시장의 분위기를 평가할 때 많이 쓰는 지수야`

처리 기준:
- 후속 검색 질의에 `미국 주식시장`, `지수`, `fear and greed index` 같은 보강어를 포함합니다.
- 직전 힌트를 무시하고 원문만 반복 검색하지 않습니다.

### 4. 정정/재촉 표현은 새 검색의 우선 신호로 봅니다

예:
- `아니 날씨말고`
- `알려달라고 했잖아`
- `그거 말고`
- `다시 검색해봐`

처리 기준:
- 직전 검색 결과를 유지하지 않고, 검색어를 재작성하거나 검색 대상을 교체합니다.
- 정정 발화가 들어왔는데도 이전 질문으로 회귀하지 않습니다.

## 쿼리 재작성 규칙

### A. 용어 보강

- `fear & greed` → `fear and greed index cnn`
- `공포탐욕지수` → `cnn fear and greed index`
- `달러 환율` → `usd krw exchange rate`

원칙:
- 검색 엔진이 더 잘 이해하는 표준 영문 표현이 있으면 병기합니다.
- 단, 사용자가 한국어 결과를 기대하는 질의면 한국어 핵심어는 유지합니다.

### B. 힌트 병합

예:
- 원문: `fear & greed 지수 알려줘`
- 힌트 후 재작성: `cnn fear and greed index 미국 주식시장 지수`

원칙:
- 직전 1~2턴 안의 설명, 정정, 범위 제한 표현을 병합합니다.
- 힌트는 추가 옵션이 아니라 질의 본문 일부로 승격합니다.

### C. 보호 사전 우선

원칙:
- 보호 사전에 등록된 표현은 일반 토큰화 전에 먼저 검사합니다.
- 보호 표현과 일반 표현이 섞여 있으면 보호 표현을 보존한 상태로 나머지만 재작성합니다.

## 실패 방지 규칙

- `.*이 뭐야`, `.*가 뭐야` 같은 광범위 패턴만으로 곧바로 웹 검색하지 않습니다.
- 자기지시 표현, 대화 회상 표현, 사용자 프로필 질문은 web_search 예외 대상으로 둡니다.
- 검색 실패 후 재질문이 들어오면 이전 질문을 반복 처리하지 않고, 새 정정 신호를 우선 반영합니다.

## 검증 기준

- `fear & greed 지수 알려줘` → 음악/도서가 아니라 지수 검색으로 가야 합니다.
- `미국 주식시장 분위기 지수야 다시 검색해봐` → 힌트 반영된 보강 검색어가 생성되어야 합니다.
- `내 이름이 뭐야?` → 웹 검색이 아니라 self-inspect 계열로 빠져야 합니다.
- `아니 날씨말고` → 직전 날씨 질의로 회귀하지 않아야 합니다.

## 관련 문서

- [slack_basic_dialogue](./slack_basic_dialogue.md)
- [Self Inspect](../../skills/self-inspect/SKILL.md)
- [Web Search](../../skills/web-search/SKILL.md)

## 한 줄 결론

웹 검색 품질의 핵심은 검색 엔진 호출 자체가 아니라, 호출 전에 `자기지시 표현 보호`, `고정 용어 보존`, `힌트 병합`, `정정 반영`을 먼저 수행하는 데 있습니다.
