네이버 검색에서 LLM의 활용(LLM으로 학습 데이터를 만드는 사례)
1. 검색
검색은 탐색형과 정보성으로 나뉜다.
"캠핑"과 같은 검색은 구체적인 정보 취득보다는 탐색을 목적으로 검색하고, 발생 빈도가 높다
이런 검색은 개인화를 고려해서 캠핑 장비 등 검색 의도 단위로 문서 reranking이 이루어진다
반면, "19개월 잠만자요"같은 검색은 영유아가 잠만 자는 문제에 대한 구체적인 정보를 원하는 질문으로
다양하고 발생 빈도가 낮아 롱테일 질의라고 부른다.
이런 질의는 인기글이나 지식인 등 출처를 기준으로 나뉜 컬렉션 단위 랭킹이 이루어진다.
네이버 검색에는
"19개월 잠만자요"
"신차구매시 기존 자동차보험 어떻게 해야하나요"
"세입자가 안들어왔다고 돈을 안주는"
"80대 요관암 말기 암 항암치료"
의도가 아주 세밀하나, 사용자들이 자주 검색하지는 않는 다양한 롱테일 질의가 존재하고, 이런 질의에 대한 랭킹 성늘을 올리고자 시도하였다
2. LLM을 활용한 문서의 reranking
문서의 순위를 매기는데는 1) 검색된 문서들의 전체 순위를 결정
2) 질의마다 각 문서의 연관성 여부를 개별적으로 판단하는 방식
LLM을 사용하여 문서를 reranking할때 검색 트래픽 처리 측면에서 비용이 높고 관리가 어렵다는 한계가 있다
그래서 LLM을 랭커로 직접 사용하는 대신에, 양질의 정답 데이터셋 생성에 활용하고
정확한 랭킹만 매기면 되므로, 크고 느린 LLM 대신에 sLLM으로 랭커를 구축하고,
최종적으로는 롱테일 질의에 대한 랭킹에 특화된 모델로 지식 증류를 수행
3. 데이터셋을 어떻게 만드는가
대규모 언어 모델인 하이퍼클로바X를 활용하여 정답 데이터셋을 구축
질문을 주면 기존 보유한 retriever로 연관된 문서를 수집하고, 기본적인 성능을 보유한 랭커가 미리 연관성 랭킹을 매겨
상위 10개와 하위 10개를 필터링
이렇게 선별된 20개의 문서를 하이퍼클로바X가 연관성 랭킹을 매긴다
이후 BERT와 GPT에 따라 다른 스타일의 학습 방법으로 학습후 모델을 개발하여
성능이 향상했다..
4. 연관성만으로는 해결하기 어려운 문제
"트래블러스 챔피언십 우승자"라는 질의는 사용자 의도를 볼 때 최신 2024년도 우승자를 원하는 것일텐데
단순히 연관성만 보면 2017년 우승자나 2023년 우승자도 적절한 검색 결과이다
그러므로 검색 결과 문서를 랭킹하는 과정에는 단순히 연관성 뿐만 아니라 최신성도 반영해줘야한다
모델이 질의와 문서의 연관성을 0과 1 사이의 점수로 예측하고, 이를 활용하여 연관도가 높은 문서들 사이에 최신성을 고려해 순위를 결정
문서1, 문서2가 모두 연관도가 높다면 더 최신 문서인 문서2를 상위에 배치하는 것이 바람직하다.
반면 문서3이 문서2와 최신성이 동일해도, 연관도가 낮다면 순위를 높이지 않는 것이 중요하다
만약 연관도 점수를 잘 산출할 수 있다면, 애초에 최신성은 문서에 기록되어 있을테니까..
5. 데이터를 어떻게 만드는가
이전에 질의와 문서간 랭킹 데이터셋을 만든 것처럼, 질의와 문서간 연관성 점수를 LLM을 통해 생성
기존 연관성 랭킹 모델이 서비스 중이기 때문에, 이 모델로 만든 검색 결과와 관련된 사용자의 클릭 로그를 활용하여,
사용자의 클릭 경향과 가장 유사한 레이블을 생성하는 프롬프트를 선택
사용자 피드백이 있는데 바로 학습데이터에 사용하지 않은 이유도 공개
롱테일 질의는 발생 빈도가 낮기 때문에, 실제로 질의와 연관성이 높더라도 사용자가 클릭하지 않은 경우가 많이 존재
기타, 유저 피드백 데이터에서 상위 노출을 위한 비정상적인 클릭이 많은 경우 등등을 고려하여 정제함
여기서 프롬프트라는건 이런 의미인듯
LLM에 프롬프트랑 질의, 문서들 인풋을 주고 아웃풋으로 문서들의 연관성 점수와 랭킹을 생성하라는 프롬프트를 고르는 작업
여기서 사용자 행동과 유사한 경향을 보이는 좋은 프롬프트를 찾으면, 그러한 프롬프트로 연관성 점수를 레이블링할 수 있고
이를 데이터로 만들어 연관성 점수를 매기는 모델의 학습에 활용하겠다는 의미인듯
6. 최신성을 반영
이렇게 찾은 프롬프트랑, 가지고 있는 질의 문서 데이터를 바탕으로 학습해서 만든 모델의 출력 점수는
문서와 질의간 연관도 점수이고, 이를 활용해서 최신성을 실제 랭킹에 어떻게 반영하는가?
단순히 빠르면 빠르다 그렇게가 아니라, 여러가지를 고려해서 수식을 만들었음
age에 따라 recency의 변별력이 달라짐
모델이 예측한 연관성 점수가 특정 임계값을 넘어가면, 최신성 점수와 연관성 점수의 가중합으로 계산하고
연관성 점수가 임계값을 넘어가지 않으면 페널티를 부여해서 연관도가 낮은 최신 문서가 상위에 배치되는 것을 방지
score = recency_weight * recency + (1-recency_weight)*llm
llm_score < threshold:
score *= penalty
여기서 recency weight와 threshold를 결정하기 위해 LLM을 활용하여 하이퍼파라미터 튜닝을 했다고함
이렇게 선택한 하이퍼파라미터를 시작점으로 잡고, 이후 테스트를 통해 지표를 바탕으로 지속적인 튜닝을 한다고함
https://d2.naver.com/helloworld/0556679
https://d2.naver.com/helloworld/6482000
LLM을 직접 활용하기보다는 데이터셋을 만들어서 목적에 특화된 성능 좋고 가벼운 모델을 서비스에 활용하는?
'AI 논문 > AI trend research' 카테고리의 다른 글
Don't Do RAG: When Cache-Augmented Generation is All You Need for Knowledge Tasks (0) | 2025.01.14 |
---|---|
AI 경량화 - 더 빠르고 저렴한 AI 서비스를 위해(NAVER 강의) (0) | 2025.01.06 |
MobileCLIP: Fast Image-Text Models through Multi-Modal Reinforced Training (0) | 2025.01.02 |
Dataset Decomposition: Faster LLM Training with Variable Sequence Length Curriculum (0) | 2024.12.31 |
딥마인드의 AlphaDev, 새로운 정렬 알고리즘을 발견하다 (0) | 2023.06.15 |