Skip to content

fix: improve chat retrieval fallback and query expansion(챗봇 검색 실패 보완 및 질문 표현 처리 개선)#27

Merged
1024andrew merged 2 commits intodevfrom
fix/#27
May 3, 2026
Merged

fix: improve chat retrieval fallback and query expansion(챗봇 검색 실패 보완 및 질문 표현 처리 개선)#27
1024andrew merged 2 commits intodevfrom
fix/#27

Conversation

@1024andrew
Copy link
Copy Markdown
Contributor

@1024andrew 1024andrew commented May 1, 2026

유형

  • Feat
  • Fix
  • Design
  • Docs
  • Chore
  • Hotfix

작업 배경

사용자가 DB에 저장된 표현과 다르게 질문하면 관련 정보를 제대로 찾지 못하는 문제가 있었습니다.

예시:

  • 음료수 같은 거 살만한 곳 있나?
  • 간단하게 뭐 먹을만한 곳?
  • 방에서 라면 끓여먹어도 돼?
  • 기숙사 통금 언제야?
  • 새벽 2시에 들어가도 돼?
  • 전자레인지 어디 있어?

또한 dormitory = null인 비로그인 사용자의 경우 검색 범위가 넓어져 답변 품질과 출처 정확도가 떨어지는 문제가 있었습니다.

변경 사항

  • query_rewriter.py 추가

    • 사용자 질문을 RAG 검색에 적합한 검색용 질의로 확장
    • 예: 음료수 살만한 곳편의점, 매점, 구매 위치 키워드 보강
  • query expansion 설정값 추가

    • chat_query_rewrite_enabled
    • chat_query_rewrite_model
    • chat_query_rewrite_temperature
    • chat_retrieval_method_query_expansion
    • chat_retrieval_version_query_expansion
  • 검색 실패 시 query expansion fallback 적용

    • 원문 검색으로 답변 실패 시 검색 질의를 확장한 뒤 재검색
  • 명확한 intent 질문에 사전 query expansion 적용

    • 통금/출입시간
    • 먹을 곳/편의점/식당
    • 전자레인지/공용시설
    • 취사/반입금지 물품
  • dormitory = null 비로그인 사용자 검색 흐름 개선

    • 전체 생활관 그룹 검색 후 no-answer 시 query expansion 재검색
  • no-answer 판정 개선

    • 답변 안에 관련 정보를 찾을 수 없습니다.가 포함되면 NO_ANSWER로 처리
    • 실패 응답의 source_url 제거
  • 답변 출처 선택 개선

    • LLM이 반환한 used_reference_index를 기준으로 실제 답변에 사용한 참고 정보의 출처를 선택

테스트

Swagger에서 아래 케이스를 확인했습니다.

  • 음료수 같은거 살만한 곳 있나? + 제1학생생활관
  • 방에서 라면 끓여먹어도 돼? + dormitory = null
  • 기숙사 통금 언제야? + 제1학생생활관
  • 새벽 2시에 들어가도 돼? + 제2학생생활관
  • 간단하게 뭐 먹을만한 곳? + 제1학생생활관
  • 전자레인지 어디 있어? + 생활관별 케이스

기대 효과

  • DB 표현과 다른 사용자 질문도 관련 문서로 연결 가능
  • 비로그인 사용자 답변 품질 개선
  • 실패 답변의 상태값과 출처 정합성 개선
  • 답변 내용과 출처 불일치 문제 완화

후속 개선 사항

  • 기숙사 무관 질문 validator 고도화
  • 테스트 질문 세트 기반 회귀 테스트 자동화
  • intent 분류 및 reranking 정교화

스크린샷

image image image image image image

Copy link
Copy Markdown
Contributor

@gemini-code-assist gemini-code-assist Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

This pull request implements a query expansion and rewriting mechanism to enhance the RAG-based chat service. Key changes include adding configuration for query rewriting, integrating expansion logic into the retrieval flow with specific triggers and fallback strategies, and transitioning the answer generator to a structured JSON output for improved source tracking. Feedback suggests adding a timeout to the OpenAI API calls for increased stability and refining the JSON extraction logic from LLM responses using regular expressions to handle potential surrounding text more robustly.

Comment thread app/services/query_rewriter.py
Comment thread app/services/generator.py
@1024andrew 1024andrew changed the title fix: improve chat retrieval fallback and query expansion fix: improve chat retrieval fallback and query expansion(챗봇 검색 fallback 및 질의 확장 개선) May 2, 2026
@1024andrew 1024andrew changed the title fix: improve chat retrieval fallback and query expansion(챗봇 검색 fallback 및 질의 확장 개선) fix: improve chat retrieval fallback and query expansion(챗봇 검색 실패 보완 및 질문 표현 처리 개선) May 2, 2026
@1024andrew 1024andrew merged commit 1bb7958 into dev May 3, 2026
1 check passed
@kimssirr
Copy link
Copy Markdown
Contributor

kimssirr commented May 3, 2026

수고하셨습니다!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants