논문 리뷰
[EMNLP 2023] Active Retrieval Augmented Generation / FLARE
공부하는묵
2025. 5. 13. 01:03
1. Introduction
- RAG 방법론은 retrieve-and-generate 과정을 통해 LLM의 hallucination을 제거할 수 있다
- short-form 생성에는 효과적으로 작동하지만, long-form 생성에는 잘 작동하지 않는다
- 이는 생성 과정 중간에 추가적인 검색 과정을 통해 새로운 외부지식을 넣어줌으로써 해결할 수 있다
- 본 논문에서는 LM이 생성하려는 문장을 통해 LM이 생성하려는 문장이 얼마나 confidence를 가지고 있는지 알아내고, 이를 통해 추가 검색을 수행할 지 말지 결정하는 FLARE 방법론을 제안한다
2. Retrieval Augmented Generation (RAG)
2.1 Single-time Retrieval Augmented Generation
- 전체 문서 Corpus D와 사용자 질의 q가 주어졌을 때, 검색기를 통해 관련 문서 D_q를 뽑는다. (Retrieve)
- 관련 문서와 사용자 질의를 LLM에 입력하여 응답 y를 생성하도록 한다. (Generate)
2.2 Active Retrieval Augmented Generation
- 본 논문에서 제안하는 방식으로, 언제 검색이 필요할지 파악해서 검색하는 방식
- t번째 스텝에서, 사용자 질의 q_t는 사용자 입력 x와 이전 스텝까지의 생성 결과 y_<t를 통해 생성
- q_t를 이용하여 검색기를 통해 t_번째 스텝에서 연관된 문서들을 찾아내고, 다시 최종 응답을 생성
3. FLARE: Forward-Looking Active REtrieval Augmented Generation
- LM이 답변을 생성할 때, 외부지식이 필요하다고 판단될 때에만 검색을 할 필요성이 존재
- 현재까지 생성된 문장이 아닌, 이후에 생성될 문장의 생성에 도움이 되는 질의를 생성해야할 필요성 존재
- q_t를 생성하는 방식은 FLARE_instruct / FLARE_direct 2가지 제안
3.1 FLARE with Retrieval Instructions (FLARE_instruct)
- LLM에게 검색이 필요할 때, search queries를 생성해달라는 지시문과 특정 task에 맞게 생성해달라는 지시문을 입력
- LLM이 [Search(query)] 형식으로 생성하는 경우 query가 질의가 된다
3.2 Direct FLARE (FLARE_direct)
3.2.1 Confidence-based Active Retrieval
- 일단, 임시로 다음 문장을 생성
- 생성된 토큰들에 대해서 생성 확률이 낮다는 것은 LLM이 그만큼 low-confidence라는 것
- 만일 모든 토큰의 생성 확률이 threshold 이상이라면, 그대로 응답으로 사용
- 그렇지 않다면 생성된 문장을 바탕으로 질의 생성 및 검색 진행
3.2.2 Masked sentences as implicit queries
- 생성된 문장에서 확률이 낮았던 토큰을 마스킹하고, 질의로 사용하는 방법
3.2.2 Generated questions as explicit queries
- 생성된 문장에서 확률이 낮았던 토큰을 마스킹하고, 마스킹된 문장에 대한 질의를 LLM이 생성하도록 하는 방법
4. Experimental Setup
4.1 Multi-time Retrieval Baselines
- Previous-window: 이전 l개의 토큰을 이용하여 검색 진행
- Previous-sentence: 이전 문장을 이용하여 검색 진행
- Question decomposition: 주어진 질의를 몇가지 sub-question으로 잘라서 진행, LLM에 지시문을 입력하여 진행
4.2 Task / Datasets
- MultihopQA / 2WikiMultihopQA Dataset
- Commonsense reasoning / StrategyQA dataset
- Long-form QA / ASQA dataset
- Open-domain summarization / WikiAsp
4.3 Results
- FLARE는 모든 데이터셋에서 베이스라인보다 좋은 성능을 보였음
- 하지만, ASQA, WikiASp에서는 낮은 성능 향상을 보였는데, 이는 open-ended라는 특성이 LLM에게 더 높은 난도를 만들었을 것으로 추정
- 이미 생성된 문장과 문장을 임시로 생성하고 그것을 쿼리로 사용했을 때의 성능 차이
- 생성 문장을 쿼리로 사용했을 때, 성능이 더 좋을 것을 보아, 생성 문장을 토대로 질의를 생성하는 것이 더 낫다는 것을 알 수 있다
- 이미 생성된 문장을 쿼리로 사용하는 경우, 그 토큰의 갯수를 달리하며 진행한 실험
- 토큰의 길이가 길어질 수록 오히려 성능의 하락이 있는 것으로 보아, 불필요한 정보는 오히려 안좋은 쿼리를 만들게 되어 생성에 악영향을 줄 수 있다.
- 생성 시, 검색 과정이 포함된 생성의 비율에 따른 성능 평가
- 생성 비율이 높아지더라도 어느 정도 범위에서 수렴
- LM이 확신을 가지고 생성했다면, 검색은 불필요한 과정일 수 있다