Replies: 4 comments
RAG는 무엇이고 왜 파인튜닝만으로는 부족한가?RAG ( Retrieval-Augmented Generation )LLM이 답변을 생성하기 전에 외부 지식 저장소에서 관련 문서를 검색하고 그 검색 결과를 프롬프트 컨텍스트에 넣어 답변을 생성하게 하는 방식 왜 파인튜닝만으로는 부족할까?LLM은 학습 시점에 일반 지식은 잘 다루지만 모든 최신 정보와 조직 내부 정보를 알고 있지는 않다.
-> 파인튜닝은 모델의 말투, 출력 형식, 특정 작업의 패턴이나 도메인 적응에는 유용 but, 자주 바뀌는 정보나 대량의 사내 지식 정보 등을 계속 반영하는데 부담이 크다. ( 데이터가 바뀔 때마다 학습 데이터를 준비하고 다시 학습하고 평가하고 배포해야하는 과정을 거쳐야 함) RAG의 핵심 파이프라인 3단계는 무엇인가?
1단계 Indexing : 문서를 수집하고 검색 가능한 형태로 저장하는 단계
이때 발생할 수 있는 문제
2단계 Retrieval : 사용자 질문과 관련된 문서 조각을 찾는 단계
이때 발생할 수 있는 문제
3단계 Generation : 검색된 문서를 프롬프트에 넣고 LLM이 답변을 생성하는 단계
이때 발생할 수 있는 문제
RAG에서 벡터DB 검색 품질을 높이는 방법에는 뭐가 있나?Vector DB
|
1. RAG는 무엇이고, 왜 파인튜닝만으로는 부족한가?RAG이전에 LLM과 파인튜닝이 있었습니다. 파인튜닝이란 학습이 끝난 LLM을 특정 목적에 맞게 추가로 학습시키는 것을 말합니다. 그러나 파인튜닝은 행동이나 표현 방식을 바꾸는 데는 좋지만, 바뀐 지식이 적용되지 않은 답변을 도출할 수 있다는 점과 모든 지식을 모델에 넣기 어렵다는 점에서 단점이 있습니다. 이를 해결하기 위해 등장한 것이 RAG이며, RAG는 LLM이 답변을 만들기 전에 외부 지식 검색(Retrieval)을 한 뒤에, 그걸 바탕으로 답변을 생성(Generation)하는 방식입니다. 즉 모델이 자기 기억만으로 답하는 게 아니라, 실제 존재하는 최신 문서를 근거로 답변을 생성하기에 신뢰도가 향상됩니다. 따라서 최신성이 중요한 서비스에서는 RAG가 매우 효과적이며, 실제로는 파인튜닝과 RAG를 함께 사용하는 경우가 많다고 합니다. 2. RAG의 핵심 파이프라인 3단계는 무엇인가? (+각 단계에서 발생 가능한 문제)
3. RAG에서 벡터DB 검색 품질을 높이는 방법에는 뭐가 있나?검색 대상 문서를 잘 만들고, 검색 방식을 잘 고르고, 검색 결과를 다시 다듬는 것이 핵심이다.
|
Q. RAG (Retrieval-Augmented Generation)에 대해서 자유롭게 서술해주세요.RAG는 사용자의 질문과 관련된 정보를 신뢰할 수 있는 외부 지식 저장소에서 검색한 뒤, 프롬프트와 그 내용을 LLM에 함께 제공하여 더욱 정확한 답변을 생성하도록 돕는 기술이다. 즉, 모델 파라미터 안의 학습한 지식만 사용한는 것이 아니라 필요한 정보를 외부에서 실시간으로 참조하여 활용한다. 1. RAG는 무엇이고, 왜 파인튜닝만으로는 부족한가?RAG의 동작을 단순화하면 다음과 같다.
예를 들어 사내 규정에 대해 질문하는 챗봇이 있다고 가정해 보자. 사용자가 “경조사 휴가는 며칠인가?”라고 질문하면, RAG 시스템은 먼저 사내 인사 규정에서 경조사 휴가 관련 문단을 검색한다. 이후 검색된 규정과 질문을 함께 언어 모델에 전달하고, 모델은 해당 규정을 근거로 답변한다. 즉, RAG는 언어 모델 자체를 거대한 데이터베이스로 사용하는 대신, 모델이 필요할 때 외부 지식을 조회하도록 만든 구조이다. LLM을 특정 기업 데이터나 최신 정보에 맞게 커스텀할 때 사용하는 파인튜닝만으로 부족한 이유는 다음과 같다.
따라서 실무에서는 두 기술을 경쟁 관계로 보기보다 역할을 구분하는 것이 적절하다.
2. RAG의 핵심 파이프라인 3단계는 무엇인가? (+각 단계에서 발생 가능한 문제)< 1단계, Indexing(인덱싱) > 인덱싱 단계에서는 원본 문서를 검색 가능한 형태로 변환한다.
인덱싱 단계에서 발생가능한 문제
결국 RAG의 품질은 언어 모델보다 먼저 데이터 품질과 인덱싱 품질에 의해 제한될 수 있다. < 2단계, Retrieval(검색) > 검색 단계에서는 사용자의 질문을 임베딩 벡터로 변환하고, 벡터DB에서 의미적으로 가까운 문서 청크를 찾는다. 질의 벡터를 (q), 문서 벡터를 (d)라고 하면 코사인 유사도는 일반적으로 다음과 같이 계산된다. 유사도 점수가 높은 상위 (k)개의 청크를 선택해 생성 모델에 전달한다. 검색 단계에서 발생가능한 문제
검색 단계에서 정답 근거를 찾지 못하면, 생성 모델이 아무리 뛰어나도 정확한 답을 만들기 어렵다. 이를 흔히 Garbage In, Garbage Out 문제로 설명할 수 있다. < 3단계, Generation(생성) > 생성 단계에서는 검색된 문서와 사용자의 질문을 프롬프트에 함께 넣고 LLM이 최종 답변을 생성한다. 이 단계의 핵심은 모델이 검색 문서를 단순히 참고하는 수준을 넘어, 문서에 근거한 답변을 생성하도록 하는 것이다. 생성 단계에서 발생가능한 문제
검색 문서 자체의 관련성뿐 아니라, 문서가 실제 정답을 뒷받침하는 증거성(evidentiality)도 중요하다. 관련성이 낮은 문서를 바탕으로 생성하면 모델이 허위 단서를 학습하거나 잘못된 답을 생성할 수 있다는 연구도 존재한다. 3. RAG에서 벡터DB 검색 품질을 높이는 방법에는 뭐가 있나?벡터DB 검색 품질은 단순히 더 좋은 벡터DB 제품을 사용하는 것으로 해결되지 않는다. 데이터 구성, 임베딩 모델, 검색 방식, 질의 처리, 재정렬 및 평가를 함께 개선해야 한다. (1) 청킹 최적화
(2) 하이브리드 검색 (Hybrid Search)
(3) Re-ranking (재순위화)
(4) 쿼리 변환/확장 (Query Transformation)
(5) 임베딩 모델 개선
(6) 메타데이터 필터링
(7) 인덱스 구조/파라미터 튜닝
(8) 피드백 루프 구축
|
1. RAG는 무엇이고, 왜 파인튜닝만으로는 부족한가?RAG란 AI가 답변을 생성하기 전에 필요한 정보를 외부 DB나 문서에서 먼저 검색한 뒤, 검색한 정보를 바탕으로 답변을 생성하는 기술이다. 즉, 학습된 지식만 사용하는 것이 아닌, 최신 정보나 회사 내부 문서와 같은 외부 데이터를 함께 활용하여 더욱 정확한 답변을 제공할 수 있다. 파인튜닝이란, 특정 분야의 데이터를 이용하여 모델 자체를 추가 학습 시키는 방법으로 이를 통해 업무나 말투 면에서는 능력이 향상될 수 있지만, 새로운 정보가 생길 때 마다 다시 학습해야 하므로 시간과 비용이 많이 든다는 한계가 있다. 따라서 파인튜닝만으로는 자주 변경되는 정보나 최신 데이터를 반영하기어렵다. RAG는 필요한 정보를 실시간으로 검색하여 활용하기 때문에, 최신성을 유지할 수 있고, 모델을 다시 학습 시키지 않고 새로운 데이터를 바로 사용할 수 있다. 따라서 모델의 능력을 향상시켜야 하는 전문적인 작업에서는 파인튜닝, 새로운 외부 지식을 실시간으로 빠르게 활용해야 하는 작업에서는 RAG를 사용하여 모델의 전문성과 최신성을 동시에 확보하는 것이 중요하다. 2. RAG의 핵심 파이프라인 3단계는 무엇인가? (+각 단계에서 발생 가능한 문제)1. IndexingIndexing은 쉽게 말해서 자료를 AI가 찾기 쉽게 미리 정리하는 과정을 말한다. 처음부터 질문이 들어올 때마다 모든 자료를 읽어버리면 너무 오래 걸린다. 그래서 미리 자료를 잘게 나누고(Chunking), 그 나눈 문장을 AI가 이해할 수 있는 숫자 벡터로 변환하고(Embedding) 벡터DB에 저장한다. 그래서 나중에 비슷한 내용을 빠르게 찾을 수 있다. 이 과정에서 문서를 너무 크게 나누면, 필요한 정보만 정확하게 찾기 어렵고, 반대로 너무 작게 나누면 문맥이 끊어져 의미를 제대로 이해하지 못하는 문제가 발생할 수 있다. 2. Retrieval검색 단계에서도 사용자의 질문을 임베딩 한 후에, 벡터DB에서 가장 관련성이 높은 문서를 검색한다. 하지만 여기서 질문과 관련된 문서를 제대로 찾지 못하거나 관련성이 낮은 문서를 검색하면 이후 생성되는 답변의 품질도 함께 떨어지는 문제가 발생할 수 있다. 3. Generation생성 단계는 검색된 문서를 LLM의 프롬프트에 함께 전달하여 최종 답변을 생성하는 단계이다. 이 단계에서는 검색된 정보를 충분히 활용하지 못하거나, 검색 결과와 무관한 내용을 생성하는 환각이 발생할 수 있다. 3. RAG에서 벡터DB 검색 품질을 높이는 방법에는 뭐가 있나?RAG에서 검색 품질은 최종 답변의 정확도에 큰 영향을 미친다. 때문에 벡터 DB에서 관련성 높은 문서를 찾기 위한 여러 방법이 있다. 먼저 Chunking을 적절하게 수행하는 것이 중요하다. 문서를 너무 크게 또는 작게 나누면 문제가 생길 수 있기 때문에 적절한 크기로 문서를 분할해야 하고, 적절한 임베딩모델을 선택해야 한다. 임베딩 모델의 성능이 좋을수록 문장의 의미를 더 정확하게 벡터로 표현할 수 있어 사용자의 질문과 관련성이 높은 문서를 검색할 가능성이 높아진다. 또한 Hybrid Search를 사용할 수 있다. 벡터 검색은 문장의 의미를 기반으로 검색하는 반면, 키워드 검색은 동일한 단어나 용어를 정확하게 찾는 데 강점이 있다. 따라서 두 방식을 함께 사용하면 의미와 키워드를 모두 고려할 수 있어 검색 품질을 높일 수 있다. 마지막으로 Reranking기법을 사용할 수 있다. 벡터 DB에서 검색된 여러 문서를 그대로 사용하는 것이 아니라, 별도의 모델이 문서들의 관련성을 다시 평가하여 가장 적합한 순서로 재정렬한 뒤 LLM에 전달하는 방식이다. 이를 통해 더 정확한 문서에게 우선순위를 높게 줄 수 있다. |
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
📆 일자: 26년 7월 28일(화)
Q. RAG (Retrieval-Augmented Generation)에 대해서 자유롭게 서술해주세요.
All reactions