LLM 기반 AI 플랫폼 개발에서의 LangChain을 활용한 RAG 구성하기

 

안녕하세요 DevOps실 구동민님이 작성해 주신 ‘LLM 기반 AI 플랫폼 개발에서의 LangChain을 활용한 RAG 구성 방법’에 대해 알아보겠습니다. LLM 기반 AI 플랫폼 개발 과정에서, LangChain을 활용해 RAG를 구성하고, AI Agent를 생성하는 과정에서 고민했던 내용들과, 구현 과정에 대해 잘 설명이 되어있으니 끝까지 봐주시면 감사하겠습니다:)

목차

  • RAG란 무엇인가?
  • LangChain을 활용한 RAG 구성에서의 과제
  • 대규모 데이터 처리
  • Vector DB 의 통합
  • PreProcessing 및 PostProcessing을 통한 보안성과 효율성 강화
  • 마무리하며

  1.  

  1.  

  1.  

  1.  

  1.  

1. RAG란 무엇인가?

RAG(Retrieval-Augmented Generation) 는 LLM이 가진 정보의 한계를 극복하기 위해 설계된 기술입니다.

베스핀글로벌-RAG

 

RAG의 전체 흐름에 대한 설명을 덧붙이면,

    • 사용자가 업로드한 문서가 Embedding 모델을 통해 벡터화를 통해 문서의 내용과 의미가 수치화 됩니다.

    • 벡터화가 된 데이터는 Vector DB 에 저장됩니다. 이때 유사도를 계산하여 관련 문서를 빠르게 검색할 수 있도록 설계된 Vector DB에 데이터들이 담깁니다.

    • 사용자가 질문을 입력하면 질문이 Embedding 모델을 통해 벡터화 됩니다. 해당 벡터화된 값은 이후 검색 과정에서 사용됩니다.

    • 벡터화 된 질문은 Vector DB내의 데이터들과 비교 되어 가장 관련성이 높은 데이터가 검색됩니다. 이 검색 과정은 Semantic Search 로, 단순한 키워드 매칭이 아니라 문서의 의미와 질문의 의미를 비교하여 검색합니다.

    • 관련성이 높은 문서들로 평가된 데이터들을 LLM 모델로 전달됩니다. 다양한 Foundation 모델들을 활용해 검색된 문서를 기반으로 사용자의 질문에 대한 응답을 생성합니다.

 

2. LangChain을 활용한 RAG 구성에서의 과제

RAG를 구성하는 과정에서 성능, 효율성, 보안성을 높이기 위한 다음과 같이 고려해야 하는 내용이 있었습니다.

    • 대규모 데이터 처리: S3와 같은 스토리지에 저장된 대규모 데이터를 어떻게 효율적으로 임베딩할 것인가

    • Vector DB 통합 : 다양한 특성의 Vector DB들을 어떻게 통합해서 사용할 것인가

    • 보안성 강화: 민감한 정보가 포함된 문서의 보안성을 어떻게 높일 것인가

 

3. 대규모 데이터 처리

    • 문서를 로드한 후 Chunking 작업 및 임베딩

Chunking 은 텍스트 데이터를 작은 청크로 나누는 과정입니다. Chunking 작업은 긴 문서를 처리하기 위한 필수 단계로, 각 청크가 독립적으로 의미를 가지면서도 전체 문맥을 손실하지 않도록 하는 것이 중요합니다. 저희는 CharacterTextSplitter와 같은 텍스트 분할 도구를 사용해 Chunking 작업을 진행했습니다.

 

Chunking 작업이 끝난 후에 embedding 모델을 사용해 나누어진 Chunk 들을 벡터화 한 후 Vector DB에 넣는 방식으로 진행하였습니다.

 

4. Vector DB 통합

임베딩된 벡터들을 Vector DB로 저장할 때 각 Vector DB의 특성에 맞게 데이터를 처리하는 것이 중요합니다.

Faiss, Chroma, Pinecone 등 다양한 Vector DB 들은 연결 및 구현 방식이 달라 분기 처리를 한후 각각의 Vector DB 별로 최적화된 접근 방식을 적용했습니다.

이를 위해 LangChain의 다양한 컴포넌트를 활용하여 각 DB의 고유한 기능을 최대한 활용했습니다.

 

5. PreProcessing 및 PostProcessing을 통한 보안성과 효율성 강화

RAG 과정에서 업로드된 문서의 응답 보안을 강화하기 위해 PreProcessing과 PostProcessing을 도입했습니다. 

Processing 과정을 통해 민감한 정보를 보호하고, 데이터 처리의 효율성을 높일 수 있었습니다.

주요 이슈

    • 민감 정보 보호: 문서에 포함된 개인식별 정보를 보호하고, 이를 처리하는 과정에서 발생할 수 있는 보안 위협을 어떻게 최소화할 것인가

    • 응답 보안 강화: 문서 응답의 보안성을 유지하며, 불필요한 데이터 노출 방지를 어떻게 할까

 

해결 방법

    • PII Masking: 민감한 정보를 보호하기 위해 Processing 단계에서 PII 마스킹을 적용했습니다. 주요 대상 정보로는 이메일, 전화번호, 신용카드 정보, 은행 계좌 정보 등이 있으며, 데이터 값들이 마스킹되어 외부 유출을 방지할 수 있습니다.

    • Normalization: 데이터의 일관성을 유지하기 위해 Normalization을 수행했습니다. 주요 작업으로는 공백 제거, 숫자 제거, 대소문자 변환, URL 제거 등이 포함됩니다. 이를 통해 데이터의 품질을 높이고, 처리 효율성을 높일 수 있었습니다.

 

6. 마무리하며

오늘은 LLM 기반 AI 플랫폼 개발 과정에서 LangChain을 활용해 RAG를 구성하고, AI Agent를 생성하는 과정에서 겪었던 고민들과 구현 과정을 다뤄보았습니다. 

LLM, LangChain, RAG, Vector DB과 같은 기술들은 다양한 산업에서 혁신적인 AI솔루션을 제공하는 데 필수적인 요소로 자리잡고 있습니다.

향후에는 RAG 성능을 높이기 위해 실시간 데이터 업데이트를 지원하는 기능, 민감 정보 보호와 응답 생성의 신뢰성을 더욱 높이는 등 기술적 도전을 통해 더욱 효과적이고 강력한 AI 솔루션을 제공할 수 있도록 노력할 것입니다.

읽는 분들께 조금이나마 도움이 되기를 바라며, 이만 글을 마치겠습니다. 긴글 읽어주셔서 감사합니다.

 

AI 플랫폼 튜토리얼 영상 링크

베스핀글로벌-테크블로그-작성자

Written by 구 동민 / Dongmin Koo

Data Engineer