๐Ÿค– ChatGPT๋ณด๋‹ค ๋˜‘๋˜‘ํ•œ RAG ๋งŒ๋“ค๊ธฐ?! Advanced RAG ๊ฐœ๋…๋ถ€ํ„ฐ ๊ธฐ๋ฒ•๊นŒ์ง€ ์ •๋ฆฌ

์œค์„œยท2025๋…„ 4์›” 6์ผ

CapstoneProject

๋ชฉ๋ก ๋ณด๊ธฐ
2/11

๐Ÿ“Œ "๊ฒ€์ƒ‰๋งŒ ์ž˜ํ•ด๋„ ๋ฐ˜์€ ๋จน๊ณ  ๋“ค์–ด๊ฐ„๋‹ค" โ€” RAG์—๋„ ์™„๋ฒฝํžˆ ์ ์šฉ๋˜๋Š” ๋ง์ธ๋“ฏ ์‹ถ์Šต๋‹ˆ๋‹ค.

๐Ÿง‘โ€๐Ÿ’ป Intro: RAG๊ฐ€ ๋ญ์˜ˆ์š”?

RAG (Retrieval-Augmented Generation)๋Š”
LLM(์˜ˆ: GPT-4, Claude, Mistral ๋“ฑ)์—๊ฒŒ ๊ฒ€์ƒ‰์„ ๋ถ™์—ฌ์ฃผ๋Š” ๋ฐฉ์‹์ด์—์š”.

์ฒ˜์Œ์— RAG๋ฅผ ์ ‘ํ–ˆ์„ ๋•
โ€œ๊ทธ๋ƒฅ ๋ฌธ์„œ ๊ฒ€์ƒ‰ํ•ด์„œ LLM์— ๋„ฃ๋Š” ๊ฑฐ ์•„๋‹Œ๊ฐ€?โ€

ํ•˜์ง€๋งŒ

๊ณ ๊ธ‰ RAG๋Š” ๋‹จ์ˆœ ๊ฒ€์ƒ‰ + ์ƒ์„ฑ์ด ์•„๋‹™๋‹ˆ๋‹ค.
ํŒŒ์ดํ”„๋ผ์ธ ์ „๋ฐ˜์„ ์ตœ์ ํ™”ํ•ด์„œ
๊ฒ€์ƒ‰ ์ •ํ™•๋„, ๋ฌธ๋งฅ ์ดํ•ด๋„, ์‘๋‹ต์˜ ์‹ ๋ขฐ๋„๊นŒ์ง€ ๋‹ค ๋†’์—ฌ์ฃผ๋Š” ๊ตฌ์กฐ๊ฑฐ๋“ ์š”.

์ด๋ฒˆ ๊ธ€์—์„œ๋Š” ์ œ๊ฐ€ ๊ณต๋ถ€ํ•˜๋ฉด์„œ ์ •๋ฆฌํ•œ
"Advanced RAG๊ฐ€ ๋ญ”์ง€", "์™œ ํ•„์š”ํ•œ์ง€", "์–ด๋–ค ๊ธฐ์ˆ ๋“ค์ด ์“ฐ์ด๋Š”์ง€"
์ •๋ฆฌํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

๐Ÿ“š RAG๊ฐ€ ๋ญ”๋ฐ์š”?

RAG๋Š” โ€œRetrieval-Augmented Generationโ€์˜ ์ค„์ž„๋ง๋กœ,
์‰ฝ๊ฒŒ ๋งํ•˜๋ฉด LLM์—๊ฒŒ โ€˜๊ฒ€์ƒ‰ ๊ธฐ๋Šฅโ€™์„ ๋ถ™์—ฌ์ฃผ๋Š” ๊ตฌ์กฐ์ž…๋‹ˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด GPT-3.5 ๊ฐ™์€ LLM์€
2023๋…„ ์ด์ „๊นŒ์ง€์˜ ์ง€์‹๋งŒ ํ•™์Šต๋ผ ์žˆ์–ด์„œ
๊ทธ ์ดํ›„ ์ƒ๊ธด ์ •๋ณด๋Š” ๋ชจ๋ฅด๊ณ  ์žˆ์–ด์š”.

์˜ˆ๋ฅผ ๋“ค์–ด,

"2024๋…„ ์ด์„ ์—์„œ ์–ด๋–ค ์ •์ฑ…์ด ์ƒˆ๋กœ ๋‚˜์™”์–ด์š”?"
"GPT-4.5์—์„œ ์ถ”๊ฐ€๋œ ๊ธฐ๋Šฅ์ด ๋ญ์˜ˆ์š”?"

์ด๋Ÿฐ ์งˆ๋ฌธ์€ ๊ธฐ๋ณธ GPT๋กœ๋Š” ๋‹ต์„ ๋ชป ํ•ด์š”.

์ด๋Ÿด ๋•Œ ํ•„์š”ํ•œ ๊ฒŒ ๋ฐ”๋กœ RAG์˜ˆ์š”.
์™ธ๋ถ€ ๋ฌธ์„œ, PDF, ์›น ๊ฒ€์ƒ‰ ๊ฒฐ๊ณผ ๋“ฑ์„ LLM์— ํ•จ๊ป˜ ๋„ฃ์–ด์„œ
์ง€๊ธˆ ์ด ์ˆœ๊ฐ„์˜ ์ •๋ณด๊นŒ์ง€ ๋ฐ˜์˜ํ•œ ์‘๋‹ต์„ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ฃผ๋Š” ๊ธฐ์ˆ ์ž…๋‹ˆ๋‹ค.

๐Ÿ“ฆ Naive RAG๋Š” ์ด๋ ‡๊ฒŒ ์ž‘๋™ํ•ด์š”

๊ธฐ๋ณธ์ ์ธ RAG๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ตฌ์กฐ๋กœ ๋˜์–ด ์žˆ์–ด์š”:

๐Ÿ“„ ๋ฌธ์„œ๋ฅผ ์ฒญํฌ(chunk) ๋‹จ์œ„๋กœ ์ž˜๋ผ์„œ ๋ฒกํ„ฐ๋กœ ๋ณ€ํ™˜

๐Ÿ” ์‚ฌ์šฉ์ž์˜ ์งˆ๋ฌธ๋„ ๋ฒกํ„ฐ๋กœ ๋งŒ๋“ค์–ด์„œ, ๋ฌธ์„œ ๋ฒกํ„ฐ๋“ค๊ณผ ๋น„๊ตํ•ด Top-K ๊ฒ€์ƒ‰

๐Ÿง  ๊ฒ€์ƒ‰๋œ ์ฒญํฌ๋ฅผ LLM์—๊ฒŒ ํ•จ๊ป˜ ๋ณด๋‚ด์„œ ์‘๋‹ต ์ƒ์„ฑ

์ด๊ฒŒ ๊ธฐ๋ณธ ๊ตฌ์กฐ์ธ๋ฐ, ํ˜„์‹ค์—์„œ๋Š” ์—ฌ๋Ÿฌ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค...

โš ๏ธ Naive RAG์˜ ํ•œ๊ณ„

ํ•ญ๋ชฉ ๋ฌธ์ œ์ 
์ธ๋ฑ์‹ฑ PDF๋‚˜ ๋ณด๊ณ ์„œ ๊ฐ™์€ ๋ฌธ์„œ๋ฅผ ์ œ๋Œ€๋กœ ํŒŒ์‹ฑ ๋ชป ํ•ด์„œ ์ •๋ณด๊ฐ€ ์œ ์‹ค๋จ
๊ฒ€์ƒ‰ ์ค‘๋ณต๋œ ๋‚ด์šฉ๋งŒ ๋‚˜์˜ค๊ฑฐ๋‚˜, ์ค‘์š”ํ•œ ๋‚ด์šฉ์„ ๋ชป ์ฐพ๋Š” ๊ฒฝ์šฐ ๋งŽ์Œ
์ƒ์„ฑ LLM์ด ์ž˜๋ชป๋œ ๋ฌธ๋งฅ์„ ๋ฐ›์•„์„œ ์˜ค๋‹ต์„ ๋‚ด๊ฑฐ๋‚˜ ํŽธํ–ฅ๋œ ์ •๋ณด ์ƒ์„ฑ
ํŠนํžˆ ๊ฒ€์ƒ‰์ด ๋ถ€์ •ํ™•ํ•˜๋ฉด,
์•„๋ฌด๋ฆฌ ์ข‹์€ LLM์„ ์จ๋„ ์ด์ƒํ•œ ๋‹ต๋ณ€์ด ๋‚˜์˜ค๊ฒŒ ๋˜๋”๋ผ๊ณ ์š” ๐Ÿ˜ญ

๐ŸŒŸ ๊ทธ๋ž˜์„œ ๋“ฑ์žฅํ•œ Advanced RAG

Advanced RAG๋Š” Naive RAG์˜ ๋‹จ์ ์„ ๋ณด์™„ํ•œ ๊ตฌ์กฐ์˜ˆ์š”.
์ „์ฒด ๊ณผ์ •์„ ๋‹ค์Œ 4๋‹จ๊ณ„๋กœ ๋‚˜๋ˆ„๊ณ , ๊ฐ ๋‹จ๊ณ„๋งˆ๋‹ค ์ตœ์ ํ™” ๊ธฐ๋ฒ•์„ ์ ์šฉํ•ฉ๋‹ˆ๋‹ค.

Advanced RAG์˜ 4๋‹จ๊ณ„ ๊ตฌ์กฐ
Pre-Retrieval: ๊ฒ€์ƒ‰ ์ „ ์ค€๋น„ (๋ฌธ์„œ ํŒŒ์‹ฑ, ์ฟผ๋ฆฌ ์ •๋ฆฌ ๋“ฑ)

Retrieval: ๊ฒ€์ƒ‰ ์ตœ์ ํ™” (ํ•˜์ด๋ธŒ๋ฆฌ๋“œ, ์ž„๋ฒ ๋”ฉ ํŠœ๋‹ ๋“ฑ)

Post-Retrieval: ๊ฒฐ๊ณผ ์••์ถ•, ์žฌ์ •๋ ฌ, ํ•„ํ„ฐ๋ง

Generation: ๋‹ต๋ณ€ ์ƒ์„ฑ ์ตœ์ ํ™” (๋‹ค์ค‘ ์ƒ์„ฑ, ์š”์•ฝ ๋“ฑ)

๐Ÿ” 1๋‹จ๊ณ„: Pre-Retrieval

๐Ÿงพ PDF ํŒŒ์‹ฑ
PDF๋Š” ๋‹จ์ˆœํ•œ ํ…์ŠคํŠธ๊ฐ€ ์•„๋‹ˆ๋ผ
"์–ด๋””์— ์–ด๋–ป๊ฒŒ ์ถœ๋ ฅํ• ์ง€๋ฅผ ์ง€์‹œํ•˜๋Š” ๋ช…๋ น์–ด ๋ฉ์–ด๋ฆฌ"์— ๊ฐ€๊น์Šต๋‹ˆ๋‹ค.

๊ทธ๋ž˜์„œ ๊ทธ๋ƒฅ ํ…์ŠคํŠธ๋กœ ์ถ”์ถœํ•˜๋ฉด
๋ฌธ๋‹จ, ํ‘œ, ๊ทธ๋ฆผ์ด ๋‹ค ๊นจ์ง€๊ฑฐ๋‚˜ ์ค„๋ฐ”๊ฟˆ์ด ์—‰๋ง์ด ๋˜์ฃ .

๐Ÿ’ก ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•:

pypdf: ๋ฃฐ ๊ธฐ๋ฐ˜ ํŒŒ์„œ, ๊ฐ„๋‹จํ•˜์ง€๋งŒ ๊ตฌ์กฐ ์ธ์‹ ์–ด๋ ค์›€

Unstructured, LayoutParser: ๋”ฅ๋Ÿฌ๋‹ ๊ธฐ๋ฐ˜, ํ‘œ/๋ฌธ๋‹จ ์ธ์‹ ๊ฐ€๋Šฅ

PP-StructureV2: ๋ฌธ์„œ ์•ˆ์˜ ํ•ต์‹ฌ ์ •๋ณด๊นŒ์ง€ ์ถ”์ถœ

โœ๏ธ ์ฟผ๋ฆฌ ์žฌ์ž‘์„ฑ

์‚ฌ์šฉ์ž ์งˆ๋ฌธ์ด ์• ๋งคํ•˜๊ฑฐ๋‚˜ ์—ฌ๋Ÿฌ ์ฃผ์ œ๋ฅผ ์„ž์–ด์„œ ๋ฌป๋Š” ๊ฒฝ์šฐ,
๊ทธ๋Œ€๋กœ ๊ฒ€์ƒ‰ํ•˜๋ฉด ์ •ํ™•ํ•œ ๊ฒฐ๊ณผ๋ฅผ ๋ชป ์ฐพ๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์•„์š”.

๐Ÿ’ก ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•:

Step-Back Prompting: ์งˆ๋ฌธ์„ ๋” ์ผ๋ฐ˜ํ™”ํ•ด์„œ ๊ฒ€์ƒ‰

HyDE: ์งˆ๋ฌธ์œผ๋กœ ๊ฐ€์ƒ ๋ฌธ์„œ๋ฅผ ์ƒ์„ฑ โ†’ ์ž„๋ฒ ๋”ฉ ํ›„ ๊ฒ€์ƒ‰

Query2Doc: LLM์ด ๋ฌธ์„œ์ฒ˜๋Ÿผ ์žฌ์ž‘์„ฑํ•ด์„œ ๊ฒ€์ƒ‰ ํšจ์œจ โ†‘

ITER-RETGEN: ์ƒ์„ฑ๊ณผ ๊ฒ€์ƒ‰์„ ๋ฐ˜๋ณตํ•ด์„œ ๋” ์ •ํ™•ํ•œ ์ •๋ณด ํš๋“

๐Ÿ”— ๋ฌธ๋งฅ ํ™•์žฅ
ํ•˜๋‚˜์˜ ๋ฌธ์žฅ๋งŒ ๊ฒ€์ƒ‰๋˜๋ฉด ์ดํ•ดํ•˜๊ธฐ ์–ด๋ ต์ฃ .
๊ทธ๋ž˜์„œ ์•ž๋’ค ๋ฌธ์žฅ์„ ํ•จ๊ป˜ ๊ฐ€์ ธ์˜ค๊ฑฐ๋‚˜, ์ƒ์œ„ ๋ฌธ์„œ ๋‹จ์œ„๋กœ ๋ฌถ์–ด์„œ ์ „๋‹ฌํ•ด์š”.

Sentence Window Retrieval: ์•ž๋’ค k๊ฐœ ๋ฌธ์žฅ ํ•จ๊ป˜ ์ „์†ก

Parent Chunking: ์ฒญํฌ๋“ค์„ ์ƒ์œ„ ์˜๋ฏธ ๋‹จ์œ„๋กœ ๋ฌถ๊ธฐ

๐Ÿ”Ž 2๋‹จ๊ณ„: Retrieval (๊ฒ€์ƒ‰ ์ตœ์ ํ™”)

๐Ÿงฌ ํ•˜์ด๋ธŒ๋ฆฌ๋“œ ๊ฒ€์ƒ‰
ํ‚ค์›Œ๋“œ ๊ฒ€์ƒ‰ (BM25 ๋“ฑ) โ†’ ์ •ํ™•ํ•œ ๋‹จ์–ด ์ผ์น˜

์˜๋ฏธ ๊ธฐ๋ฐ˜ ๊ฒ€์ƒ‰ (๋ฒกํ„ฐ ์ž„๋ฒ ๋”ฉ) โ†’ ์œ ์‚ฌํ•œ ๋ฌธ๋งฅ ์ดํ•ด

๐Ÿ’ก ๋‘ ๊ฐ€์ง€๋ฅผ RRF (Reciprocal Rank Fusion)์œผ๋กœ ์กฐํ•ฉํ•ด์„œ
์ •ํ™•๋„์™€ ์ปค๋ฒ„๋ฆฌ์ง€๋ฅผ ๋™์‹œ์— ๋†’์ž…๋‹ˆ๋‹ค.

โœ‚๏ธ 3๋‹จ๊ณ„: Post-Retrieval (๊ฒฐ๊ณผ ์ •๋ฆฌ)

๐Ÿ”„ ๋ฆฌ๋žญํ‚น (Re-Ranking)
๊ฒ€์ƒ‰๋œ Top-K ์ฒญํฌ ์ค‘์—์„œ๋„
์ง„์งœ ์ค‘์š”ํ•œ ๊ฑธ ์œ„๋กœ ์˜ฌ๋ ค์ฃผ๋Š” ๊ณผ์ •์ž…๋‹ˆ๋‹ค.

bge-reranker, Cohere API

RankGPT: LLM ๊ธฐ๋ฐ˜์œผ๋กœ ์Šฌ๋ผ์ด๋”ฉ ์œˆ๋„์šฐ ๋ฐฉ์‹ ๋ฆฌ๋žญํ‚น

๐Ÿ“‰ ํ”„๋กฌํ”„ํŠธ ์••์ถ• (Prompt Compression)

LLM์—๊ฒŒ ๋„ฃ์„ ์ˆ˜ ์žˆ๋Š” ํ† ํฐ ์ˆ˜๋Š” ํ•œ๊ณ„๊ฐ€ ์žˆ์–ด์š”.
(์˜ˆ: GPT-3.5๋Š” ์•ฝ 4,000 tokens)

๐Ÿ’ก ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•:

Selective Context: ์ •๋ณด๋Ÿ‰ ๋งŽ์€ ๋ถ€๋ถ„๋งŒ ๋‚จ๊น€

LLMLingua, LongLLMLingua: ์˜๋ฏธ ๋‹จ์œ„๋กœ ์••์ถ•

AutoCompressor: soft prompt๋กœ ์š”์•ฝ ์ •๋ณด ์ „๋‹ฌ

RECOMP: ๋ฌธ์žฅ ๋‹จ์œ„๋กœ ์••์ถ• or ์š”์•ฝ ์ƒ์„ฑ

๐Ÿงผ ํ•„ํ„ฐ๋ง
ํ•„์š” ์—†๋Š” ๋ฌธ์„œ, ์ค‘๋ณต๋œ ๋‚ด์šฉ, ์‹ ๋ขฐ๋„ ๋‚ฎ์€ ์ •๋ณด๋Š” ์ œ๊ฑฐํ•ฉ๋‹ˆ๋‹ค.

FiD-TF, Self-RAG, CRAG ๋“ฑ์€
ํ† ํฐ ์ˆ˜์ค€์—์„œ ์ค‘์š”์„ฑ ํŒ๋‹จ ํ›„ ํ•„ํ„ฐ๋ง๊นŒ์ง€ ์ˆ˜ํ–‰ํ•ด์š”!

๐Ÿง  4๋‹จ๊ณ„: ์ƒ์„ฑ (Generation)

๋‹ค์–‘ํ•œ ์ƒ์„ฑ ๊ธฐ์ˆ ๋“ค
DSP: ์—ฌ๋Ÿฌ ์ฟผ๋ฆฌ โ†’ ์—ฌ๋Ÿฌ ๋ฌธ์„œ ๊ฒ€์ƒ‰ โ†’ ์ข…ํ•ฉํ•ด์„œ ์‘๋‹ต ์ƒ์„ฑ

PRCA: ๋ณด์ƒ ๊ธฐ๋ฐ˜ ํ•™์Šต์œผ๋กœ ๋” ๋‚˜์€ ์‘๋‹ต ์œ ๋„

REPLUG: ๊ฒ€์ƒ‰ ๊ฒฐ๊ณผ๋ฅผ ๊ทธ๋Œ€๋กœ LLM ์ž…๋ ฅ์— ์ถ”๊ฐ€

RECITE: ๋‹ค์–‘ํ•œ ๋‹ต๋ณ€ ์ƒ์„ฑ ํ›„ ๋‹ค์ˆ˜๊ฒฐ๋กœ ์ตœ์ข… ์‘๋‹ต ์„ ํƒ

๐Ÿง‘โ€๐Ÿ’ป ๊ธฐํƒ€ ๊ณ ๊ธ‰ ๊ตฌ์„ฑ

๐Ÿ—จ๏ธ Chat Engine
๋Œ€ํ™”ํ˜•์—์„œ๋Š” ์ด์ „ ๋Œ€ํ™” ๋‚ด์šฉ์„ ์ž๋™ ์š”์•ฝํ•ด์„œ ์ฟผ๋ฆฌ์— ๋ฐ˜์˜ํ•ด์•ผ ํ•ด์š”.
์˜ˆ: ContextChatEngine, CondensePlusContextMode

๐Ÿค– Agent ๊ตฌ์กฐ

๋ฌธ์„œ๋งˆ๋‹ค ์š”์•ฝ/์งˆ์˜์‘๋‹ต ์ „๋‹ด Agent๋ฅผ ๋งŒ๋“ค๊ณ ,
Top Agent๊ฐ€ ์ „์ฒด ํ†ต์ œ โ†’ ์งˆ๋ฌธ์„ ๊ฐ Agent์— ์ „๋‹ฌํ•˜๊ณ  ์‘๋‹ต์„ ์ข…ํ•ฉ!

๐Ÿ”ง ๋ชจ๋ธ ํŠœ๋‹

GPT-4๋กœ ์งˆ๋ฌธ-์‘๋‹ต ๋ฐ์ดํ„ฐ ๋งŒ๋“ค๊ณ  โ†’ GPT-3.5์— ํŒŒ์ธํŠœ๋‹

RA-DIT: Retriever + Generator๋ฅผ ๋™์‹œ์— ํ•™์Šต์‹œ์ผœ ์„ฑ๋Šฅ โ†‘

โœ… ํ‰๊ฐ€๋„ ์ค‘์š”ํ•ด์š”!

์ž˜ ์ž‘๋™ํ•˜๋Š” RAG์ธ์ง€ ์–ด๋–ป๊ฒŒ ์•Œ ์ˆ˜ ์žˆ์„๊นŒ์š”?

  1. Ragas: ์ •๋‹ต์„ฑ, ๊ฒ€์ƒ‰ ์ •ํ™•๋„, ์‘๋‹ต ์ ์ ˆ์„ฑ ์ธก์ •

  2. LangSmith: ์ฒด์ธ ๋‚ด ํ–‰๋™ ์ถ”์ 

  3. OpenAI Cookbook: ํ‰๊ฐ€ ๊ธฐ์ค€๋ณ„ ํ…Œ์ŠคํŠธ ์Šคํฌ๋ฆฝํŠธ ์ œ๊ณต

์ฐธ๊ณ ์ž๋ฃŒ: [ https://medium.com/@vipra_singh/building-llm-applications-advanced-rag-part-10-ec0fe735aeb1 ]

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