1. RAG(검색 증강 생성)의 필요성 및 개념 [1]

thumbnail

RAG는 LLM의 한계인 환각 현상과 최신 정보 부족 문제를 해결하고, 모델 재학습 없이 비용 효율적으로 LLM의 정확도를 높이는 기술이다.

1.1. RAG의 정의 및 중요성 [1]

  1. RAG(Retrieval Augmented Generation)는 생성형 AI 및 에이전트 AI 분야에서 중요한 기술이다. [1]
    1. RAG는 대규모 언어 모델(LLM)의 출력을 최적화하는 과정으로, 응답 생성 전에 훈련 데이터셋 외부의 신뢰할 수 있는 지식 기반을 참조한다. [11]
    2. LLM은 방대한 데이터로 훈련되며 질문 답변, 번역, 문장 완성 등 다양한 작업을 위해 수십억 개의 매개변수를 사용하여 독창적인 출력을 생성한다. [14]
    3. RAG는 모델을 재훈련할 필요 없이 LLM의 강력한 기능을 특정 도메인이나 조직의 내부 지식 기반으로 확장한다. [15]
    4. 이는 LLM 출력을 관련성 있고 정확하며 유용하게 개선하는 비용 효율적인 접근 방식이다. [16]
  2. 현재 많은 기업들이 RAG 애플리케이션 구축 전문가를 찾고 있다. [5]
    1. 다양한 AI 엔지니어링 보고서에 따르면, 많은 기업 프로젝트의 60~70%가 RAG 애플리케이션에 집중되어 있다. [5]

1.2. 기존 LLM 사용의 단점 [21]

  1. LLM의 환각 현상 (Hallucination) [29]
    1. LLM은 특정 시점까지의 데이터로 훈련되므로, 훈련 이후의 최신 정보에 대해서는 알지 못한다. [30]
    2. 예를 들어, 8월 1일까지의 데이터로 훈련된 LLM은 8월 1일에서 31일 사이에 발생한 사건에 대한 질문에 대해 환각 현상을 보인다. [34]
    3. 환각 현상은 LLM이 지식이 없어도 바보처럼 보이지 않기 위해 자체적으로 답변을 생성하는 것을 의미하며, 이 답변은 매우 설득력 있게 작성될 수 있다. [36]
  2. 모델 재훈련의 비효율성 및 높은 비용 [41]
    1. 스타트업의 정책, HR, 재무 정책 등 내부 데이터를 LLM에 활용하고 싶을 때, 이 데이터는 공개적으로 접근할 수 없다. [42]
    2. 이러한 데이터를 LLM에 적용하는 한 가지 방법은 모델을 미세 조정(fine-tuning)하는 것이다. [47]
    3. 하지만 LLM은 수십억 개의 매개변수를 가지고 있어, 미세 조정은 매우 비용이 많이 들고 번거로운 과정이다. [48]
    4. 또한, 스타트업의 정책과 데이터는 계속 업데이트되므로, 매번 모델을 미세 조정하는 것은 현실적으로 불가능하다. [50]

2. RAG의 작동 방식: 데이터 주입 및 검색 파이프라인 [52]

thumbnail

RAG는 외부 지식 기반을 활용하여 LLM의 출력을 최적화하며, 이를 위해 데이터 주입 파이프라인과 검색 파이프라인이라는 두 가지 핵심 단계를 거친다.

2.1. RAG의 핵심 원리 [52]

  1. RAG는 LLM의 출력을 최적화하기 위해 훈련 데이터 외부의 신뢰할 수 있는 지식 기반을 참조한다. [58]
    1. RAG는 기존 LLM의 단점인 환각 현상과 최신 정보 부족 문제를 해결한다. [61]

2.2. 데이터 주입 파이프라인 (Data Injection Pipeline) [62]

  1. 외부 데이터베이스 구축 및 데이터 처리 과정 [62]
    1. LLM은 이미 방대한 데이터로 훈련되어 있지만, RAG는 여기에 외부 데이터베이스(벡터 데이터베이스)를 추가로 활용한다. [67]
    2. 스타트업의 정책, HR, 재무 등 추가적인 데이터는 데이터 주입 파이프라인을 통해 처리된다. [70]
  2. 데이터 주입 파이프라인의 단계 [71]
    1. 데이터 파싱 (Data Parsing) [71]
      1. 데이터는 PDF, HTML, Excel, SQL 데이터베이스 등 다양한 형식일 수 있다. [73]
      2. 데이터 파싱은 이러한 정형/비정형 데이터를 읽고, 청크(chunk) 단위로 나누는 중요한 단계이다. [75]
      3. 청크는 데이터를 벡터 스토어에 저장하기 위해 데이터를 작은 단위로 분할하는 것을 의미한다. [79]
    2. 임베딩 (Embeddings) [71]
      1. 청크로 분할된 데이터는 임베딩 모델을 통해 벡터(vectors)로 변환된다. [81]
      2. 벡터는 텍스트의 수치적 표현으로, 유사성 검색(similarity search)과 같은 알고리즘을 적용하여 특정 쿼리에 기반한 유사한 결과를 데이터베이스에서 검색할 수 있게 한다. [81]
      3. 임베딩 모델로는 Google Gemini, OpenAI, Hugging Face 모델 등이 있으며, 비용과 성능에 따라 다양한 오픈소스 모델도 활용할 수 있다. [87]
    3. 벡터 스토어 (Vector Store) [71]
      1. 임베딩된 벡터는 벡터 스토어(또는 벡터 DB)에 저장된다. [71]
      2. 이 벡터 스토어는 LLM이 훈련된 지식 기반과는 별개의 외부 지식 기반 역할을 한다. [91]

2.3. 검색 파이프라인 (Retrieval Pipeline) [94]

  1. 사용자 쿼리 처리 과정 [94]
    1. 사용자가 쿼리를 입력하면, 이 쿼리는 LLM으로 직접 가는 대신 벡터 데이터베이스로 전달된다. [94]
    2. 쿼리 또한 임베딩 모델을 통해 벡터로 변환되어 벡터 DB에 저장된 벡터들과 유사성 검색을 수행한다. [95]
    3. 유사성 검색을 통해 벡터 DB에서 관련 정보(컨텍스트)를 검색한다. [95]
    4. 검색된 컨텍스트는 특정 프롬프트와 함께 LLM에 전달된다. [96]
    5. 프롬프트는 LLM에게 "이 컨텍스트를 사용하여 질문에 답변하라"는 지시를 내리며, LLM은 이를 바탕으로 최종 출력을 생성한다. [97]
  2. RAG의 구성 요소 [128]
    1. Retrieval (검색): 벡터 DB에서 관련 정보를 검색하는 단계이다. [128]
    2. Augmentation (증강): 검색된 컨텍스트를 프롬프트와 함께 LLM에 제공하여 출력을 생성하도록 돕는 단계이다. [128]
    3. Generation (생성): LLM이 최종 출력을 생성하는 단계이다. [129]
  3. 전통적인 RAG의 예시: Perplexity [105]
    1. Perplexity는 RAG 기반으로 개발된 애플리케이션으로, 다양한 검색기, 도구, 웹 검색에 연결되어 LLM을 통해 출력을 요약하고 제공한다. [105]

3. 향후 학습 내용 및 구현 계획 [118]

thumbnail

이 시리즈에서는 RAG의 데이터 주입 및 검색 파이프라인을 코딩으로 구현하며, 다양한 파일 형식 처리, 임베딩 모델 활용, 최적화 전략 등을 다룰 예정이다.

3.1. 구현할 주요 파이프라인 [121]

  1. 데이터 주입 파이프라인 (Data Injection Pipeline) [123]
    1. 데이터 주입 및 파싱: PDF, HTML, Excel, SQL 데이터베이스 등 다양한 파일 형식의 데이터를 처리한다. [135]
    2. 임베딩 수행: 오픈소스 및 유료 임베딩 모델을 모두 사용하여 텍스트를 벡터로 변환한다. [140]
    3. 벡터 스토어에 저장: 변환된 벡터를 벡터 스토어에 저장한다. [126]
  2. 검색 파이프라인 (Retrieval Pipeline) [127]
    1. 사용자 쿼리에 대한 임베딩 적용: 사용자 쿼리에도 동일한 임베딩을 적용한다. [143]
    2. 컨텍스트 검색 및 LLM 전달: 벡터 스토어에서 관련 컨텍스트를 검색하여 LLM에 전달한다. [127]
    3. 출력 생성: LLM이 최종 출력을 생성한다. [127]

3.2. 데이터 파싱 및 최적화 전략 [146]

  1. 데이터 파싱 시 고려할 사항 [146]
    1. 최적화: 데이터 파싱 과정의 효율성을 높이는 방법을 다룬다. [147]
    2. 다양한 청킹 전략: 데이터를 효과적으로 분할하는 다양한 청킹 전략을 학습한다. [147]
    3. 컨텍스트 엔지니어링: LLM에 전달될 컨텍스트를 최적화하는 방법을 다룬다. [147]
    4. 시맨틱 청커: 의미론적 청킹과 같은 고급 청킹 기법을 논의한다. [148]