[4] RAG (Retriever Augumented Generation)
업데이트:
[1] Data Creation
Query Expansion
- Query decompose
- Visconde: Multi-document QA with GPT-3 and Neural Reranking
-
HyDE: Hypothetical Document Embeddings
- GPT 모델을 활용하여 inference 만으로 데이터를 수집 → 주어진 query에 대한 hypothetical document를 생성 (이 document는 생성된 것이므로 틀릴수도 있음)
- contriver 모델같은 unsupervised learned encoder를 통해 문서를 encoding → 이후 실제 문서에서 비슷한 vector를 search (corpus embedding space에서의 similarity를 계산)
- 주어진 query에 대해 잘못된 생성된 정보를 사용하지 않고, 실제 corpus의 문서를 사용할 수 있음
- Multi Query Expansion
[2] Retrieval
Sparse retrieval
- BoW를 구성하는 n-gram 방식
- TF-IDF
- TF (Term-Frequency)
- document에 term이 등장하는 빈도. (빈도수가 높을수록 문서의 검색 점수는 높아짐.)
- 문서 내에 같은 단어가 여러번 등장하면 그 단어에 가중치를 줌
- IDF (Inverse Document Frequency)
- 전체 문서에서 등장하는 term의 빈도수(DF)의 역수(Inverse)
- term이 여러 문서에 등장할수록 낮은 가중치를 줌
- TF-IDF: 단어가 얼마나 반복되는지(TF)와 얼마나 자주 사용되는 단어인지 (IDF)
- TF (Term-Frequency)
- BM25
- 주어진 query에 대해 문서와의 연관성을 평가하는 ranking 함수. (TF-IDF 의 변형)
- BM25는 TF-IDF보다 좋음. WHY?
- TF의 영향이 줄어듦. TF에서는 문서 내 단어빈도가 높아질수록 검색 점수도 좋아지지만, BM25에서는 특정값으로 수렴
- IDF의 영향이 커짐
- BM25에서는 DF가 높아지면 검색점수가 0으로 수렴하므로, 불용어가 검색점수에 영향을 덜 줌
- 문서 길이의 영향이 줄어듦.
- BM25는 TF-IDF 와 다르게 문서 길이에 대한 정규화를 해서 문서 길이가 점수에 영향을 미치지 않음
- elasticsearch의 기본 유사도 알고리즘
- 특정 도메인을 사용하는 경우 BM25가 vectorDB보다 좋음
- 형태소 분석을 잘해야 (tokenizer가 좋아야) BM25의 성능이 좋음 (참고)
Dense retrieval - VectorDB
- embedding model (참고)
- OpenAI) text-embedding-3-large
- 24.01.25, multilingual, 256/1024/3072 dim 지원
- Cohear) embed-multilingual-v3.0
- 23.11.02, multilingual, 1024 dim
- Google) text-multilingual-embedding-preview-0409
- 24.04.02, multilingual, 768 dim
- Microsoft) E5
- 2024 초, multilingual, 384/758/1024 dim
- BGE-M3
- 24.01.30, multilingual, 1024 dim
- M3: Multi-linguality (100+ languages), Multi-granularities (input length up to 8192), Multi-Functionality (unification of dense, lexical, multi-vec (colbert) retrieval
- OpenAI) text-embedding-3-large
Hybrid
- RRF (Reciprocal Rank Fusion)
- 서로 다른 관련성 지표 (relevance indicators)를 가진 여러개의 result sets을 하나의 결과 집합으로 결합하는 방법 (ex. BM25와 vectorDB의 리트리벌 결과를 모두 사용)
- 모든 검색 엔진의 역수 순위 점수를 합산하여 최종 순위를 결정
- CC (Convex Combination)
- RRF랑 비슷. multiple source의 리트리벌 정보를 사용
- Convex Combination 알고리즘을 활용하여 각 리트리벌 간의 가중치가 다른 점수 계산이 가능
- 검색엔진의 중요도에 따라 가중치를 조절하여 리트리벌 결과를 뽑음
- RSF (Relative Score Fusion)
- 각 검색 엔진 마다 다른 스코어 범위를 갖고 있으므로, 이를 상대 스코어로 정규화한 후 (검색 엔진간 스코어 스케일 차이 극복) 변환된 상대 스코어를 합산하여 최종 스코어 계산
- DBSF (Distributtion-based Score Fusion)
- RSF와 유사. RSF는 min-max normalization을 사용했다면, DBSF는 distribution을 고려한 (mean, std 고려) min-max score를 적용
- 검색엔진 간 스코어 분포의 차이를 보다 정교하게 고려 가능
[3] ReRanking
- LLM Reranking
- UPR (Improving Passage Retrieval with Zero-shot Question Generation)
- TART (Task-aware Retrieval with Instructions)
Reference
댓글남기기