본문 바로가기

스타트업 투자/데이터 + 테크

패스트캠퍼스 환급챌린지 10일차 : RAG

by Sungwook Choi 2025. 4. 10.

본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성하였습니다.

*_1. 학습 인증샷 4장 이상 포함
*_① 오늘자 날짜, 공부 시작 시각 포함 사진 1장

② 오늘자 날짜, 공부 종료 시각 포함 사진 1장

③ 1개 클립 수강 인증 사진 (강의장 목록 캡쳐, 강의 내용이 담긴 수강화면이 보이지 않도록) 1장

④ 학습 인증샷 1장 이상 (ex. 필기 촬영, 작업물, 등)

2. 학습 후기 700자 이상 (공백 제외)

임베딩

  • 텍스트를 AI를 이용해 숫자, 특히 벡터(Vector)로 변환하는 것
  • 텍스트를 ‘임베딩 모델’이라는 AI를 활용하여 벡터로 변환함

임베딩 모델

  1. 다운로드를 하여 사용하는 것
    • 보안이슈나 파인튜닝을 해야하는 경우 이점이 있음
  2. API로 유료로 사용하는 것

임베딩을 하는 이유

  • 텍스트를 임베딩하고 나면 텍스트끼리의 유사도를 구하는 것이 가능함
  • 즉, ‘검색기’를 만들 수 있음

벡터의 유사도

  • 대표적으로 유사도를 계산할 수 있는 방법
    • 코사인 유사도
    • 내적
    • L2거리

RAG

  • R (Retrieval) : 검색
  • A (Augmented) : 증강되었다
  • G (Generation) : 생성한다.
  • RAG : 검색으로 증강된 답변을 생성한다. 즉, LLM의 지식에 외부의 지식을 추가하여 답변하는 것
  • 검색된 내용을 바탕으로 ‘답변’하므로 내 데이터만을 이용하여 답변하는 챗봇을 구현가능
  • 챗봇이 거짓말하는 현상인 ‘할루시네이션’을 급감시킬 수 있는 효과
  • 임베딩을 이용하여 검색기를 구현한다는 것은 기존 문서들의 임베딩을 보관할 장소가 필요함

벡터 데이터베이스

  • 밀버스는 은근 장애가 많다
  • 수천, 수억 단위의 문서를 백업, 재배치, 재저장을 빈번하게 하는 상황에서는 Qdrant가 가장 안정적, 10만에서 1000만 이내의 문서라면 Qdrant 추천
  • Chroma와 Pinecone은 튜토리얼 용으로 많이 사용됨
  • 프로덕션에서는 FAISS가 많이 사용됨. 수억~수십억이라면 FAISS 추천

청킹 (Chunking)

  • 매우 긴 문서를 적절한 검색 단위로 나누는 것
  • 검색했을 때의 단위가 되며, 일반적으로 임베딩으로 검색기를 구현하다면, 각각이 임베딩 단위가 되어 적재됨

길이 단위 Chunking

  • 최대 길이를 지정해놓고, 해당 길이에 맞게 자르는 방식
  • 문맥을 보고 자르는 것이 아니라, 길이 단위로 자르므로 잘려진 문서 각각은 문맥이 중간에 끊길 수 있음
  • 단순해서 가장 많이 쓰이는 방법이기도 하지만, 검색 성능 저하가 발생할 수 있다는 단점이 있음

시맨틱 Chunking

  • 문맥을 읽고 적절한 단위로 직접자르는 경우
  • 사람이 하는 경우도 있지만, AI를 사용하기도 함
  • 예를 들어, LLM이 하는 경우, 문맥이 끊기는 구간을 LLM이 판단하여 잘라주는 경우에 해당되며, LLM 사용 비용이 발생하지만, 길이 단위로 자르는 경우에 비해서 검색 성능에서 유리함

LLM Based Chunker

  • 프롬프트 엔지니어링의 영역
  • 사람이 자르는 것과 비슷한 효과를 내기 위해서, LLM 자체를 Chunking에 사용하는 전략
  • 좋은 성능의 LLM 모델과 프롬프트 엔지니어링으로 구현

Fine-tuned Model Based Chunker

  • NLP엔지니어라면 BERT, T5, 소형 LLM같은 모델로부터 이어지는 두 개의 문장 내지 문단을 주고 이어지는 문장, 이어지지 않는 문장인지 판단하도록 학습한 후, 일종의 임계값으로 조절하면 꽤 뛰어난 Chunker로 동작함 (BERT의 Next Sentence Prediction의 고도화)
  • Langchain의 임베딩을 이용한 Semantic Chunker보다 훨씬 잘 동작

합성 데이터 생성 방식

  • 복잡한 문서를 LLM에게 다수의 문서로 재작성해달라고 요청
  • 이 후 이 문서들을 애초에 검색 문서로 지정
  • 자르는 게 아니라 재생성하는 것에 목적을 두고 있음
  • 이를 수행해주는 LLM 성능이 매우 좋아야 하며, 각 검색문서가 완결성을 가질 수 있다는 특징이 있음

url : https://abit.ly/lisbva

댓글