사용자의 자연어 질의를 처리하여 정확하고 관련성 높은 상품을 추천하는 하이브리드 검색 시스템 구현
-
듀얼 쿼리 시스템
- BM25 쿼리: 금지어 포함 (예: "여름 모자 -털 -방울 -비니")
- 임베딩 쿼리: 양(+) 키워드 확장 (예: "여름 모자 통풍 라피아 썬캡")
-
카테고리 기반 검색
- 방법2 (LLM): Top1·Top2 비율 기반 배분
- 방법1 (임베딩): Top3·Top4·Top5 고정 쿼터(5/4/3)
-
품질 관리
- 도메인 화이트리스트 적용
- 시즌 필터링
- 중복 제거 (product_code/URL/pHash)
- LLM 전처리 구현 (듀얼 쿼리)
- 임베딩 생성 및 L2 정규화
- 쿼리 확장 시스템
- Milvus 카테고리 Top5 추출
- 도메인 화이트리스트 구현
- 시즌 보정 시스템 구현
- 혼합검색 100개 후보 수집
- 비율 기반 할당 시스템
- 카테고리별 50개 후보 풀
- 금지어 기반 후처리
- LLM 최종 선택 시스템
- Top3-5 카테고리 확정
- BM25+벡터 하이브리드 검색
- RRF/MMR 구현
- 고정 쿼터 기반 선택
- 결과 병합 (메인 20 + 예비 30)
- 중복 제거 시스템
- 부족분 보충 로직
- 로깅 시스템
- 캐시 시스템 (1-5분)
- 병렬 수집 구현
- 폴백 시스템
- 설정 외부화
- Python 3.8.20
- Milvus 벡터 데이터베이스
- OpenAI GPT API
- Redis 캐시
ngrok은 내 로컬 서버(로컬호스트)를 외부에서 접근할 수 있도록 해주는 터널링 서비스입니다. 사설 네트워크 내부에서도 외부에서 접속이 가능합니다.
# 서버 빌드
docker build -t fb-chatbot:v3.01 .
# 컨테이너 실행
docker run -d --env-file .env -p 8011:8011 --name fb_chatbot_container fb-chatbot:v3.01
# 로그 모니터링
docker logs -f fb_chatbot_container