AIㆍML

“환각 없이 믿을 수 있는 LLM” 검색 증강 생성(RAG)의 이해

Martin Heller | InfoWorld 2024.01.24
검색 증강 생성(Retrieval-augmented generation, RAG)은 특정 데이터 소스를 사용해 대규모 언어 모델(LLM)의 "근거"를 갖추는 데 사용되는 기법이다. 대부분의 경우 모델의 원래 학습에는 포함되지 않았던 소스를 이용한다. RAG의 3가지 단계로 구성된다. 지정된 소스에서 검색하기, 소스에서 검색한 컨텍스트로 프롬프트 증강하기, 그리고 모델과 증강된 프롬프트를 사용하여 생성하기다.
 
ⓒ Getty Image Bank

필자는 도그푸딩(dogfooding) 중에 검색 증강 생성 구현 중 하나인 브라우즈(Browse) 플러그인을 사용해 GPT-4 대규모 언어 모델에 "검색 증강 생성이란 무엇인가?"라고 질문했다. 답변 재생성을 요청한 이후 최종적인 GPT-4의 답변은 다음과 같았다. 
 
------------------
 
  • 검색 증강 생성(RAG)은 자연어 처리(NLP) 분야에 중대한 영향을 미치는 AI 프레임워크로, 언어 모델이 생산하는 콘텐츠의 정확성과 풍성함을 개선하도록 설계되었습니다. 다양한 출처에 있는 RAG에 관한 요점을 모으면 다음과 같습니다. 
  • RAG는 외부 지식 기반에서 사실을 검색해서 대규모 언어 모델(LLM)을 위한 근거를 제공하는 시스템입니다. 이 근거는 LLM에 의해 생성되는 정보가 정확한 최신 데이터에 기반하도록 보장합니다. LLM이 종종 비일관적인 결과를 생성할 수 있음을 고려할 때 특히 중요한 기능입니다. [5† 출처] 
  • 이 프레임워크는 검색 모델과 생성 모델을 통합한 하이브리드 모델로 작동합니다. RAG는 이 통합을 통해 문맥상 정확하면서 풍부한 정보를 담은 텍스트를 생산할 수 있습니다. RAG는 광범위한 정보 데이터베이스를 활용할 수 있으므로 생성 프로세스에 맥락에 맞고 세부적인 콘텐츠를 제공할 수 있습니다. [6† 출처] 
  • RAG는 기반 언어 모델의 한계를 극복합니다. 일반적으로 기반 언어 모델은 오프라인에서 광범위한 말뭉치로 학습되는데, 학습 이후에는 새로운 정보로 업데이트되지 않아 특정 분야 지식이 필요한 작업에서 효과가 떨어집니다. 반면 RAG는 최신 데이터에 액세스할 수 있으므로 적응력이 더 높고 분야별 애플리케이션에서 우수한 성능을 낼 수 있습니다. [7† 출처] 
  • RAG는 전통적인 텍스트 생성 모델과의 비교에서 상당한 우위를 나타냈고 많은 NLP 작업에서 최첨단의 성능을 달성했습니다. 검색된 정보로 생성 프로세스를 증강하는 기능을 갖춘 RAG는 고품질의 정보 텍스트를 생성하기 위한 강력한 도구가 됩니다. [8† 소스] 
  • 텍스트를 검색하고 생성하는 RAG의 복합적인 기능은 NLP에서 혁신적인 도구가 되어 언어 모델 출력의 관련성과 품질을 향상시킵니다.

------------------
 
몇 가지 과장된 부분만 제외하면 준수한 답변이다. 다만 RAG의 뿌리가 페이스북(현 메타) AI 리서치라는 사실은 답변 내용에 없었다. 필자는 강화되지 않은 LLM에 최신 정보가 부족한 경우, 특히 기본 LLM이 길을 벗어나 사실을 직접 만들어내는 '환각'이 발생하는 상황에서 RAG를 통해 상당히 좋은 결과를 얻었다. 단, LLM이 RAG를 사용하면서도 환각을 일으키는 경우도 있었다. 또한, 외부 정보 소스 사용(RAG의 R, 즉 검색 부분)은 웹 검색이 전부가 아니다. 예를 들어 필자의 LLM이 사용하도록 자체 문서를 제공하거나, LLM에 특정 웹 문서를 가리킬 수도 있다.
 

LLM 환각과 제한된 컨텍스트의 문제

LLM 학습은 값비싼 리소스를 사용해 오랜 시간 실행되는 경우가 많다. 엔비디아 H100과 같은 최첨단 서버 GPU 수십 개를 사용해 몇 개월 동안 실행하기도 하므로 매번 새롭게 다시 학습시키는 방법으로 LLM을 완전히 최신 상태로 유지하는 방법은 현실성이 없다. 오히려 새로운 데이터로 기본 모델을 미세 조정하는, 비용이 덜 드는 방법이 도움이 될 수 있다. 

그러나 미세 조정에도 종종 단점이 있다. 예를 들어 코드 라마(Code Llama)에 추가된 코드 생성 등 미세 조정을 통해 새 기능을 추가할 때 기본 모델에 있는 기능이 축소될 수 있다. 즉, 라마에서 잘 처리되는 범용적인 쿼리에 문제가 생길 수 있다.

2022년까지의 데이터로 학습된 LLM에 2023년에 일어난 일에 대해 질문하면 어떻게 될까? 가능성은 2가지다. LLM은 자신이 모른다는 것을 인식할 수도 있고 인식하지 못할 수도 있다. 전자의 경우 일반적으로 답변에서 학습 데이터에 대해 이야기한다. 예를 들어 "최신 업데이트 날짜는 2022년 1월이므로 그 사안에 대해서는 정보를 갖고 있지 않습니다"와 같은 식이다. 후자의 경우 비슷하지만 관련성은 없는 오래된 데이터를 근거로 답변하거나, 뭔가를 만들어낼 수도 있다. 즉 '환각'이다.

프롬프트에 이벤트의 날짜나 관련 웹 URL을 언급하면 LLM의 환각을 방지하는 데 도움이 된다. 또한 관련 문서를 제공할 수도 있지만, 텍스트로 제공하든 URL을 입력하든 긴 문서는 LLM의 컨텍스트 제한 범위 내에서만 작동하며, 제한에 도달하면 읽기가 중단된다. 컨텍스트 제한은 모델마다 다르다. 두 개의 클로드(Claude) 모델은 10만 토큰 컨텍스트 윈도우를 제공하는데 이는 대부분의 다른 LLM에 비해 훨씬 더 높은 약 7만 5,000단어에 해당한다. 
 

해법은 사실에 근거한 LLM 

이 문제의 해법은 검색 증강 생성이다. 간단히 말해 RAG는 인터넷 또는 문서 검색을 언어 모델과 결합하는 방식으로 작동하며, 이를 통해 두 가지 단계를 수동으로 실행할 때 발생하는 문제, 예를 들어 검색에서 얻은 결과가 언어 모델의 컨텍스트 제한을 초과하는 등의 문제를 피할 수 있다. 

RAG의 첫 번째 단계는 인터넷이나 문서 또는 데이터베이스 검색을 위한 쿼리를 사용하고 소스 정보를 고밀도 다차원 형태로 벡터화하는 것이다. 이를 위해 일반적으로 임베딩 벡터를 생성해 벡터 데이터베이스에 저장하는 방법을 사용한다. 이것이 검색 단계다. 

그런 다음 쿼리 자체를 벡터화하고, 벡터 데이터베이스를 대상으로 FAISS 또는 기타 유사성 검색을 사용해(일반적으로 유사성에 대한 코사인 메트릭 사용) 소스 정보에서 가장 관련성이 높은 부분 또는 상위 K 항목을 추출해서 LLM에 쿼리 텍스트와 함께 제공한다. 이것이 증강 단계다. 마지막으로, LLM(원래의 페이스북 AI 문서에 사용된 이름은 seq2seq 모델)이 답을 생성한다. 이것이 생성 단계다. 

복잡해 보이지만 오케스트레이션에 랭체인(LangChain) 프레임워크를 사용할 경우 다음과 같이 파이썬 5줄 정도면 되는 과정이다.
 
from langchain.document_loaders import WebBaseLoader
from langchain.indexes import VectorstoreIndexCreator
loader = WebBaseLoader("https://www.promptingguide.ai/techniques/rag")
index = VectorstoreIndexCreator().from_loaders([loader])
index.query("What is RAG?")

이렇게 해서 RAG는 대규모 언어 모델의 두 가지 문제, 즉 오래된 학습 데이터 집합과 LLM의 컨텍스트 윈도우를 초과하는 참조 문서 문제를 해결한다. 최신 정보 검색, 벡터화, 벡터 유사성 검색을 사용한 정보 증강, 그리고 생성형 AI를 결합함으로써 검색 또는 생성형 AI만 사용할 때보다 더 최신이며 간결하고 근거에 기반한 결과를 얻을 수 있다. 
editor@itworld.co.kr
 Tags RAG 환각 AI
Sponsored

회사명 : 한국IDG | 제호: ITWorld | 주소 : 서울시 중구 세종대로 23, 4층 우)04512
| 등록번호 : 서울 아00743 등록발행일자 : 2009년 01월 19일

발행인 : 박형미 | 편집인 : 박재곤 | 청소년보호책임자 : 한정규
| 사업자 등록번호 : 214-87-22467 Tel : 02-558-6950

Copyright © 2024 International Data Group. All rights reserved.