논문명: Active Retrieval Augmented Generation
논문링크: https://arxiv.org/abs/2305.06983
아이디어만 정리합니다.
핵심 아이디어
- LLM에게 프롬프트로 검색기를 사용할 수 있게 해서
- 인간처럼 잘 모르겠으면 검색해서 생성할 수 있는 방법론을 제시하자
아래 그림은 검색 스킬을 알려주는 프롬프트다.
아래 그림은 조 바이든 대통령이 어떤 대학교를 나왔는지 불확실하자, 언어모델이 [Search(Joe Biden University)] 라는 쿼리를 만들었다. 저렇게 특수한 형태로 검색 요청이 들어온 경우, Retriever 를 통해 관련 문서를 찾아 생성할 때 함께 입력으로 넣는다.
그렇다면, 언제 검색을 해야 하고, 어떻게 관련 문서를 찾을까? 답은 아래 그림에 있다.
- 언제 검색하는가: 모델이 생성할 때, 확률이 일정 threshold 보다 낮으면 해당 문구가 불확실하다고 간주한다
- 위 그림에선 펜실베니아 대학교인지 아닌지 확실하지 않다. 그래서 확률이 낮은 경우를 밑줄을 쳐놨다.
- 어떻게 검색하는가: 검색은 결국 검색어(query)를 날려야 한다. 쿼리는 크게 2가지로 나뉜다.
- implicit query: 자신 없는 문구가 있는 문장에서, 자신 없는 부분을 제외하고 쿼리로 사용한다
- explicit query: 자신 없는 문구가 있는 문장을 바탕으로 거대 모델에게 부탁하여 질문형태로 바꾼 다음 검색한다
이 모든 과정을 전체적으로 표현한 그림이 아래에 있다
- 실제 인간이 글을 쓰는 과정과 유사하다
- 조 바이든에 대한 글을 쓰다가, 불확실하면 검색해서 찾아보고 다시 쓰고. 그리고 다음 문장 쓰고. 또 애매하면 검색하고. 인간이 글을 작성하는 과정과 닮아있다. 물론 속도는 인간을 압도한다.
이제 논문 제목이 이해가 된다
- Active Retrieval: 모르면 바로 검색기를 돌려서 관련 문서를 찾아온다
- Augmented Generation: 관련 문서가 생성 과정을 돕는다