Replies: 6 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에 전달하는 방식이다. 이를 통해 더 정확한 문서에게 우선순위를 높게 줄 수 있다. |
RAG는 무엇이고, 왜 파인튜닝만으로는 부족한가?RAG : Retrieval-Augmented Generation, 검색 증강 생성
프롬프트에 학습정보를 담는 것은 큰 단점을 가지고 있다. 컨텍스트 길이에 제한이 있는 것인데, 매 요청마다 비용이 발생하고, 대용량 정보는 담지도 못한다. 그렇다면 파인튜닝은 어떨까? 파인튜닝은 프롬프트로 정보를 요청하는 것과 다르게, 사전에 학습시킨 정보로 모델의 가중치를 변경시켜, 모델 자체가 학습하여 다음 질문에도 학습의 결과가 반영된다는 장점이 있다. 그러나 파인튜닝은, 데이터의 갱신이 자주 일어날 수록 단점이 부각되는데, 데이터 갱신 시마다 다시 학습을 시켜야 한다는 것이다. 그에 비해 rag 는 가중치 변경은 없으나 vector db 를 사용하여 모델과는 별개로 데이터를 검색의 형태로 모델이 가져올 수 있다는 장점이 있다. 가중치 변경이 없기에 당연히 모델의 학습이 불필요하고, 자주 갱신되는 데이터에 대해 유리하다. 추가로, 파인튜닝은 환각을 만들어내지만, rag는 검색 기반이기 때문에 환각이 줄어들고, 출처를 명시하는 것도 가능하다. RAG의 핵심 파이프라인 3단계는 무엇인가? (+각 단계에서 발생 가능한 문제)핵심 파이프라인 3단계는 용어에 그대로 묻어있다.
RAG에서 벡터DB 검색 품질을 높이는 방법에는 뭐가 있나?여러가지가 있는데 중요도 순으로 나열을 해보자면
|
1. RAG는 무엇이고, 왜 파인튜닝만으로는 부족한가?RAG(Retrieval-Argumented Generation)은 AI가 답변을 생성할때 내부 학습 데이터만을 사용하지 않고 외부 데이터베이스나 문서에서 관련 정보를 검색하여 함께 보내 그 정보를 바탕으로 한 답변을 얻어내는 기술입니다. RAG는 파인튜닝에 비해 비용, 최신성, 환각 제어에 대해서 유리합니다. 이유를 비유와 함께 설명해보자면 RAG는 오픈북 시험과 같고 파인튜닝은 주입식 공부와 같습니다. 즉, 두 방식으로 시험을 친다했을 경우 RAG는 시험 범위에 맞는 자료만 가져가면 되는 저렴한 비용이 들고, 갑작스럽게 시험 범위가 변경되거나 추가가 된다면 범위에 맞는 자료만 추가하면 되고, 또 답의 근거가 명확하기 때문에 환각 제어가 유리합니다. 하지만 파인튜닝은 시험 범위에 맞게 자료를 전부 공부해야하는 무거운 비용과 갑작스러운 범위 변경, 추가에 대해서 난이도가 높은 암기가 요구됩니다. 그리고 답 생성을 기억에 의존하기에 환각 발생 가능성이 높습니다. 이런 이유로 세가지 측면에서 RAG가 유리하다고 할 수 있습니다. 하지만 이런 점이 ‘RAG가 파인튜닝보다 좋다’라는 것을 의미하진 않습니다. 파인튜닝의 경우 정해진 형식, 틀이 있을 경우 장점을 발휘하기 때문에 주로 톤앤매너를 지켜주거나 정해진 형식을 지키게 하는데에는 모델의 성격을 개조시켜주는 파인튜닝이 유리합니다. 2. RAG의 핵심 파이프라인 3단계는 무엇인가? (+각 단계에서 발생 가능한 문제)RAG의 핵심 파이프라인 3단계는 Indexing, Retrieval, Generation입니다. 먼저 Indexing은 문서를 작은 단위 chunk로 쪼개서 json, vector, graph 등의 구조로 저장하는 단계입니다. 이때 문서를 쪼개는 과정에서 문맥이 잘리거나 자료 간의 유기적 관계가 잘릴 수도 있습니다. Retrieval은 사용자 질문이 들어왔을 때, Indexing 해둔 데이터에서 관련 정보를 검색하는 단계입니다. 이때 키워드가 잘못 매치되거나 검색 조건이 까다로워 검색을 실패할 수 있습니다. 마지막으로 Generation은 질문과 함께 받은 관련 정보로 대답을 생성하는 단계입니다. 이때 관련 정보를 함께 줬음에도 LLM이 제공된 정보 범위에서 벗어난 정보를 활용하거나 기존에 학습된 데이터와 충돌하여 엉뚱한 답변을 생성할 수도 있습니다. 3. RAG에서 벡터DB 검색 품질을 높이는 방법에는 뭐가 있나?RAG에서 벡터 DB 검색 품질을 높이는 방법으론 하이브리드 검색, 리랭킹, 메타데이터 필터링 등이 있습니다. 하이브리드 방식은 벡터 유사도 검색 뿐 아니라 키워드 검색도 하여 두 결과 점수를 RRF 알고리즘 등으로 결합하여 상위 결과를 추출합니다. 이는 벡터검색의 고유명사, 숫자에 약하다는 단점과 키워드 검색의 동의어, 맥락에 약하다는 단점을 상호보완하여 품질을 높여줍니다. 리랭킹은 벡터 DB에서 가져온 1차 후보군을 정밀도가 높은 Reranker 모델을 거쳐 가장 밀접한 후보군을 추출합니다. 메타데이터 필터링은 벡터 유사도 검사 전에 날짜, 카테고리, 문서 작성자, 보안 권한 등의 메타데이터로 필터링을 거쳐 탐색 범위를 좁힌 후 검사를 진행하여 품질을 향상 시켜줍니다. |
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