RAG - Retriever

๊น€์†Œ์€ยท2025๋…„ 8์›” 18์ผ

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๋‹ค์ค‘ ์ž„๋ฒ ๋”ฉ๋‹ค์–‘ํ•œ ๊ด€์  ๊ฒ€์ƒ‰์ž์›โ†‘์ด๋ ฅ์„œ ์—ฌ๋Ÿฌ ๋ฒ„์ „ ์ €์žฅ
SelfQueryLLM์ด ์กฐ๊ฑด ์ƒ์„ฑ์ •๊ตํ•œ ๊ฒ€์ƒ‰์˜ค๋ฅ˜ ๊ฐ€๋Šฅ์ž๋™ ํ•„ํ„ฐ๋ง ๊ฒ€์ƒ‰
TimeWeighted์ตœ์‹ ์„ฑ ๋ฐ˜์˜์ตœ์‹  ์ •๋ณดโ†‘์˜ค๋ž˜๋œ ์ •๋ณดโ†“์ตœ์‹  ์˜์ƒ ์ถ”์ฒœ
ํ˜•ํƒœ์†Œ+BM25ํ•œ๊ตญ์–ด ํŠนํ™” Sparseํ•œ๊ตญ์–ด ์ •ํ™•๋„โ†‘์˜๋ฏธ ์ดํ•ด ํ•œ๊ณ„๊ตญ์–ด์‚ฌ์ „ ๊ฒ€์ƒ‰
CC ์•™์ƒ๋ธ”๊ฐ€์ค‘์น˜ ๊ฒฐํ•ฉ๊ท ํ˜• ์„ฑ๋ŠฅํŠœ๋‹ ํ•„์š”์˜๊ฒฌ ๋น„์œจ ์กฐ์ •

4. ๋งˆ๋ฌด๋ฆฌ & ์ธ์‚ฌ์ดํŠธ

Retriever๋Š” ๋‹จ์ˆœํžˆ โ€œ๋ฌธ์„œ๋ฅผ ์ฐพ์•„์˜ค๋Š” ๊ธฐ๋Šฅโ€์ด ์•„๋‹ˆ๋ผ, RAG์˜ ํ’ˆ์งˆ์„ ๊ฒฐ์ •ํ•˜๋Š” ํ•ต์‹ฌ ์š”์†Œ์ž…๋‹ˆ๋‹ค.

  • Dense(VectorStore)๋Š” ์˜๋ฏธ ์ดํ•ด์— ๊ฐ•๋ ฅํ•˜์ง€๋งŒ, ๋งฅ๋ฝ ์œ ์ง€๊ฐ€ ์–ด๋ ต์Šต๋‹ˆ๋‹ค.
  • Sparse(BM25)๋Š” ์ •ํ™• ๋งค์นญ์— ๊ฐ•ํ•˜์ง€๋งŒ, ์˜๋ฏธ ๊ฒ€์ƒ‰์€ ์•ฝํ•ฉ๋‹ˆ๋‹ค.
  • Ensemble/CC๋Š” ๋‘ ๋ฐฉ์‹์„ ๊ฒฐํ•ฉํ•ด ๊ท ํ˜•์„ ์žก์Šต๋‹ˆ๋‹ค.
  • MultiQuery, ParentDoc, LongContext๋Š” โ€œ๊ฒ€์ƒ‰ ์ •ํ™•๋„ + ๋งฅ๋ฝ ๋ณด์กดโ€์— ๋„์›€์„ ์ค๋‹ˆ๋‹ค.
  • SelfQuery, TimeWeighted๋Š” โ€œ์Šค๋งˆํŠธ ๊ฒ€์ƒ‰โ€์„ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค.

๐Ÿ‘‰ ์‹ค์ œ ์„œ๋น„์Šค์—์„œ๋Š” Hybrid + Ensemble์„ ๊ธฐ๋ณธ์œผ๋กœ ํ•˜๊ณ , ๋ฐ์ดํ„ฐ ํŠน์„ฑ๊ณผ ๋น„์šฉ/์†๋„ ์š”๊ตฌ์— ๋”ฐ๋ผ ๋‹ค๋ฅธ ๊ธฐ๋ฒ•์„ ์กฐํ•ฉํ•˜๋Š” ์ „๋žต์ด ๊ฐ€์žฅ ๋งŽ์ด ํ™œ์šฉ๋ฉ๋‹ˆ๋‹ค.

profile
๊ฐœ๋ฐœ์ž

0๊ฐœ์˜ ๋Œ“๊ธ€