Sparse Retriever VS Dense Retriever
๐ Sparse Retriever (ํฌ์ ๊ฒ์๊ธฐ)
๐ Ctrl+F๋ก ๋จ์ด ์ฐพ๊ธฐ ๊ฐ์ ๋ฐฉ์
- ๋ฌธ์ ์ ์ฒด๋ฅผ ๊ทธ๋ฅ "๋จ์ด ๋ชฉ๋ก"์ฒ๋ผ ์ ์ฅํด๋ก๋๋ค.
- ๋ค๊ฐ โ์ฌ๊ณผโ๋ผ๊ณ ๊ฒ์ํ๋ฉด, ์ง์ง ๊ทธ ๋จ์ด๊ฐ ์ ํ ์๋ ๋ถ๋ถ๋ง ์ฐพ์์ค๋๋ค.
๐ ํน์ง
- ๋จ์ด๊ฐ ๋๊ฐ์ด ์์ด์ผ ์ฐพ์.
- ์: "์๋์ฐจ" ๊ฒ์ โ "์๋์ฐจ"๋ ์ฐพ์ง๋ง, "์น์ฉ์ฐจ"๋ ๋ชป ์ฐพ์.
๐ค Dense Retriever (๋ฐ์ง ๊ฒ์๊ธฐ)
๐ ๋ค๊ฐ ๋งํ ์๋ฏธ๋ฅผ ์ดํดํด์ ์ฐพ์์ฃผ๋ ๋ฐฉ์
- AI๊ฐ ๋ฌธ์ฅ์ ์ซ์๋ก ๋ฐ๊ฟ์ ์ ์ฅํด๋ก๋๋ค. (์ด๊ฑธ ์๋ฒ ๋ฉ์ด๋ผ๊ณ ํด์)
- ๋ค๊ฐ "์๋์ฐจ"๋ผ๊ณ ๊ฒ์ํ๋ฉด, ๊ทธ ์ซ์ ๊ณต๊ฐ์์ "์น์ฉ์ฐจ", "์ฐจ๋" ๊ฐ์ ๋น์ทํ ์๋ฏธ๋ ๊ฐ์ด ์ฐพ์๋
๋๋ค.
๐ ํน์ง
- ์๋ฏธ๊ฐ ๋น์ทํ๋ฉด ๋จ์ด๊ฐ ๋ฌ๋ผ๋ ์ ์ฐพ์.
- ์: "์๋์ฐจ" ๊ฒ์ โ "์น์ฉ์ฐจ", "๋ฒ์ค"๋ ์ถ์ฒ๋ ์ ์์.
๐ ๋น์ : ๊ณผ์ผ ๊ฐ๊ฒ ์ฐพ๊ธฐ
- Sparse ๋ฐฉ์: โ์ฌ๊ณผ ์ฃผ์ธ์โ โ ๊ฐ๊ฒ์์ "์ฌ๊ณผ"๋ผ๋ ์ด๋ฆ์ด ๋ถ์ ์์๋ง ๊บผ๋ด์ค. (๋ฐฐ, ๋ณต์ญ์๋ ๋ฌด์)
- Dense ๋ฐฉ์: โ๋ฌ์ฝคํ๊ณ ๋นจ๊ฐ ๊ณผ์ผ ์ฃผ์ธ์โ โ ๊ฐ๊ฒ์์ "์ฌ๊ณผ"๋ฟ ์๋๋ผ "๋ธ๊ธฐ", "์ฒด๋ฆฌ"๋ ๊ฐ์ด ๊บผ๋ด์ค.
๐ RAG์์ ํ์ฉ๋๋ ๋ค์ํ Retriever ๋น๊ต
1. ๋ค์ด๊ฐ๋ฉฐ
RAG(Retrieval-Augmented Generation) ์์คํ
์ ํต์ฌ์ Retriever์
๋๋ค.
Retriever๋ ๋ฐฉ๋ํ ๋ฐ์ดํฐ ์์์ ์ฌ์ฉ์์ ์ง๋ฌธ๊ณผ ๊ฐ์ฅ ๊ด๋ จ์ฑ์ด ๋์ ๋ฌธ์๋ฅผ ์ฐพ์ LLM์ ์ ๊ณตํ๋ ์ญํ ์ ํฉ๋๋ค.
์ค๋์ ๊ธฐ๋ณธ์ ์ธ VectorStore Retriever๋ถํฐ, ์์๋ธยท๋ค์ค ์ฟผ๋ฆฌยท์๊ฐ ๊ฐ์ค ๊ฐ์ ํ์ฅํ ๊ธฐ๋ฒ๊น์ง, 11๊ฐ์ง Retriever๋ฅผ ๋น๊ตํด ๋ณด๊ฒ ์ต๋๋ค.
2. Retriever ์ข
๋ฅ๋ณ ๋ถ์
โ VectorStore-backed Retriever
- ํน์ง: ์๋ฒ ๋ฉ ๊ธฐ๋ฐ์ Dense ๊ฒ์
- ์ฅ์ : ๋จ์ด๊ฐ ๋ฌ๋ผ๋ ์๋ฏธ ๊ธฐ๋ฐ์ผ๋ก ๊ฒ์ ๊ฐ๋ฅ
- ๋จ์ : ๋จ์ ๊ทผ์ ๊ณ์ฐ์ด๋ผ ๊ธด ๋ฌธ๋งฅ์์๋ ํ๊ณ
- ๋น์ : ๋ถ์๊ธฐ๊ฐ ๋น์ทํ ์ํ๋ฅผ ์ฐพ์์ฃผ๋ ์ถ์ฒ ์์คํ
โก Contextual Compression Retriever
- ํน์ง: ๊ฒ์๋ ๋ฌธ์์์ ๋ถํ์ํ ๋ถ๋ถ์ ์์ถํด ์ง๋ฌธ๊ณผ ๊ด๋ จ๋ ๋ถ๋ถ๋ง ์ ๋ฌ
- ์ฅ์ : ํ ํฐ ์ ์ฝ, ๊ธด ๋ฌธ์์๋ ํจ๊ณผ์
- ๋จ์ : ์์ฝ ๊ณผ์ ์์ ์ค์ํ ๋ํ
์ผ ์์ค ๊ฐ๋ฅ
- ๋น์ : ๋
ผ๋ฌธ ์ ์ฒด ๋์ ํ๊ดํ์ผ๋ก ํ์๋ ๋ถ๋ถ๋ง ๋ณด์ฌ์ฃผ๋ ๊ฒ
โข Ensemble Retriever
- ํน์ง: ์ฌ๋ฌ Retriever ๊ฒฐ๊ณผ๋ฅผ ๊ฒฐํฉ
- ์ฅ์ : ๋ค์ํ ๊ธฐ๋ฒ์ ๊ฐ์ ๊ฒฐํฉ์ผ๋ก ์ ํ๋ ์์น
- ๋จ์ : ๊ตฌํ ๋ณต์ก๋์ ๋น์ฉ ์ฆ๊ฐ
- ๋น์ : ์น๊ตฌ, ํ๋ก ๊ฐ, ์๊ณ ๋ฆฌ์ฆ์ ์๊ฒฌ์ ํฉ์ณ ์ํ ์ถ์ฒ
โฃ LongContext Reorder
- ํน์ง: ๊ธด ๋ฌธ์๋ฅผ ์ฒญํฌ ๋จ์๋ก ์ฌ์ ๋ ฌํด ๋งฅ๋ฝ์ ์ ์ง
- ์ฅ์ : ๋ฌธ๋งฅ ๋จ์ ์ ๋ฐฉ์ง
- ๋จ์ : ์๋๊ฐ ๋๋ ค์ง ์ ์์
- ๋น์ : ํ์ํ ๋ฌธ๋จ์ ๋ฝ์ ์๋ ์์๋๋ก ๋ค์ ๋ฐฐ์ดํ๋ ๊ฒ
โค Parent Document Retriever
- ํน์ง: ์ฒญํฌ๋ฅผ ๊ธฐ์ค์ผ๋ก ๊ฒ์ํ๋, ์ต์ข
์ ์ผ๋ก๋ ์์ ๋ฌธ์๋ฅผ ํจ๊ป ๋ฐํ
- ์ฅ์ : ๋งฅ๋ฝ ๋ณด์กด, ์คํด ์ค์
- ๋จ์ : ์์ ๋ฌธ์๊ฐ ํฌ๋ฉด ๋ถํ์ํ ๋ด์ฉ ํฌํจ
- ๋น์ : ๊ธฐ์ฌ ํ ๋ฌธ๋จ๋ง์ด ์๋๋ผ ์ ์ฒด ๊ธฐ์ฌ๋ฅผ ํจ๊ป ๋ณด์ฌ์ค
โฅ MultiQuery Retriever
- ํน์ง: ์ง๋ฌธ์ ์ฌ๋ฌ ๋ฒ์ (ํ๋ผํ๋ ์ด์ฆ)์ผ๋ก ๋ณํํด ๊ฒ์
- ์ฅ์ : ์ ๋งคํ๊ฑฐ๋ ๋ค์ํ ํํ ๋์
- ๋จ์ : ๊ฒ์ ๋น์ฉ ์ฆ๊ฐ
- ๋น์ : ๋ง์ง์ ์ฐพ์ ๋ โ์์ธ ๋ง์งโ, โ์์ธ ํซํโ, โ์์ธ ๋ฏธ์๋ญโ ๋ฑ์ผ๋ก ๋์์ ๊ฒ์
โฆ MultiVector Retriever
- ํน์ง: ํ ๋ฌธ์๋ฅผ ์ฌ๋ฌ ๋ฒกํฐ ํํ์ผ๋ก ์ ์ฅ (์์ฝยท์ธ๋ถยท๋ณ์นญ ๋ฑ)
- ์ฅ์ : ๋ค์ํ ๊ด์ ์์ ๊ฒ์ ๊ฐ๋ฅ
- ๋จ์ : ์ ์ฅ ๊ณต๊ฐยท๊ณ์ฐ ์์ ์ฆ๊ฐ
- ๋น์ : ํ ์ฌ๋์ ์ด๋ ฅ์๋ฅผ ์งง์ ๋ฒ์ , ๊ธด ๋ฒ์ , ๋ณ๋ช
๋ฒ์ ์ผ๋ก ๋์์ ๋ณด๊ด
โง SelfQuery Retriever
- ํน์ง: LLM์ด ์ง๋ฌธ์ ํด์ํด ์กฐ๊ฑด(๋ฉํ๋ฐ์ดํฐ ํํฐ ๋ฑ)์ ์๋ ์์ฑ
- ์ฅ์ : ์ ๊ตํ ๊ฒ์ ๊ฐ๋ฅ
- ๋จ์ : LLM ํด์ ์ค๋ฅ ์ ์๋ฑํ ๊ฒ์ ๊ฐ๋ฅ
- ๋น์ : โ์ต๊ทผ ๊ฐ๋ดํ ์ก์
์ํโ โ ์ฅ๋ฅด=์ก์
, ๊ฐ๋ด์ผ>2023 ์กฐ๊ฑด์ ์๋ ์ ์ฉ
โจ TimeWeighted VectorStore Retriever
- ํน์ง: ๋ฒกํฐ ์ ์ฌ๋ + ์ต์ ์ฑ(time decay)์ ํจ๊ป ๊ณ ๋ ค
- ์ฅ์ : ์ต์ ์ ๋ณด ๊ฒ์์ ๊ฐํจ
- ๋จ์ : ์ค๋๋ ์ ๋ณด๋ ๋ถ์ด์ต ๋ฐ์ ์ ์์
- ๋น์ : ์ ํ๋ธ์์ ์ต์ ์
๋ก๋ ์์์ ์ฐ์ ์ถ์ฒ
โฉ ํ๊ตญ์ด ํํ์ ๋ถ์ + BM25 Retriever
- ํน์ง: Kiwi, Kkma, Okt ๋ฑ ํํ์ ๋ถ์๊ธฐ์ BM25(Sparse ๊ฒ์)๋ฅผ ๊ฒฐํฉ
- ์ฅ์ : ํ๊ตญ์ด ํน์ ์ ์ด๋ฏธยท์กฐ์ฌ ์ฒ๋ฆฌ์ ๊ฐํจ
- ๋จ์ : ์๋ฏธ ์ดํด๋ ๋ถ์กฑ, Dense๋งํผ ๊ฐ๋ ฅํ์ง ์์
- ๋น์ : ๊ตญ์ด์ฌ์ ์ฒ๋ผ ์ ํํ ๋จ์ด ๋งค์นญ ๊ธฐ๋ฐ ๊ฒ์
โช Convex Combination(CC) Ensemble Retriever
- ํน์ง: Sparse + Dense ๊ฒฐ๊ณผ๋ฅผ ๊ฐ์ค ํ๊ท (Convex Combination) ๋ฐฉ์์ผ๋ก ๊ฒฐํฉ
- ์ฅ์ : ์ํฉ์ ๋ง์ถฐ ๊ท ํ ์๋ ๊ฒ์ ์ฑ๋ฅ ํ๋ณด
- ๋จ์ : ์ต์ ๊ฐ์ค์น ์ฐพ๋ ๊ณผ์ ํ์
- ๋น์ : ์น๊ตฌ ์๊ฒฌ 70% + ํ๋ก ๊ฐ ์๊ฒฌ 30% ๋น์จ๋ก ์ข
ํฉ
3. ํ๋์ ๋ณด๋ ๋น๊ตํ
| Retriever | ํน์ง | ์ฅ์ | ๋จ์ | ๋น์ |
|---|
| VectorStore | ๊ธฐ๋ณธ Dense ๊ฒ์ | ์๋ฏธ ๊ฒ์ ๊ฐ๋ฅ | ๊ธด ๋ฌธ๋งฅ ํ๊ณ | ๋ถ์๊ธฐ ๋น์ทํ ์ํ ์ฐพ๊ธฐ |
| ContextualCompression | ๊ฒ์ ๊ฒฐ๊ณผ ์์ถ | ํ ํฐ ์ ์ฝ | ๋ํ
์ผ ์์ค | ํ๊ดํ ํ์ |
| Ensemble | ์ฌ๋ฌ ๊ธฐ๋ฒ ๊ฒฐํฉ | ์ฑ๋ฅโ | ๋น์ฉโ | ์๊ฒฌ ์ข
ํฉ |
| LongContextReorder | ์ฒญํฌ ์ฌ์ ๋ ฌ | ๋งฅ๋ฝ ์ ์ง | ์๋โ | ๋ฌธ๋จ ์์ ๋ง์ถ๊ธฐ |
| ParentDocument | ์์ ๋ฌธ์ ๋ฐํ | ๋งฅ๋ฝ ๋ณด์กด | ๋ถํ์ ์ ๋ณดโ | ๊ธฐ์ฌ ์ ์ฒด ๋ณด๊ธฐ |
| MultiQuery | ๋ค์ค ์ฟผ๋ฆฌ | ํํ ๋ค์์ฑ ๋์ | ๋น์ฉโ | ๋ง์ง ์ฌ๋ฌ ํค์๋ ๊ฒ์ |
| MultiVector | ๋ค์ค ์๋ฒ ๋ฉ | ๋ค์ํ ๊ด์ ๊ฒ์ | ์์โ | ์ด๋ ฅ์ ์ฌ๋ฌ ๋ฒ์ ์ ์ฅ |
| SelfQuery | LLM์ด ์กฐ๊ฑด ์์ฑ | ์ ๊ตํ ๊ฒ์ | ์ค๋ฅ ๊ฐ๋ฅ | ์๋ ํํฐ๋ง ๊ฒ์ |
| TimeWeighted | ์ต์ ์ฑ ๋ฐ์ | ์ต์ ์ ๋ณดโ | ์ค๋๋ ์ ๋ณดโ | ์ต์ ์์ ์ถ์ฒ |
| ํํ์+BM25 | ํ๊ตญ์ด ํนํ Sparse | ํ๊ตญ์ด ์ ํ๋โ | ์๋ฏธ ์ดํด ํ๊ณ | ๊ตญ์ด์ฌ์ ๊ฒ์ |
| CC ์์๋ธ | ๊ฐ์ค์น ๊ฒฐํฉ | ๊ท ํ ์ฑ๋ฅ | ํ๋ ํ์ | ์๊ฒฌ ๋น์จ ์กฐ์ |
4. ๋ง๋ฌด๋ฆฌ & ์ธ์ฌ์ดํธ
Retriever๋ ๋จ์ํ โ๋ฌธ์๋ฅผ ์ฐพ์์ค๋ ๊ธฐ๋ฅโ์ด ์๋๋ผ, RAG์ ํ์ง์ ๊ฒฐ์ ํ๋ ํต์ฌ ์์์
๋๋ค.
- Dense(VectorStore)๋ ์๋ฏธ ์ดํด์ ๊ฐ๋ ฅํ์ง๋ง, ๋งฅ๋ฝ ์ ์ง๊ฐ ์ด๋ ต์ต๋๋ค.
- Sparse(BM25)๋ ์ ํ ๋งค์นญ์ ๊ฐํ์ง๋ง, ์๋ฏธ ๊ฒ์์ ์ฝํฉ๋๋ค.
- Ensemble/CC๋ ๋ ๋ฐฉ์์ ๊ฒฐํฉํด ๊ท ํ์ ์ก์ต๋๋ค.
- MultiQuery, ParentDoc, LongContext๋ โ๊ฒ์ ์ ํ๋ + ๋งฅ๋ฝ ๋ณด์กดโ์ ๋์์ ์ค๋๋ค.
- SelfQuery, TimeWeighted๋ โ์ค๋งํธ ๊ฒ์โ์ ๊ฐ๋ฅํ๊ฒ ํฉ๋๋ค.
๐ ์ค์ ์๋น์ค์์๋ Hybrid + Ensemble์ ๊ธฐ๋ณธ์ผ๋ก ํ๊ณ , ๋ฐ์ดํฐ ํน์ฑ๊ณผ ๋น์ฉ/์๋ ์๊ตฌ์ ๋ฐ๋ผ ๋ค๋ฅธ ๊ธฐ๋ฒ์ ์กฐํฉํ๋ ์ ๋ต์ด ๊ฐ์ฅ ๋ง์ด ํ์ฉ๋ฉ๋๋ค.