Question Answering을 위한 LLM Agent 서베이
A Survey of Large Language Model Agents for Question Answering
TL;DR Highlight
RAG, 툴 사용, 멀티턴 대화까지 — LLM 기반 QA 에이전트의 전체 설계 패턴을 한 논문에서 정리했다.
Who Should Read
LLM 기반 QA 시스템이나 RAG 파이프라인을 설계·운영 중인 백엔드/AI 개발자. 특히 검색, 플래닝, 답변 생성 각 단계에서 어떤 기법을 써야 할지 고민 중인 팀.
Core Mechanics
- LLM Agent QA는 Planning → Question Understanding → Information Retrieval → Answer Generation → Follow-up Interaction 5단계로 구조화할 수 있음
- Planning은 프롬프트 기반(ReAct, Active Retriever)과 파인튜닝 기반(FireAct, Learning from Failure)으로 나뉘는데, 실패 궤적도 학습에 쓰면 성능이 더 좋아짐
- Query Expansion 기법(HyQE, Step-back reformulation)으로 유저 쿼리를 부풀려서 검색 정확도를 높일 수 있고, 이건 코드 몇 줄로 RAG에 바로 적용 가능
- Self-RAG처럼 LLM이 검색 문서의 유용성을 스스로 평가해서 '내 지식으로 답할지, 외부 문서를 쓸지' 동적으로 결정하는 방식이 트렌드
- LLMLingua 같은 프롬프트 압축 기법으로 긴 retrieved 문서를 줄이면서 핵심 정보는 보존하는 게 토큰 비용 절감에 효과적
- 현재 주요 미해결 과제는 Hallucination 감소, 자율적인 툴 선택/생성, CoT 추론 과정 자체를 평가하는 벤치마크 부재
Evidence
- MMLU(50개 이상 분야), GSM8k, MATH, HotpotQA, FinQA 등 다양한 벤치마크를 단계별로 분류해 어떤 기법이 어떤 데이터셋에 유효한지 매핑 제공
- Self-RAG는 기존 RAG 대비 검색 문서의 관련성 + 최종 답변 기여도를 동시에 평가하는 구조로, 단순 retrieval 대비 노이즈 문서 필터링에서 개선 보고
- FireAct는 GPT-4가 생성한 action trajectory로 소형 모델을 파인튜닝해 multi-hop QA 태스크에서 플래닝 능력 향상을 달성
- LLMLingua는 coarse-to-fine 2단계 압축으로 프롬프트 길이를 대폭 줄이면서 모델 성능 유지를 보고 (구체적 수치는 원 논문 참조)
How to Apply
- RAG 파이프라인에 Query Expansion을 추가하는 경우: 유저 쿼리를 그대로 검색하지 말고, LLM에게 '이 질문과 관련된 가상 문서 3개를 생성해줘(HyQE 방식)' 또는 '이 질문을 더 상위 개념으로 바꿔줘(Step-back)' 프롬프트를 추가하면 검색 리콜이 올라간다.
- 검색 후 랭킹 단계에서 LLM을 re-ranker로 쓰는 경우: BM25나 dense retrieval로 top-20을 뽑은 뒤, LLM에게 각 문서의 관련성 점수를 매기게 하면(Haystack 방식) 최종 top-3의 품질이 개선된다.
- 수치 계산이 필요한 QA(금융, 수학)를 처리하는 경우: 답을 직접 생성하지 말고 Program-of-Thought(PoT) 방식으로 Python 코드를 생성 → 실행 → 결과를 답변에 반영하는 흐름으로 바꾸면 계산 오류가 줄어든다.
Code Example
# Step-back Query Reformulation 예시 (RAG 파이프라인에 바로 적용 가능)
import openai
def stepback_query(original_query: str) -> str:
prompt = f"""당신은 검색 쿼리를 개선하는 전문가입니다.
아래의 구체적인 질문을 더 일반적이고 광범위한 개념 질문으로 바꿔주세요.
이렇게 하면 더 많은 관련 문서를 검색할 수 있습니다.
원래 질문: {original_query}
더 일반적인 질문 (1개만, 질문만 출력):"""
response = openai.chat.completions.create(
model="gpt-4o-mini",
messages=[{"role": "user", "content": prompt}],
temperature=0
)
return response.choices[0].message.content.strip()
def hyqe_expansion(original_query: str, n: int = 3) -> list[str]:
"""HyQE: 가상 문서를 생성해 쿼리 확장"""
prompt = f"""다음 질문에 답할 수 있는 가상의 문서 단락을 {n}개 작성해주세요.
각 단락은 실제 문서처럼 작성하고, 번호를 붙여 구분해주세요.
질문: {original_query}"""
response = openai.chat.completions.create(
model="gpt-4o-mini",
messages=[{"role": "user", "content": prompt}],
temperature=0.7
)
raw = response.choices[0].message.content
# 가상 문서들을 벡터 임베딩해서 실제 검색에 활용
return [doc.strip() for doc in raw.split('\n\n') if doc.strip()]
# ReAct 스타일 플래닝 프롬프트 템플릿
REACT_PROMPT = """
당신은 질문에 답하기 위해 단계적으로 생각하고 행동하는 에이전트입니다.
사용 가능한 도구:
- search(query): 웹/DB에서 정보 검색
- calculate(expression): 수식 계산
- finish(answer): 최종 답변 제출
형식:
Thought: 현재 상황을 분석하고 다음 행동을 결정
Action: 도구명(인자)
Observation: 도구 실행 결과
(Thought/Action/Observation을 반복)
Thought: 최종 답변 준비 완료
Action: finish(최종 답변)
질문: {question}
Thought:"""
# 사용 예시
if __name__ == "__main__":
query = "Estella Leopold가 1954년 8월부터 11월 사이에 다닌 학교는?"
stepback = stepback_query(query)
print(f"Step-back 쿼리: {stepback}")
# 출력 예: "Estella Leopold의 교육 이력은?"
hypothetical_docs = hyqe_expansion(query)
print(f"가상 문서 수: {len(hypothetical_docs)}개")
# 이 문서들을 임베딩해서 실제 문서 검색에 활용Terminology
Original Abstract (Expand)
This paper surveys the development of large language model (LLM)-based agents for question answering (QA). Traditional agents face significant limitations, including substantial data requirements and difficulty in generalizing to new environments. LLM-based agents address these challenges by leveraging LLMs as their core reasoning engine. These agents achieve superior QA results compared to traditional QA pipelines and naive LLM QA systems by enabling interaction with external environments. We systematically review the design of LLM agents in the context of QA tasks, organizing our discussion across key stages: planning, question understanding, information retrieval, and answer generation. Additionally, this paper identifies ongoing challenges and explores future research directions to enhance the performance of LLM agent QA systems.