RAG(검색 증강 생성)는 데이터베이스와 같은 기존 정보 검색 시스템의 강점과 생성형 대규모 언어 모델(LLM)의 기능을 결합한 AI 프레임워크입니다. AI는 이러한 추가 지식과 자체 언어 기술을 결합하여 사용자의 특정 니즈에 맞는 보다 정확하고 최신 상태의 텍스트를 작성할 수 있습니다.
검색 증강 생성은 어떻게 작동하나요?
RAG는 생성형 AI 출력 향상에 도움이 되는 몇 가지 주요 단계로 작동합니다.
- 검색 및 사전 처리: RAG는 강력한 검색 알고리즘을 활용하여 웹페이지, 기술 자료, 데이터베이스와 같은 외부 데이터를 쿼리합니다. 검색된 관련 정보는 토큰화, 어간 추출, 금지어 제거 등의 사전 처리 과정을 거칩니다.
- 생성: 사전 처리된 검색 정보가 선행 학습된 LLM에 원활하게 통합됩니다. 이러한 통합을 통해 LLM의 컨텍스트가 강화되어 주제를 보다 포괄적으로 이해할 수 있습니다. LLM은 이러한 증강된 컨텍스트를 통해 보다 정확하고 유익하며 몰입도 높은 대답을 생성할 수 있습니다.
RAG는 먼저 LLM에 의해 생성된 쿼리를 사용해 데이터베이스에서 관련 정보를 검색하는 방식으로 작동합니다. 이렇게 검색된 정보는 LLM의 쿼리 입력에 통합되어 더 정확하고 상황에 맞는 텍스트를 생성할 수 있습니다. RAG는 효율적인 검색 및 조회가 가능하도록 데이터를 저장하는 벡터 데이터베이스를 활용합니다.
RAG를 사용하는 이유
RAG는 특히 사실에 기반한 정보 또는 데이터 기반 응답을 다룰 때 기존 텍스트 생성 방법에 비해 여러 가지 이점을 제공합니다. RAG를 사용하는 것이 유익한 몇 가지 주요 이유는 다음과 같습니다.
업데이트된 정보에 액세스
기존 LLM은 선행 학습된 지식과 데이터로 한정되는 경우가 많습니다. 이로 인해 응답이 오래되거나 부정확할 수 있습니다. RAG는 LLM에 외부 정보 소스에 대한 액세스 권한을 부여하여 정확한 최신 답변을 보장함으로써 이를 극복합니다.
사실 그라운딩
LLM은 창의적이고 흥미로운 텍스트를 생성하는 강력한 도구이지만 사실에 기반한 정확성에서 어려움을 겪을 수 있습니다. 이는 LLM이 부정확한 정보나 편향을 포함할 수 있는 방대한 양의 텍스트 데이터를 학습하기 때문입니다.
RAG는 LLM에게 엄선된 기술 자료에 대한 액세스 권한을 제공하고 생성된 텍스트가 사실에 기반한 정보에 그라운딩되었는지 확인함으로써 이 문제를 해결하는 데 도움을 줍니다. 따라서 RAG는 뉴스 보도, 과학 저술 또는 고객 서비스와 같이 정확성이 가장 중요한 애플리케이션에 특히 유용합니다.
참고: RAG는 최종 사용자에게 할루시네이션이 전송되는 것을 방지하는 데도 도움이 될 수 있습니다. LLM은 학습이 완료되지 않은 경우에도 때때로 솔루션을 생성할 수 있지만 RAG 기법은 사용자 환경을 개선하는 데 도움이 됩니다.
컨텍스트 관련성
RAG의 검색 메커니즘은 입력 쿼리 또는 컨텍스트와 관련 있는 정보가 검색되도록 보장합니다.
RAG는 LLM에 상황에 맞는 정보를 제공함으로써 모델이 특정 컨텍스트에 더 일관성 있고 더 적절한 대답을 생성할 수 있도록 지원합니다.
이러한 상황별 그라운딩은 관련이 없거나 주제에서 벗어난 대답이 생성되지 않도록 하는 데 도움이 됩니다.
사실의 일관성
RAG는 LLM이 검색된 사실 정보와 일치하는 대답을 생성하도록 합니다.
RAG는 검색된 지식에 따라 생성 프로세스를 조절하여 생성된 텍스트의 모순과 불일치를 최소화하는 데 도움이 됩니다.
이렇게 하면 사실의 일관성을 유지하고 잘못되거나 오해의 소지가 있는 정보를 생성할 가능성을 줄일 수 있습니다.
벡터 데이터베이스 활용
RAG는 벡터 데이터베이스를 활용하여 관련 문서를 효율적으로 검색합니다. 벡터 데이터베이스는 문서를 고차원 공간에 벡터로 저장하므로 시맨틱 유사성을 기반으로 빠르고 정확하게 검색할 수 있습니다.
향상된 대답 정확도
RAG는 상황에 맞는 정보를 제공하여 LLM을 보완합니다. 그러면 LLM은 이 정보를 사용하여 보다 일관되고 유익하며 정확한 응답(멀티모달 대답 포함)을 생성할 수 있습니다.
RAG 및 챗봇
RAG를 챗봇 시스템에 통합하여 대화 능력을 향상시킬 수 있습니다. RAG 기반 챗봇이 외부 정보에 액세스하면 외부 지식을 활용해 보다 포괄적이고 유익하며 상황에 맞는 대답을 제공하여 전반적인 사용자 경험을 개선할 수 있습니다.
1. RAG 란?
* 사전적 의미와 프로세스
RAG(Retrieval-Augmented Generation)는 대규모 언어 모델의 출력을 최적화하여 응답을 생성하기 전에 학습 데이터 소스 외부의 신뢰할 수 있는 지식 베이스를 참조하도록 하는 프로세스입니다.
프로세스 내에서는 의도분류, 데이터 정합성판단, 환각현상 판단, 답변생성의 과정도 포함되어있습니다.
1-2. 종류
1-2-1. Adaptive RAG
Adaptive RAG 는 사용자의 질문이 사용자가 가지고있는 데이터베이스의 정보와 연관성을 판단하여 검색어를 확장합니다. 연관성이 없을경우 검색엔진을 활용한 응답으로 넘어갑니다. 이는 검색엔진 뿐만 아니라 추가적인 데이터 수집 방법을 활용할 수 있습니다.
1-2-2. Corrective RAG (CRAG)
CRAG 는 Retrieval 된 검색어를 채점하는 RAG입니다. 채점시에 질문과 확장된 질문이 연관성이 없다면 쿼리를 재생성하고 검색엔진에 넣어 응답을 생성합니다.
1-2-3. Self_RAG
Self_RAG 는 질문을 증강하여 채점후 연관성이 없으면 질문을 다시 생성하여 연관성이 있을때까지 반복합니다.
1-3. 핵심 로직
RAG의 핵심 로직은 반복 쿼리 로직입니다. RAG 공식 문서에서는 langgraph의 StateGraph 를 활용하여 workflow를 생성합니다.
from langgraph.graph import END, StateGraph
workflow = StateGraph(GraphState)
# 노드 정의
workflow.add_node("web_search", web_search) # 검색엔진
workflow.add_node("retrieve", retrieve) # retrieve # 검색증강
workflow.add_node("grade_documents", grade_documents) # 검증
workflow.add_node("generate", generate) # Generate
workflow.add_node("transform_query", transform_query) # 질문 변형, 재생성
...
2. 사용성
2-1. 실시간 학습 불가
현재 파라미터수가 엄청나게 거대해진 LLM 모델들이 데이터를 한건한건 실시간으로 학습하는것은 불가능 하다고 볼 수 있습니다. GPT-4o는 2023년 4월까지 의 데이터를 학습했으며 그 이후의 데이터는 알지 못합니다. 여러 새로운 문화와 지식이 급증하는 시기에 1년 이상의 지식차이는 아주 뒤떨어지는것으로 볼 수 있으며 이를 해결하기 위하여 프롬프트에 현재 데이터를 함께 넘겨주는 방법을 사용하기 시작했습니다. 이를 정형화하는 과정 중 RAG 방법론이 탄생했습니다.
2-2. Hallucination, 생성내용에 대한 피드백
실시간 학습이 불가하기에 LLM은 학습하지 않은 데이터에 대한 질문은 없는 지식을 새로 창조하거나 현실적이지 않은 말도 안되는 결과물로 답을 했습니다. 이는 정확한 정보를 요구하는 사용자에게는 아주 쓸모없는 인공지능이 될 것입니다. RAG 방법론에서는 자체적으로 LLM이 생성한 결과물이 현실적인지를 검증합니다.
'인공지능 > 인공지능' 카테고리의 다른 글
랭체인과 LLM에 대해 (0) | 2024.06.16 |
---|---|
Deep Learning Framework 종류 (0) | 2021.05.17 |
CNN(Convolutional Neural Network) 알고리즘 (0) | 2021.05.17 |
Backbone(백본)에 대해 (0) | 2021.05.17 |
Object Detection on COCO test-dev(COCO test-dev Benchmark Object Detection) (0) | 2020.09.15 |