[플레이데이터 SK네트웍스 Family AI 캠프 6기] 12주차 회고 (12/09~12/13)

2024. 12. 16. 14:32AI

RAG 기술 학습 회고

최근 RAG (Retrieval-Augmented Generation) 기술을 학습하며 얻은 주요 내용을 블로그 형식으로 정리해 보았습니다. RAG는 특정 문서에 기반하여 정확한 답변을 생성하는 기술로, 최신 데이터를 빠르게 전달하거나, 정밀한 정보 검색을 필요로 하는 애플리케이션에서 강력한 도구로 활용됩니다.


주요 학습 내용

1. RAG 개요

  • RAG는 정보를 검색(Retrieval) 한 뒤, 이를 바탕으로 생성(Generation) 작업을 수행합니다.
  • 핵심은 좋은 embedding 모델효율적인 문서 분할 및 저장 방식입니다.
  • Multilingual-e5-large와 같은 모델은 다양한 언어의 의미적 유사성을 잘 포착하며, 질문과 유사한 벡터를 효과적으로 찾아냅니다.

2. Embedding 모델과 Vector Store

  • RAG의 성능은 embedding 모델의 품질에 크게 좌우됩니다.
  • Pinecone Vectorstore를 활용하면 대규모 데이터를 빠르게 검색할 수 있으며, 영속적인 데이터 저장이 필요할 경우 SQLite를 활용할 수 있습니다.

3. 문서 전처리와 분할

  • Document Split과 Text Split:
    • 분석 대상 문서를 적절히 나누는 작업은 효율성을 결정짓는 핵심 요소입니다.
    • chunk size는 데이터의 구분자를 기준으로 분리하며, 모델 크기에 따라 최적화해야 합니다.
  • 파일명 전처리가 중요:
    • 파일명과 구조를 체계적으로 관리하면 코딩 업무를 줄일 수 있습니다.

4. 최신 번역 기술과 DeepL 활용

  • DeepL은 텍스트 번역의 성능이 매우 우수하며, 다국어 환경에서 RAG를 테스트하거나 확장할 때 중요한 도구로 활용할 수 있습니다.

실습 진행: 소설 데이터로 RAG 구현

소설 10편을 Vector Store에 저장한 뒤, 이를 Streamlit에서 출력하는 실습을 진행했습니다. 핵심 사항은 다음과 같습니다:

  1. Streamlit 활용
    • 데이터를 시각화하거나, 간단한 UI로 모델을 테스트하기에 적합합니다.
    • cache 사용 시 내용 변경 후 초기화를 반드시 해야 함.
  2. 문서와 코드를 나누는 방법
    • RAG의 split_documentssplit_text를 통해 데이터를 효율적으로 분리.
  3. 멀티언어 처리
    • Multilingual-e5-large 모델로 언어의 차이를 뛰어넘는 검색 성능을 확인.

코딩 실습의 교훈

  • ChatGPT 활용:
    • 8할의 코드 작성2할의 이해로 진행.
    • 어떤 코드를 생성할지 고민하는 과정이 중요.
  • 코드 효율화:
    • labeling 기업의 예시처럼 반복 작업 최소화를 목표로 설계.

에이전트 학습과 에러 처리

  1. LangChain Agent
    • Tool은 LLM과 독립적으로 작동하며, 올바른 task 분리가 중요합니다.
    • 설명(Tavily)을 상세히 작성하면 디버깅과 협업이 용이합니다.
  2. 에러 추적
    • LangChain의 공식 문서를 참고하며 문제를 해결.

중요 기술 요약

  1. Multilingual-e5-large
    • 언어가 달라도 동일한 의미를 갖는 문장은 비슷한 벡터를 가지도록 학습된 모델.
    • 글로벌 애플리케이션 구축 시 핵심 도구.
  2. Pinecone Vectorstore
    • 대규모 벡터 데이터를 빠르게 처리할 수 있는 클라우드 기반 솔루션.
    • 검색 속도와 확장성이 뛰어남.
  3. DeepL 번역
    • 다국어 번역 수행 시, 특히 기술 문서를 다룰 때 강력한 성능을 발휘.
  4. Streamlit UI
    • RAG 모델 테스트 및 시각화를 간단히 구현할 수 있는 프레임워크.

 RAG는 비교적 최근에 발전하게 된 기술로써 사용될 범위가 다양함을 알 수 있다. 하지만 이에 따라 여전히 온라인 웹 상에 유의미한 정보를 계속해서 생산해 내는 활동이 유의미하다는 생각을 하게 된다. 최신 데이터까지 학습하게 되는데, 계속해서 데이터를 생산해내는 사람들이 있어야 AI가 학습을 지속해 나갈 수 있기 때문이다. 

 

 일전에 젠슨 황의 칼텍 졸업연설 때, AI factory라는 개념을 들은 적이 있다. AI factory는 AI가 학습할 수 있는 새로운 intelligent token을 AI가 스스로 생성해 낸다는 것이다. 만일, AI factory가 운용되어 사람들의 추가적인 데이터 생산 없이 새로운 개념이나 의미 있는 토큰을 AI가 생산해 내게 되면 AI의 학습데이터도 그에 따라 많아질 것이라는 생각이 든다. 

 

 그런데 무엇인가 이미지가 자신이 낳은 자식을 다시 잡아먹음으로써 자신의 학습데이터를 쌓는 기괴한 이미지가 연상되는 데 이건 무엇 때문에 이런 이미지가 떠오르는지는 모르겠다. 다만, 이렇게라도 AI 모델이 학습을 해나감으로써 사람에게 의미 있고 좋은 것을 계속해서 제공해 준다면 좋을 것이다라는 생각을 하게 된다. 

 

 AI 기술이 발전함에 따라, 그에 기반한 인프라 건설과 전기를 수송하고, 저장하고, 획기적으로 친환경적인 에너지를 생산해 내는 기업이 파이를 얻어갈 것 같다.