AI 모델 및 플랫폼

대규모 언어 모델의 검색 증강 생성(RAG) 심층 분석

Aayush Mittal
Unite.AI를 Google의 선호 소스에 추가
핵심 포인트검색 증강 생성은 실시간 외부 데이터를 가져와 LLM의 지식 차단 문제를 해결합니다.
더 보기
  • 검색 증강 생성은 실시간 외부 데이터를 가져와 LLM의 지식 차단 문제를 해결합니다.
  • RAG는 정확성을 위해 매개변수 기반 언어 모델과 비매개변수 기반 검색 엔진을 결합합니다.
  • 이 프레임워크는 학습 데이터 대신 검색된 문서에 응답을 근거하여 환각 현상을 줄입니다.

대규모 언어 모델(LLM)에 접근할 수 있는 분석가가 있다고 가정해 보겠습니다. 이 모델은 작업 흐름에 많은 잠재력을 가지고 있습니다. 그러나 최신의 주식 가격이나 현재의 인플레이션율에 대해 물어보면, 다음과 같은 대답을 받을 수 있습니다.

“죄송하지만 실시간 정보나 학습 종료 시점 이후의 데이터는 제공할 수 없습니다. 제 마지막 학습 데이터는 2022년 1월까지입니다.”

대규모 언어 모델은 언어적인 힘을 가지고 있지만, ‘지금’을 이해하는 능력이 부족합니다. 빠르게 변화하는 세계에서 ‘지금’은 모든 것입니다.

연구에 따르면, 대규모 사전 훈련 언어 모델(LLM)은 사실적인 지식의 저장소이기도 합니다. 이들은 많은 데이터를 훈련시켜 사실과 숫자를 많이 흡수했습니다. 미세 조정하면, 다양한 NLP 작업에서 놀라운 결과를 달성할 수 있습니다.

그러나 여기에는 한계가 있습니다. 모델이 저장된 지식을 접근하고 조작하는 능력은 때때로 완벽하지 않습니다. 특히 작업이 지식 집중적인 경우, 이러한 모델은 더 전문적인 아키텍처에 비해 뒤처질 수 있습니다. 모든 책이 있는 도서관을 가지고 있지만, 필요한 것을 찾는 카탈로그가 없는 것과 같습니다.

OpenAI의 ChatGPT 브라우징 업그레이드

OpenAI의 ChatGPT 브라우징 기능 발표는 검색 증강 생성(RAG) 방향으로 중요한 발전입니다. ChatGPT가 현재 및 권위 있는 정보를 인터넷에서 검색할 수 있게 되면서, RAG 접근 방식을 반영하여 동적으로 외부 데이터를 가져와서 풍부한 응답을 제공할 수 있습니다.

https://twitter.com/OpenAI/status/1707077710047216095

현재는 Plus 및 Enterprise 사용자에게만 사용할 수 있지만, OpenAI는 곧 모든 사용자에게 이 기능을 제공할 계획입니다. 사용자는 GPT-4 옵션 아래의 ‘Browse with Bing’을 선택하여 이 기능을 활성화할 수 있습니다.

ChatGPT의 새로운 브라우징 기능

ChatGPT의 새로운 ‘Bing’ 브라우징 기능

프롬프트 엔지니어링은 효과적이지만 불충분합니다

프롬프트는 LLM의 지식에 대한 게이트웨이입니다. 모델을 안내하며, 응답에 대한 방향을 제공합니다. 그러나 효과적인 프롬프트를 작성하는 것은 LLM으로부터 원하는 것을 얻는 완전한 해결책은 아닙니다. 프롬프트 작성 시 고려해야 할 좋은 관행을 살펴보겠습니다.

  1. 명확성: 잘 정의된 프롬프트는 모호성을 제거합니다. 그것은 직접적이어야 하며, 모델이 사용자의 의도를 이해할 수 있도록 해야 합니다. 이 명확성은 더 일관적이고 관련 있는 응답으로 이어집니다.
  2. 맥락: 특히 긴 입력의 경우, 지시의 위치는 출력에 영향을 줄 수 있습니다. 예를 들어, 긴 프롬프트의 끝에 지시를 이동하면 더 좋은 결과를 얻을 수 있습니다.
  3. 지시의 정밀성: “누가, 무엇, 어디, 언제, 왜, 어떻게” 프레임워크를 통해 전달되는 질문의 힘은 모델을 더 집중된 응답으로 안내할 수 있습니다. 또한 원하는 출력 형식이나 크기를 지정하면 모델의 출력을 더 세부적으로 정의할 수 있습니다.
  4. 불확실성의 처리: 모델이 불확실할 때 어떻게 응답해야 하는지에 대한 지침을 제공하는 것이 중요합니다. 예를 들어, 모델에게 불확실할 때 “모르겠습니다”라고 응답하도록 지시하면, 부정확하거나 “환각을 일으킨” 응답을 생성하는 것을 방지할 수 있습니다.
  5. 단계별 사고: 복잡한 지시에 대해서는 모델을 체계적으로 생각하거나 작업을 하위 작업으로 나누어 더 포괄적이고 정확한 출력을 생성하도록 안내할 수 있습니다.

ChatGPT를 안내하는 프롬프트의 중요성은 Unite.ai의 자세한 글에서 더 살펴볼 수 있습니다.

생성적 AI 모델의 도전

프롬프트 엔지니어링은 모델의 성능을 향상시키기 위해 모델에 주는 지시를 미세 조정하는 것을 포함합니다. 이는 생성적 AI 애플리케이션의 정확도를 향상시키는 비용 효율적인 방법이며, 단지 소규모 코드 조정이 필요합니다. 프롬프트 엔지니어링은 출력을 크게 향상시킬 수 있지만, 대규모 언어 모델(LLM)의 내재된 제한을 이해하는 것이 중요합니다. 두 가지 주요 도전은 “환각”과 “지식 단절”입니다.

  • 환각: 모델이 자신감 있게 잘못된 또는 허구의 응답을 반환하는 경우입니다. 고급 LLM에는 이러한 출력을 인식하고 피하는 내장 메커니즘이 있습니다.
LLM의 환각

LLM의 환각

  • 지식 기준 시점: 각 LLM에는 학습 종료 시점이 있으므로 그 이후의 사건이나 발전을 알지 못합니다. 예를 들어 2022년까지 학습한 모델은 2023년 사건을 알지 못합니다.
LLM의 지식 기준 시점

LLM의 지식 기준 시점

RAG는 이러한 한계에 대한 해법을 제시합니다. 모델이 외부 정보에 접근하도록 해, 조직 내부 데이터나 특정 분야의 데이터를 바탕으로 환각 문제를 줄일 수 있습니다. 학습 시점 이후의 최신 정보에도 접근해 응답을 갱신할 수 있습니다. 지식베이스, 데이터베이스, 인터넷 등 다양한 외부 소스에서 실시간으로 데이터를 가져올 수도 있습니다.

RAG 소개

검색 증강 생성(RAG)은 대규모 언어 모델이 훈련되지 않은 데이터에 접근할 수 있는 프레임워크입니다. RAG을 구현하는 방법은 여러 가지이며, 최상의 적합은 작업과 데이터의 특성에 따라 다릅니다.

RAG 프레임워크는 구조화된 방식으로 작동합니다.

프롬프트 입력

프로세스는 사용자의 입력 또는 프롬프트로 시작됩니다. 이것은 질문이나 특정 정보를 구하는 문장이 될 수 있습니다.

외부 소스에서 검색

모델은 검색기 구성 요소를 사용하여 외부 데이터 소스를 검색합니다. 이러한 소스는 지식베이스, 데이터베이스, 문서 저장소 또는 인터넷에 접근 가능한 데이터일 수 있습니다.

검색 이해

본질적으로 검색은 검색 작업입니다. 사용자의 입력에 대한 가장 관련 있는 정보를 추출하는 것입니다. 이 프로세스는 두 단계로 나눌 수 있습니다.

  1. 색인화: 이것은 검색 증강 생성의 가장 어려운 부분입니다. 지식베이스를 색인화하는 프로세스는 크게 로딩과 분할로 나뉩니다. LangChain과 같은 도구에서는 이러한 프로세스를 “로더”와 “분할기”라고 합니다. 로더는 다양한 소스에서 콘텐츠를 가져오고, 분할기는 이 콘텐츠를 검색과 임베딩을 위해 최적화된 작은 조각으로 나눕니다.
  2. 질의: 이것은 검색 용어에 따라 가장 관련 있는 지식 조각을 추출하는 것입니다.

단순한 텍스트 일치나 Google 같은 검색 엔진을 활용하는 방법도 있지만, 현대적인 RAG는 의미 검색에 의존합니다. 핵심은 임베딩입니다. LLM이 언어를 이해하는 데 임베딩은 중요합니다. 사람은 ‘아이’와 ‘어린이’가 비슷한 뜻이며 ‘빨강’과 ‘초록’이 모두 색을 뜻한다는 관계를 인지합니다. 임베딩은 이러한 의미 관계를 다루는 기반입니다.

프롬프트 보강

검색된 정보는 원래 프롬프트와 결합되어 보강된 프롬프트 또는 확장된 프롬프트를 생성합니다. 이 보강된 프롬프트는 모델에 추가적인 맥락을 제공하며, 특히 데이터가 도메인 특정적이거나 모델의 원래 훈련 코퍼스에 포함되지 않은 경우에 유용합니다.

완성 생성

보강된 프롬프트를 사용하여 모델은 완성 또는 응답을 생성합니다. 이 응답은 모델의 훈련뿐만 아니라 실시간으로 검색된 데이터를 바탕으로 구성됩니다.

검색 증강 생성

검색 증강 생성

첫 번째 RAG LLM 아키텍처

2020년에 발표된 Meta의 연구 논문 “Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks“는 이 기술에 대한 심층적인 분석을 제공합니다. 검색 증강 생성 모델은 전통적인 생성 프로세스에 외부 검색 메커니즘을 보완합니다. 이는 모델이 광대한 데이터 코퍼스에서 관련 정보를 가져와서 맥락적으로 정확한 응답을 생성할 수 있도록 합니다.

  1. 매개변수 메모리: seq2seq 같은 전통적인 언어 모델입니다. 방대한 데이터로 학습해 많은 지식을 갖습니다.
  2. 비매개변수 메모리: 검색 엔진처럼 생각할 수 있습니다. 예를 들어 Wikipedia의 밀집 벡터 색인을 신경망 검색기로 탐색합니다.

이 둘을 결합하면 정확한 모델을 만들 수 있습니다. RAG는 먼저 비매개변수 메모리에서 관련 정보를 검색한 뒤, 매개변수에 저장된 지식으로 일관된 응답을 생성합니다.

Meta의 원래 RAG 모델

Meta의 원래 RAG 모델

1. 2단계 프로세스:

RAG LLM은 2단계 프로세스로 작동합니다.

  • 검색: 모델은 먼저 큰 데이터셋에서 관련 문서나 구절을 검색합니다. 이것은 밀도 검색 메커니즘을 사용하여 수행되며, 쿼리와 문서를 연속적인 벡터 공간에 임베딩합니다. 임베딩은 유사성 점수를 계산하는 데 사용되며, 상위 순위 문서가 검색됩니다.
  • 생성: 상위 k 관련 문서를 받은 후, 초기 쿼리와 함께 시퀀스-투-시퀀스 생성기에 채널링됩니다. 이 생성기는 쿼리와 검색된 문서에서 맥락을 끌어와 최종 출력을 제작합니다.

2. 밀도 검색:

전통적인 검색 시스템은 TF-IDF 같은 희소 표현을 사용합니다. 그러나 RAG LLM은 밀도 표현을 사용하여 쿼리와 문서를 연속적인 벡터 공간에 임베딩합니다. 이것은 키워드 일치를 넘어선 의미적인 관계를 캡처하는 더 세련된 유사성 비교를 허용합니다.

3. 시퀀스-투-시퀀스 생성:

검색된 문서는 생성 모델에 대한 확장된 맥락을 제공합니다. 이 모델, 종종 트랜스포머 아키텍처를 기반으로 하며, 쿼리와 검색된 문서에서 맥락을 끌어와서 일관성 있고 맥락적으로 관련 있는 최종 출력을 생성합니다.

문서 검색

효율적인 정보 검색, 특히 큰 문서에서, 데이터는 일반적으로 벡터 데이터베이스에 저장됩니다. 각 데이터 조각 또는 문서는 임베딩 벡터를 기반으로 색인화되며, 내용의 의미적 본질을 캡처합니다. 효율적인 색인화는 입력 프롬프트에 따라 관련 정보를 빠르게 검색할 수 있도록 합니다.

벡터 데이터베이스

벡터 데이터베이스

출처: Redis

벡터 데이터베이스 또는 벡터 저장소는 벡터 데이터를 저장하고 검색하도록 설계됩니다. AI와 컴퓨터 과학에서 벡터는 다차원 공간의 점을 나타내는 숫자 목록입니다. 표 형식 데이터에 맞춰진 전통적인 데이터베이스와 달리, AI 모델의 임베딩처럼 벡터 형태가 자연스러운 데이터를 처리하는 데 적합합니다.

대표적인 예에는 Annoy, Meta의 Faiss, Milvus, Pinecone가 있습니다. 추천 시스템부터 이미지 검색까지 AI 응용을 지원합니다. AWS도 Amazon OpenSearch Service와 Amazon RDS for PostgreSQL 같은 서비스를 제공하며, 특정 용도에 맞춘 효율적인 색인과 질의를 지원합니다.

관련성을 위한 청킹

긴 문서는 의미적으로 일관된 작은 청크로 나눕니다. 이를 색인하고 필요에 따라 검색하면 프롬프트를 보강할 때 문서의 가장 관련 있는 부분을 활용할 수 있습니다.

컨텍스트 창 고려 사항

LLM의 컨텍스트 창은 한 번에 처리할 수 있는 정보의 최대량입니다. 외부 소스의 정보가 이 한도를 넘으면 창 안에 들어가는 작은 청크로 나눠야 합니다.

검색 증강 생성의 이점

검색 증강 생성을 사용하면 다음과 같은 이점이 있습니다.

  1. 향상된 정확도: 외부 데이터 소스를 활용하여 모델은 훈련 데이터뿐만 아니라 최신 정보를 반영한 응답을 생성할 수 있습니다.
  2. 지식 격차 극복: RAG는 모델의 내재된 지식 제한, 즉 훈련 컷오프 또는 도메인 특정 데이터의 부족을 효과적으로 해결합니다.
  3. 다용도성: RAG는 다양한 외부 데이터 소스, 즉 조직 내의 사설 데이터베이스 또는 공개적으로 접근 가능한 인터넷 데이터와 통합할 수 있습니다.
  4. 환각 감소: 모델은 실시간 데이터 맥락을 제공하여 사실적으로 부정확하거나 허구의 응답을 생성할 가능성을 크게 줄일 수 있습니다.
  5. 확장성: RAG LLM의 주요 이점 중 하나는 확장성입니다. 검색과 생성 프로세스를 분리함으로써, 모델은 효율적으로 대량의 데이터를 처리할 수 있으며, 이는 실제 애플리케이션에서 데이터가 풍부한 경우에 적합합니다.

도전과 고려

검색 증강 생성을 사용할 때 다음과 같은 도전과 고려할 점이 있습니다.

  • 계산 오버헤드: 2단계 프로세스는 특히 대량의 데이터를 다룰 때 계산적으로 집중적일 수 있습니다.
  • 데이터 의존성: 검색된 문서의 품질은 생성 품질에 직접적인 영향을 미칩니다. 따라서 포괄적이고 잘 관리된 검색 코퍼스를 갖는 것이 중요합니다.

결론

검색과 생성 프로세스를 통합함으로써, 검색 증강 생성은 지식 집중적인 작업에 강력한 솔루션을 제공하여, 정보에 기반한 출력과 맥락적으로 관련 있는 출력을 보장합니다.

검색 증강 생성의 실제 약속은 실제 세계 애플리케이션에 있습니다. 의료 분야에서, 최신 정보는 결정적일 수 있으며, RAG는 의료 문헌에서 정보를 추출하고 통찰력을 생성하는 능력을 제공합니다. 금융 분야에서, 시장은 분당으로 진화하며, RAG는 실시간 데이터 기반의 통찰력을 제공하여 정보에 기반한 의사 결정을 지원할 수 있습니다. 또한, 학술 및 연구 분야에서, 학자들은 RAG를 사용하여 대량의 정보 저장소를 검색하여 문헌 검토와 데이터 분석을 더 효율적으로 만들 수 있습니다.

저는 지난 5년 동안 머신러닝과 딥러닝의 매력적인 세계에 몰두해 왔습니다. 이러한 열정과 전문성을 바탕으로 AI/ML에 특히 중점을 두며 50개가 넘는 다양한 소프트웨어 엔지니어링 프로젝트에 기여했습니다. 끊임없는 호기심은 저를 자연어 처리 분야로도 이끌었으며, 앞으로 이 분야를 더 깊이 탐구하고자 합니다.