Adaptive RAG

Summary
- 한계점 1. 검색이 필요하지 않은 발화의 경우, 의미 없는 검색결과를 기반으로 답변을 생성
- 해결방안: LLM을 활용하여 사용자의 요청을 처리하기 위해, 검색이 필요한지 체크하는 로직 추가
- 고도화 1: 검색 필요 여부 판단 정확도를 높이기 위해, 검색 결과를 포함하여 해당 검색 결과의 필요 여부를 판단하도록 로직 변경
- 고도화 2: 검색/답변 결과의 유효성을 판단하는 로직을 추가하여 답변의 퀄리티 향상
- 고도화 3: 추가 LLM으로 인한 소요시간 증가를 완화시키기 위해, SLM 혹은 finetuned encoder 사용

 


 

가장 기본적인 RAG의 구조는 사용자의 질문과 관련된 문서를 프롬프트에 넣고 답변을 생성하는 방식입니다.

 

Image from https://python.langchain.com/docs/tutorials/rag/

 

이러한 기본 구조에선, "안녕"과 같이 검색이 필요하지 않은 사용자의 발화가 들어왔을 때도 검색을 수행하여 오히려 답변의 품질이 떨어지는 문제가 발생합니다.

이를 해결하기 위해, 사용자의 발화/요청을 처리하기 위해 검색이 필요한지 검사하는 로직이 사용될 수 있습니다.
해당 로직을 LangGraph를 활용하여 구현하면 다음과 같은 그래프를 볼 수 있습니다.

 

프롬프트 없이 간단히 대화기록을 입력받아 검색이 필요하다고 판단될 경우 검색을 수행하고 그렇지 않으면 답변을 생성하는 로직입니다. 충분해 보이지만, 다음과 같은 예제에선 만족스럽지 못한 결과가 나타날 수 있습니다.

Human: LangChain에서 LLM을 작동시킬 때 사용하는 메서드가 뭐야?
AI(오답): `__call__()` 을 사용합니다.
AI(정답): `invoke()` 를 사용합니다.

 

__call__() 메서드는 과거에 사용되었던 메서드로 현재는 deprecated 되어 사용이 권장되지 않습니다.

즉, LLM이 학습한 데이터(parametric knowledge)학습하지 않은 데이터(non-parametric knowledge) 모두에 정답이 존재하는 경우 오로지 LLM의 학습 데이터와 tuning 능력에 의존해야 하는 상황이 발생하게 됩니다.

가령, 예제와 같이 데이터의 생성 시기와 관련된 경우 배경에 대한 이해가 필요하기 때문에 더더욱 쉽지 않은 문제가 되죠.

 

결국 이를 근본적으로 해결하기 위해선, LLM의 판단을 무조건 따르기보다 사용자 발화와 관련된 외부 데이터를 먼저 가져오고 이를 바탕으로 사용자의 발화를 심도 깊게 분석하는 과정이 필요합니다.

해결하고자 하는 작업/도메인에 특화된 프롬프트와 해당 로직을 결합시킨다면 할루시네이션을 막고 답변의 퀄리티를 높이는 데 큰 도움이 될 수 있습니다.

 

더 나아가 검색 결과가 사용자의 질의와 관련이 있는지, 그리고 답변에서 할루시네이션이 발생하였는지 등을 체크하는 self-reflection 후처리 로직이 추가되면 일반적으로 많이 사용되는 Agentic RAG ㅡ Adaptive-RAG가 완성됩니다.

 

Workflow for Adaptive RAG. Image from LangGraph

 

LangGraph로 구현하면 다음과 같은 그래프를 볼 수 있습니다.

 

Workflow for Adaptive RAG (modified)

 

 

한편, 서비스에서 빼놓을 수 없는 것이 바로 latency, 답변 소요 시간입니다.

LLM 호출이 추가되기 때문에 그만큼 더 많은 시간이 소요됩니다.

답변의 퀄리티와 속도, 리소스 간의 trade-off를 고려할 여지가 있다면, SLM 혹은 finetuned encoder를 사용하는 것도 좋은 생각입니다.

가령, 답변 생성은 gpt-5, 상대적으로 간단한 로직에서는 gpt-5-mini를 사용하는 것도 좋은 시작점이 될 수 있겠죠?

 


 

이번 글에서는 간단한 질의를 처리하고, 할루시네이션을 억제할 수 있는 Adaptive RAG를 알아보았습니다.

그런데 이 RAG agent는 다음과 같이 문서에 대한 추리를 필요로 하는 질의에 잘 대답할 수 있을까요?

Example generated questions from GraphRAG(https://arxiv.org/pdf/2404.16130)

 

다음 주제는 문서를 포괄적으로 이해하고 이에 대한 답변을 줄 수 있는 graph 기반의 RAG, GraphRAG입니다.

핵심 아이디어를 기반으로 다양한 방향으로 발전해 온 알고리즘인 만큼 많은 인사이트를 얻으실 수 있을 겁니다!

'Engineering > RAG' 카테고리의 다른 글

EraRAG  (0) 2025.08.22
LightRAG  (0) 2025.08.21
GraphRAG  (0) 2025.08.20
Retrieval Augmented Generation (RAG)  (0) 2025.08.19