728x90
반응형
Sparse Retrieval
전통적인 키워드 기반 검색 방식으로 빠르고 직관적이며 적은 자원이 필요하지만, 의미 기반 검색이 어렵다는 한계가 있음.
희소 벡터 형태로 표현하여 검색 수행
- 희소 벡터: 전체 어휘 사전의 크기에 해당하는 차원을 가진 벡터, 해당 문서나 쿼리에 등장하는 단어에 해당하는 위치만 1이고 나머지는 모두 0인 형태를 갖는다.
- TF-IDF: 특정 단어가 문서에 나타나는 빈도와(TF) 그 단어가 몇 개의 문서에서 나타나는지(IDF)를 반영하여 단어의 중요도를 계산합니다. 여기서 자주 나타나면서도 문서 집합 전체에 드물게 나타나는 단어가 높은 가중치를 받음.
- TF: 단어 t의 문서 d 내 등장 횟수 / 문서 d의 총 단어 수
- IDF: log(전체 문서 수 / 단어 t가 등장하는 문서 수)
- 문서 길이 고려 부족, 단어 빈도의 선형적 증가 문제
- BM25(Best Mactching 25): TF-IDF를 개선한 모델로, 문서의 길이와 단어의 빈도를 고려하여 검색 정확도를 향상시킵니다. 긴 문서와 짧은 문서 간의 가중치를 조정하여 단어 빈도의 영향을 상대적으로 조절합니다.
- 문서 길이 정규화: 문서의 길이를 고려하여 긴 문서에서 단어 빈도를 적절히 조정
- 단어 빈도의 포화 처리: 단어 빈도가 증가함에 따라 점수 증가율이 감소하도록 설계되어 과도한 반복이 결과에 미치는 영향을 제한
- 역색인, 단어 매칭
Dense Retrieval
질문과 문서를 연속적인 고차원 벡터로 인코딩하여 의미적으로 관련성 높은 문서를 매칭합니다.
Sparse Retreival과 달리 단어의 존재 여부나 빈도만이 아닌 단어의 의미와 문맥을 고려하여 검색을 ㅎ수행
의미 기반 검색이 가능하지만 사전 학습과 인프라 자원이 더 필요합니다.
- Embedding Model, ANN
- Faiss: 대규모 데이터셋에서 고차원 벡터의 유사도 검색을 빠르게 수행할 수 있도록 설계된 라이브러리. 인덱싱 방법 활용
- Vector DB
Ensemble Retrieval
Sparse + Dense Retrieval 을 결합하여 각 방식의 단저믕ㄹ 보완하고 더 균형 잡힌 검색
- Sparse: 키워드 기반의 빠르고 직관적인 검색 가능/ 문맥과 의미를 온전히 파악하기 어려움
- Dense: 텍스트의 의미를 깊이 있게 이해하고 관련성을 판단할 수 있음/ 계산 비용이 높고 새로운 키워드나 특정 표현을 정확히 포착하는데 어려움
Reranking
초기 검색으로 대상을 빠르게 좁히고, 이 문서들을 정밀하게 평가하는 방식
- LLM기반: 프롬프트 설계 → LLM 호출 → 순위 재조정
- 크로스 인코더 기반: 주로 BERT와 같은 인코더 기반 언어 모델을 이용
- Bi-Encoder: Dense Retrieval에 사용되는 인코딩 방식으로, 질문 A와 문서 B가 있을 때 이들 각각을 임베딩으로 동일한 크기의 벡터로 만든 뒤, 코사인 유사도와 같은 유사도 분석을 통해 벡터 간의 거리를 수치화하는 방식
- Cross-Encoder: 질문 A와 문서 B가 있을 때, 이들을 트랜스포머 기반의 인코더 모델에 함께 투입하여, 둘 사이의 관련성을 나타내는 분류 점수를 직접 얻습니다.
✨ 실무에서는 두 방식을 혼합하거나 reranker와 함께 사용하는 경우가 많습니다.
Last Updated. 2025.06.24
🔖 참고 자료
📘 RAG 마스터: 랭체인으로 완성하는 LLM 서비스
728x90
반응형
'NLP | LLM' 카테고리의 다른 글
[LangChain] 2. LangChain과 RAG에 대한 모든 것 (3) | 2025.06.24 |
---|---|
고도화된 RAG: 단순히 검색만으로는 한계가 있다 (Self-RAG, GraphRAG) (2) | 2025.06.20 |
RAG & Agent 시스템 성능 검증은 어떻게 할까? (5) | 2025.06.19 |
로컬 환경에서 필수인 Ollama에 대해 알아보기 (3) | 2025.06.18 |
AI Agent의 모든 것 (5) | 2025.06.17 |