같은 뜻 질문 판정을 임베딩 거리에서 별도 판정 단계로 옮긴 과정
2026.10.04 · 2분
개요
| 항목 | 내용 |
|---|---|
| 유형 | 기술 선택 |
| 시점 | 2026.09 |
| 상태 | 판정 단계 분리 후 실제 모델로 반복 확인 |
| 관련 영역 | FAQ, 프롬프트, 답변 생성 |
| 나의 역할 | 측정 실행, 방식 선택, 반복 확인 |
1. 상황과 제약
사는 곳처럼 자주 받을 질문은 관리자가 답변을 등록해 두고, 표현이 달라도("어디 거주중이신가요?", "집이 어디세요?") 등록한 답이 나가게 하고 싶었습니다. 반대로 "어디서 일하세요?"처럼 뜻이 다른 질문에 "관악구에 삽니다"라고 답하면 안 됐습니다.
2. 검토와 판단
먼저 임베딩 거리로 같은 뜻을 가를 수 있는지 쟀습니다. 등록 질문 3개와 방문자 질문 22개(같은 뜻 10개, 다른 뜻 12개)를 비교했습니다.
| 구분 | 거리 |
|---|---|
| 같은 뜻 질문 중 가장 먼 것 | 0.7338 |
| 다른 뜻 질문 중 가장 가까운 것 | 0.6305 |
두 범위가 겹쳤습니다. 뜻이 다른 "어디서 일하세요?"가 같은 뜻인 "사는 곳이 어디예요?"보다 사는 곳 FAQ에 더 가까웠습니다. 거리로 바로 답을 내보내는 빠른 길은 두지 않았습니다.
대신 FAQ를 검색 문서로 색인하고, 답변 모델이 같은 뜻인지 판단해 등록 답변을 쓰게 했습니다. 질문 6개로 확인했을 때 모두 기대대로 동작했습니다.
3. 실행과 조율
문제는 "어디서 태어나셨나요?"처럼 등록 질문("고향이 어디세요?")과 비슷한 질문에서 나왔습니다. 같은 질문인데 등록 답변이 나올 때와 "답변드리기 어렵다"는 안내가 나올 때가 번갈아 나왔고, "근거에 직접적인 언급은 없습니다" 같은 판단 과정이 답변에 섞이기도 했습니다. 프롬프트에서 FAQ 규칙의 위치를 옮겨도 마찬가지였습니다.
프롬프트만으로는 일관된 결과를 보장할 수 없다고 보고 판정을 따로 떼어 냈습니다.
- 검색 결과에 공개 FAQ가 있을 때만, 답변을 만들기 전에 "같은 정보를 묻는 등록 질문의 번호(없으면 0)"만 모델에게 묻습니다.
- 번호가 나오면 서버가 등록 답변을 그대로 보내고, 답변 생성은 하지 않습니다.
- 0이면 기존 답변 생성 경로로 갑니다.
- 기준은 "원하는 정보가 같은가"로 두었습니다. 고향과 태어난 곳은 같은 질문, 사는 곳과 일하는 곳은 다른 질문, 두 가지를 함께 묻는 질문은 같은 질문이 아닌 것으로 봤습니다.
4. 결과와 확인
질문별로 2~3번씩 다시 실행했습니다. "어디서 태어나셨나요?"는 매번 등록 답변만, "어디서 일하세요?"는 매번 안내 문구가 나왔습니다. "고향이랑 주로 쓰는 기술 알려주세요"에는 매번 두 내용을 모두 답했고, 판단 과정은 더 이상 답변에 나오지 않았습니다.
FAQ가 검색됐을 때만 짧은 호출이 하나 늘어납니다.