RAG이란?
RAG는 '검색 보강 생성'으로 번역되며, AI 모델이 질문에 답할 때 관련된 정보를 외부 데이터베이스나 문서에서 검색(Retrieval)하고, 이 정보를 바탕으로 답변을 생성(Generation)하는 방식을 의미합니다. 최근 GPT와 같은 대형언어모델(LLM)의 정확성을 높이기 위한 방법으로 많이 활용됩니다. '래그' 라고 발음 합니다.
기존 언어모델이 매번 데이터를 업데이트할 수 없기때문에 최신 정보를 벡터화해서 그 정보를 기반으로 AI의 답변을 보강하는 방식입니다.
그런데, 생각해 보면, LLM도 임베딩을 하고, RAG를 위한 데이터도 임베딩을 해서, 같이 사용한다면, 같은 언어모델의 방식으로 임베딩이 되어야 할 것 같은데, 다른 언어모델로 임베딩을 해도 동작을 합니다. 왜!? 일까요??
결론 부터
- 임베딩 모델과 LLM이 다르더라도 작동은 잘 됩니다.
- 그러나 사용하는 임베딩 모델의 차이에 따라 실제 검색 결과와 성능(정확성, 관련성 등)에 차이가 있을 수 있습니다.
왜 이런 차이가 있고, 그럼에도 불구하고 다른 모델끼리 연동하여 사용 가능한지, 그 이유를 자세히 설명드리겠습니다. 천천히 따라와 보세요.
🧩 임베딩(Embedding)의 본질적 역할
임베딩은 텍스트를 고차원 공간의 벡터로 변환해주는 과정입니다.
이때 중요한 것은 텍스트 간 의미적 유사성을 잘 나타내도록 학습된 공간을 만드는 것입니다.
- 임베딩 벡터는 보통 수백~수천 차원의 실수로 구성된 벡터입니다.
- 이 벡터의 각 차원(dimension)은 모델이 자체적으로 학습한 의미적 특성(semantic feature)을 나타냅니다.
핵심은,
임베딩은 "유사한 의미의 텍스트"가 서로 가까운 벡터 공간에 위치하도록 학습된다는 것입니다.
🧩 임베딩 모델마다 벡터가 달라지는 이유
동일한 텍스트 청크를 입력하더라도 다른 모델에서는 벡터가 다르게 나옵니다. 그 이유는 다음과 같습니다:
- 학습 방법과 데이터 차이
- OpenAI의 임베딩은 GPT 시리즈와 유사한 데이터와 방식을 사용하여 학습합니다.
- Sentence Transformers는 문장 간 유사도에 특화하여 별도의 데이터로 학습된 것입니다.
- 모델 구조와 목표 차이
- 임베딩 모델마다 사용하는 Transformer 구조와 손실함수(loss function)가 다릅니다.
- 목적에 따라 특성 공간을 다르게 표현하므로 서로 다른 벡터를 생성합니다.
따라서 같은 텍스트라도 벡터는 다를 수밖에 없습니다.
🧩 LLM이 임베딩 벡터를 직접 참조하지 않는 이유
여기서 가장 중요한 핵심이 있습니다.
- RAG에서 LLM은 임베딩 벡터 자체를 입력으로 받는 것이 아닙니다.
- LLM은 임베딩 벡터로 검색된 원본 텍스트(자연어)를 입력으로 받습니다.
즉, 실제 RAG에서의 작동 방식은 다음과 같습니다.
사용자 질문 → [임베딩 벡터로 유사 텍스트 검색] → 검색된 텍스트 → LLM 입력 → 답변 생성
이 프로세스에서 LLM의 역할은 "임베딩 벡터가 아니라, 자연어 문장(검색된 청크)"을 보고 질문에 대한 답을 만드는 것입니다.
즉, LLM과 임베딩 간의 연결점은 임베딩 자체가 아니라 "텍스트(청크)"입니다.
임베딩 벡터는 오직 검색(Retrieval) 단계에서만 쓰입니다.
🧩 임베딩이 다르면, 검색 결과가 달라지는 것은 맞음
다만, LLM과 임베딩 모델의 차이가 결과에 영향을 주지 않는다는 의미는 아닙니다.
- 임베딩 모델이 다르면 검색 정확도가 달라질 수 있습니다.
- 정확도 차이로 인해 LLM의 답변 품질에 간접적인 영향을 줄 수 있습니다.
다시 말하면,
- 임베딩 모델이 좋지 않으면 엉뚱한 텍스트가 검색될 가능성이 커지고,
- 결과적으로 LLM이 이상한 답변을 생성할 가능성이 높아집니다.
그러나, 임베딩 벡터 자체가 LLM 입력에 들어가지 않기 때문에 임베딩 자체의 숫자적 차이는 LLM의 문장 생성 프로세스에 직접적인 영향을 미치지는 않습니다.
🎯 현실적으로 고려할 포인트
실제 서비스를 만들 때는 다음을 고려해야 합니다:
고려 사항 현실적 결론
임베딩과 LLM의 일치 | 완벽한 일치는 필수가 아님 (작동 자체에는 무관) |
검색 정확성 | 임베딩 품질이 중요 → LLM과 유사한 학습 데이터를 가진 모델이 유리함 |
모델 간 호환성 | 모델 간 토큰화(tokenizer)가 유사한 경우 성능 향상 가능 |
즉, 실제로 RAG를 최적화하려면 임베딩 모델을 최대한 좋은 품질의 것으로 선정하는 것이 중요합니다. 하지만 반드시 LLM과 제조사가 같거나 모델 계열이 같아야 하는 것은 아닙니다.
✅ 결론적으로
- 임베딩과 LLM은 독립적으로 동작합니다. LLM은 임베딩 벡터를 직접 보지 않기 때문입니다.
- 임베딩 모델이 달라도 RAG는 동작합니다. 그러나 임베딩의 품질은 검색 품질과 결과의 정확성에 영향을 줍니다.
- 현실적으로 LLM과 비슷한 데이터로 학습된 임베딩 모델을 사용하는 것이 성능상 가장 좋은 선택입니다.
이해가 되셨을까요? 다음에도 유익한 내용으로 찾아뵙겠습니다.
감사합니다.
'IT일반' 카테고리의 다른 글
검색엔진 최적화에 간과하기 쉬운 CLS를 해결하는 2가지 방법 (1) | 2025.03.27 |
---|---|
JSX의 가독성 이슈에도, React를 선택하는 이유는? (0) | 2025.02.27 |
IDE 커서(Cursor)를 사용하는 것과 VSCode에 GitHub Copilot 플러그인을 붙여서 사용하는 것의 장단점 및 사용자 평 (0) | 2025.02.20 |
사용자 중심 디자인: 도널드 노먼이 말하는 직관적인 UX의 비밀 (1) | 2025.02.18 |
M시리즈 맥북에서 윈도11 무료로 사용하기 (정상적인 방법) (0) | 2025.02.02 |