RAG 시스템에서의 임베딩 (Embedding) 이해와 벡터 검색 원리
요약
RAG 시스템에서 임베딩은 텍스트 청크를 다차원 벡터로 변환하여 의미론적 검색을 가능하게 하는 핵심 과정입니다. 이 과정을 통해 사용자의 쿼리와 저장된 문서 간의 의미적 유사성을 파악할 수 있습니다. 실제 검색 시에는 코사인 유사도를 사용하여 쿼리 벡터와 저장된 벡터들 사이의 각도 기반 거리를 측정하며, 대규모 데이터셋 처리를 위해 KNN 대신 ANN 방식을 주로 활용합니다.
핵심 포인트
- 임베딩은 텍스트 청크를 벡터로 변환하여 의미론적 검색(Semantic Search)을 구현하는 핵심 단계이다.
- 의미론적 유사성은 의도, 문맥, 의미를 종합적으로 고려하며, 다차원 벡터 공간에서 가까운 거리에 위치한다.
- 벡터 간의 유사도를 측정할 때는 코사인 유사도가 가장 안정적이며 신뢰성 높은 방법으로 사용된다.
- KNN은 정확하지만 대규모 데이터셋에서 느리고, ANN은 속도 향상을 위해 근사적인 검색을 수행하는 방식이다.
임베딩 (Embedding)이란 무엇인가? 텍스트가 청크 (Chunks)로 분할된 후, 다음 프로세스를 임베딩 (Embedding)이라고 부릅니다. 이 단계에서 각 청크는 벡터 (Vectors, 벡터 공간 내의 점)로 변환됩니다. 벡터 기반의 RAG 시스템에서는 효율적인 의미론적 검색 (Semantic Search)을 수행할 수 있도록 청크를 벡터로 변환합니다.
왜 청크를 벡터로 변환해야 하는가?
RAG 애플리케이션의 주요 목표는 의미론적 검색 (Semantic Search)을 달성하는 것입니다.
의미론적 예시 (Semantic Example)
'feline'이라는 단어는 단어 자체는 다르더라도 고양이과 (cat family)와 관련이 있습니다. 'feline'과 'cat'이 서로 관련되어 있음을 이해하는 것을 의미론적 이해 (Semantic Understanding)라고 합니다.
유사도 (Similarity)
사용자가 쿼리 (Query)를 던지면, 청크에 포함된 정확한 단어가 다르더라도 의미론적으로 관련된 청크들이 반환됩니다.
의미론적 유사도 (Semantic Similarity)
의미론적 유사도는 다음을 결합합니다:
- 의도 (Intent)
- 문맥 (Context)
- 의미 (Meaning)
그 목적은 사용자 쿼리와 RAG 시스템에 저장된 문서 간의 관계를 설정하는 것입니다. 이를 통해 시스템은 데이터베이스에서 관련 정보를 검색하여 LLM (Large Language Model)에 전달하고, 이후 처리가 가능하도록 합니다. 의미론적으로 관련된 단어들은 일반적으로 다차원 벡터 공간 (Multi-dimensional vector space)에서 서로 가까운 위치에 저장됩니다.
코사인 유사도 (Cosine Similarity)
벡터들이 서로 얼마나 가까운지 결정하기 위해 코사인 유사도 (Cosine Similarity)가 흔히 사용됩니다.
사용자 쿼리가 들어오면:
- 쿼리가 벡터로 변환됩니다.
- 쿼리 벡터와 저장된 벡터들 사이의 코사인 유사도가 계산됩니다.
- 가장 가까운 벡터들이 검색됩니다.
검색 방법론 (Retrieval Methodologies)
두 가지 주요 검색 방법론이 사용됩니다:
- KNN (K-Nearest Neighbors)
KNN은 쿼리 벡터를 저장된 모든 벡터와 하나씩 비교하여 가장 가까운 이웃을 찾습니다.
- 장점: 더 정확한 검색
- 단점: 매우 큰 데이터셋에서는 속도가 느림
- ANN (Approximate Nearest Neighbors)
ANN은 모든 지점을 일일이 비교하는 대신, 근사적으로 가장 가까운 벡터를 찾습니다. 이 방법은 주로 다음과 같은 경우에 사용됩니다:
- 문서의 양이 방대한 경우
- 더 빠른 검색이 필요한 경우
- 시간 제약이 있는 경우
ANN은 약간의 정확도를 희생하는 대신 검색 속도를 향상시킵니다.
왜 사인(Sine)이나 탄젠트(Tangent) 대신 코사인 유사도(Cosine Similarity)를 사용하는가? 코사인 유사도가 효과적으로 작동하는 이유는 다음과 같습니다:
- 두 벡터가 매우 가깝고 밀접하게 연관되어 있다면, 코사인 유사도 값은 1에 가까워집니다.
- 벡터 사이의 각도가 커지면 코사인 유사도 값은 감소하며, 이는 두 벡터의 연관성이 낮음을 의미합니다.
왜 사인(Sine)이나 탄젠트(Tangent)가 아닌가?
- 작은 각도의 경우: 사인(Sine) 값은 0에 가깝게 유지됩니다.
- 탄젠트(Tangent) 값은 크게 변동할 수 있습니다.
이러한 측정 방식은 의미론적 비교(Semantic comparison)를 수행하기에 안정적이지 않습니다. 코사인 유사도는 벡터 간의 의미론적 유사성(Semantic closeness)을 측정하는 더 신뢰할 수 있는 방법을 제공합니다.
임베딩 차원 (Embedding Dimensions)
임베딩 모델은 256에서 3000 이상의 차원을 가진 벡터를 생성할 수 있습니다. 차원의 크기는 임베딩 모델과 모델이 포착하는 문맥 정보(Contextual information)의 양에 따라 달라집니다.
일반적으로:
- 높은 차원은 더 풍부한 의미론적 정보를 포착합니다.
- 낮은 차원은 더 빠르고 비용이 저렴하지만 문맥을 놓칠 수 있습니다.
임베딩 모델의 유형
임베딩 모델을 선택하는 것은 전적으로 애플리케이션 시나리오에 달려 있습니다.
- 쿼리 유형에 따른 분류
대칭 모델 (Symmetric Models)
대칭 임베딩 모델은 쿼리(Query)와 문서(Documents)의 구조 및 길이가 유사할 때 사용됩니다.
예시:
- nomic-embed-text
- Qwen embeddings
이 모델들은 일반적으로 의미론적 검색(Semantic search) 시스템에서 사용됩니다.
비대칭 모델 (Asymmetric Models)
비대칭 임베딩 모델은 다음과 같은 경우에 사용됩니다:
- 쿼리가 짧은 경우
- 문서가 긴 경우
예시: - Google Gemini embedding models
이 모델들은 짧은 쿼리로부터 긴 문서를 검색하는 데 최적화되어 있습니다.
- 검색 유형에 따른 분류
밀집 임베딩 (Dense Embeddings)
밀집 임베딩은 주로 의미론적 의미에 집중합니다. 이러한 임베딩은 대부분의 값이 유의미한 정보를 포함하는 밀집 벡터(Dense vectors)를 생성합니다.
예시:
- Cohere embedding models
- ChatGPT OSS 120B embeddings
장점: 더 나은 의미론적 이해
희소 임베딩 (Sparse Embeddings)
희소 임베딩은 주로 정확한 키워드 매칭(Keyword matching)에 집중합니다.
이들은 주로 다음과 데 기반한 BM25 (Best Match 25) 알고리즘을 사용합니다:
- TF (Term Frequency, 단어 빈도)
- IDF (Inverse Document Frequency, 역문서 빈도)
TF-IDF 개념
- TF (Term Frequency): 단어가 문서 내에서 몇 번 나타나는지를 측정합니다.
- IDF (Inverse Document Frequency): 전체 문서 집합에서 특정 단어가 얼마나 중요한지를 측정합니다. 모든 문서에 너무 자주 등장하는 단어는 중요도가 낮은 것으로 간주됩니다.
Transformer 아키텍처 (Transformer Architecture)
Transformer 아키텍처는 LLM (Large Language Models)의 주요한 돌파구였습니다. Transformer는 주로 다음과 같이 구성됩니다:
- 인코더 (Encoder)
- 디코더 (Decoder)
인코더 (Encoder): 인코더는 텍스트를 임베딩 (Embeddings, 벡터)으로 변환합니다.
디코더 (Decoder): 디코더는 처리 과정을 거친 후 임베딩을 다시 사람이 읽을 수 있는 텍스트로 변환합니다.
이러한 아키텍처를 통해 현대의 LLM은 자연어를 효과적으로 이해하고 생성할 수 있습니다.
벡터 데이터베이스 (Vector Database) 선택하기
Chroma
- 오픈 소스 (Open source)
- 설정이 간편함
- 기초적이고 소규모 애플리케이션에 적합함
FAISS
- 대규모 문서 집합에 더 적합함
- 고성능 시맨틱 검색 (Semantic search)에 최적화됨
- 실제 운영 규모 (Production-scale)의 검색 시스템에서 흔히 사용됨
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기