오늘은 LLM에 대해서 간단히 알아보고 문제점을 극복하기 위한 방법 중 RAG 기법에 대해 간단히 알아보도록 하겠습니다.
LLM의 문제점과 RAG에 대해서
LLM의 문제점
LLM은 거대 언어 모델의 약자로 이제는 모르시는 분이 많이 없을 것 같습니다.
많은 양의 언어 데이터를 학습하여 사람과 자연어로 대화할 수 있고 코드 생성, 번역 등 다양한 목적에 맞게 활용할 수 있는 도구입니다.
대표적으로 ChatGPT와 같은 모델이 있고 2023년 ChatGPT 등장 후 많은 변화가 일어나고 있는데요.
실제로 써보신 분들은 아시겠지만 몇 가지 문제점들이 있긴 합니다. 아무리 AI가 발전하고 학습을 잘했다고 하더라도 실제로는 한계점들이 있습니다. 기본적으로 학습된 데이터를 바탕으로 다음에 올 내용을 예측하는 것이기 때문에 학습하지 못한 정보에 대해서는 정확하게 답변하기 어려울 수 있습니다. 정리하자면 대표적으로 아래 2가지 문제점이 있습니다.
할루시네이션 - 정확하지 않은 정보를 정확한 것 처럼 출력해 주는 현상
랜덤성 - 답변할 때마다 같은 질문을 해도 원하는 답변이 다르게 나오는 경우가 많은 현상
RAG 란?
RAG(Retrieval-Augmented Generation)는 대규모 언어 모델의 출력을 최적화하여 응답을 생성하기 전에 학습 데이터 소스 외부의 신뢰할 수 있는 지식 베이스를 참조하도록 하는 프로세스입니다. 대규모 언어 모델(LLM)은 방대한 양의 데이터를 기반으로 학습되며 수십억 개의 매개 변수를 사용하여 질문에 대한 답변, 언어 번역, 문장 완성과 같은 작업에 대한 독창적인 결과를 생성합니다. RAG는 이미 강력한 LLM의 기능을 특정 도메인이나 조직의 내부 지식 기반으로 확장하므로 모델을 다시 교육할 필요가 없습니다. 이는 LLM 결과를 개선하여 다양한 상황에서 관련성, 정확성 및 유용성을 유지하기 위한 비용 효율적인 접근 방식입니다.
출처 : RAG란? - 검색 증강 생성 AI 설명 - AWS
RAG는 기존의 LLM 모델의 문제점들을 극복하기 위한 방법 중의 하나로 활용될 수 있는 기법입니다.
모델을 학습하기 보다는 전처리를 통해 정확도와 성능을 높일 수 있는 방법입니다.
최근에 이 방법을 활용하여 비용 효율적으로 사용하는 것 많이 화두가 되고 있습니다.
RAG 작동 방식
- 검색 단계
- 질문 임베딩:
- 사용자의 질문(예: "3월의 이벤트를 알려줘")을 임베딩합니다. 이는 자연어로 된 질문을 수치적 벡터로 표현하는 과정입니다. - 유사성 검색:
- Vector DB에서 질문과 데이터 문서의 유사성을 검색합니다.
- 유사성에 따라 정렬된 문서 조각(청크 ID) 목록을 생성합니다. - 관련도 순위 결정:
- 가장 관련성 높은 데이터의 순위를 재조정하는 과정입니다.
- 이 과정을 통해 관련도 순으로 검색 결과를 재정렬합니다.
- 메타데이터 필터링을 통해 사용자 쿼리에 맞는 특정 정보(예: 특정 이름, 키워드, 날짜)를 매치하고, 관련 없는 정보를 제외합니다.
- 생성 단계
- 추론:
- Vector DB에서 관련 문서 조각을 가져옵니다.
- 검색된 내용과 초기 사용자 질문을 바탕으로 최종 프롬프트를 구성합니다. - 프롬프트 엔지니어링:
- 언어 모델이 검색된 정보를 기반으로 사용자 질문에 적절하게 답변할 수 있도록 합니다.
- 예를 들어, 특정 정보가 없는 경우 "이 사례에 대한 정보가 없습니다"라고 답변하는 것이 포함될 수 있습니다. - 텍스트 응답 생성:
- 생성된 텍스트가 문법적으로 정확하고 일관성 있는지 확인하는 후처리 과정을 거칠 수 있습니다.
RAG 와 Fine tuning의 차이
[표 1] RAG와 파인튜닝 비교 (출처: Skelter Labs, 재구성: 이글루코퍼레이션)
fine tuning은 특정 작업에 대한 성능을 높일 수 있고 구체적인 태스크에 대해 일관된 품질을 제공하는 장점이 있습니다.
하지만 많은 양의 학습 데이터가 필요하고 학습 데이터 이외에 질문에 대해 할루시네이션을 피하기는 어렵습니다.
반면에 RAG는 외부 지식을 추가해서 정확도와 신뢰도를 높일 수 있는 방법이고 추가 학습이 필요하지 않습니다.
다만 검색된 정보의 품질에 의존하고 검색하는 자원을 추가로 사용해야 하는 단점이 있습니다.
결론
결론적으로 기존의 LLM 모델을 그대로 사용했을 때 발생하는 문제점들을 개선하기 위해 모델 자체를 지속적으로 개선하는 방법과는 별개로 기존의 모델을 활용하여 RAG라는 전처리 과정을 추가하여 성능을 개선하는 것입니다. 개념을 이해하고 RAG를 쉽게 해 볼 수 있는 Langchain과 같은 도구를 학습하고 사용해 보면서 개념을 익히면 도움이 될 것 같습니다.
참고
Skelter Labs Blog - 2024 Year Of The RAG :: RAG가 주목 받는 이유와 미래 동향
'개발 > 개발 공통' 카테고리의 다른 글
[LLM] LangChain, RAG를 위한 유용한 프레임워크 (0) | 2024.11.21 |
---|---|
[LLM] ChatGPT와 프롬프트 엔지니어링 (1) | 2024.11.20 |
[데이터베이스] SQL과 NoSQL의 차이에 대해서 (1) | 2024.11.18 |
[자격증] ISTQB CTFL 공부 기간, 합격 후기 (4) | 2024.10.31 |
[Design Pattern] Composite 패턴 (0) | 2024.02.23 |