๊ฐœ๋ฐœ Code/์ธ๊ณต์ง€๋Šฅ A.I.

[Python][AI] RAG (Retrieval-Augmented Generation)๋ž€ ๋ฌด์—‡์ธ๊ฐ€?

5hr1rnp 2025. 2. 20. 20:45
๋ฐ˜์‘ํ˜•

Retrieval-Augmented Generation

์ตœ๊ทผ ์ธ๊ณต์ง€๋Šฅ(AI) ๋ชจ๋ธ์ด ๋ฐœ์ „ํ•˜๋ฉด์„œ ๋Œ€ํ™”ํ˜• AI, ์ฑ—๋ด‡, ๋ฌธ์„œ ์š”์•ฝ, ์ฝ”๋“œ ์ƒ์„ฑ ๋“ฑ ๋‹ค์–‘ํ•œ ๋ถ„์•ผ์—์„œ ์ž์—ฐ์–ด ์ฒ˜๋ฆฌ(NLP) ๊ธฐ์ˆ ์ด ํ™œ์šฉ๋˜๊ณ  ์žˆ๋‹ค. ํŠนํžˆ, ๋Œ€ํ˜• ์–ธ์–ด ๋ชจ๋ธ(LLM, Large Language Model)์˜ ์„ฑ๋Šฅ์ด ๊ธ‰๊ฒฉํžˆ ํ–ฅ์ƒ๋˜๋ฉด์„œ ์ƒ์„ฑํ˜• AI(Generative AI)์˜ ๊ฐ€๋Šฅ์„ฑ์ด ๋”์šฑ ํ™•๋Œ€๋˜๊ณ  ์žˆ๋‹ค. ํ•˜์ง€๋งŒ ์ด๋Ÿฌํ•œ ๋ชจ๋ธ์—๋„ ๋ช‡ ๊ฐ€์ง€ ํ•œ๊ณ„๊ฐ€ ์žˆ๋‹ค.

  1. ์‚ฌ์ „ ํ•™์Šต ๋ฐ์ดํ„ฐ์— ์˜์กด์ ์ž„ – LLM์€ ํ•™์Šต๋œ ๋ฐ์ดํ„ฐ ๋‚ด์—์„œ๋งŒ ์ •๋ณด๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ์Œ. ์ตœ์‹  ์ •๋ณด๋‚˜ ์™ธ๋ถ€ ๋ฌธ์„œ๋ฅผ ์ฆ‰๊ฐ ๋ฐ˜์˜ํ•˜๋Š” ๊ฒƒ์ด ์–ด๋ ค์›€
  2. ํ™˜๊ฐ(Hallucination) ๋ฌธ์ œ – ์กด์žฌํ•˜์ง€ ์•Š๋Š” ์ •๋ณด๋ฅผ ์ƒ์„ฑํ•  ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ์Œ
  3. ์ •ํ™•์„ฑ ๋ฐ ์‹ ๋ขฐ์„ฑ ๋ถ€์กฑ – ๋ชจ๋ธ์ด ์‚ฌ์‹ค๊ณผ ๋‹ค๋ฅธ ๋‚ด์šฉ์„ ํฌํ•จํ•  ์ˆ˜ ์žˆ์Œ

์ด๋Ÿฌํ•œ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ๋“ฑ์žฅํ•œ ๊ธฐ์ˆ ์ด ๋ฐ”๋กœ RAG(Retrieval-Augmented Generation)์ด๋‹ค.


RAG (Retrieval-Augmented Generation)๋ž€?


RAG๋Š” "๊ฒ€์ƒ‰ ๊ธฐ๋ฐ˜ ์ƒ์„ฑ" ๋˜๋Š” "๊ฒ€์ƒ‰ ์ฆ๊ฐ• ์ƒ์„ฑ"์œผ๋กœ ๋ฒˆ์—ญํ•  ์ˆ˜ ์žˆ์Œ. ๊ฐ„๋‹จํžˆ ๋งํ•˜๋ฉด, AI ๋ชจ๋ธ์ด ๋‹ต๋ณ€์„ ์ƒ์„ฑํ•˜๊ธฐ ์ „์— ์™ธ๋ถ€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋‚˜ ๋ฌธ์„œ๋ฅผ ๊ฒ€์ƒ‰(Retrieve)ํ•œ ํ›„, ์ด๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ๋‹ต๋ณ€์„ ์ƒ์„ฑ(Generate)ํ•˜๋Š” ๋ฐฉ์‹์ž„.

RAG์˜ ๋™์ž‘ ๋ฐฉ์‹

RAG๋Š” ํฌ๊ฒŒ ๋‘ ๊ฐ€์ง€ ๋‹จ๊ณ„๋กœ ๋™์ž‘ํ•จ.

  1. ๊ฒ€์ƒ‰ ๋‹จ๊ณ„ (Retrieval)
    • ์‚ฌ์šฉ์ž์˜ ์ž…๋ ฅ(Query)์„ ๋ถ„์„ํ•œ ํ›„, ๊ด€๋ จ๋œ ๋ฌธ์„œ๋‚˜ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฒ€์ƒ‰ํ•จ
    • ์ผ๋ฐ˜์ ์œผ๋กœ ๋ฒกํ„ฐ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค(Vector Database)๋‚˜ ๊ฒ€์ƒ‰ ์—”์ง„์„ ํ™œ์šฉํ•˜์—ฌ ๊ฐ€์žฅ ๊ด€๋ จ์„ฑ์ด ๋†’์€ ๋ฌธ์„œ๋ฅผ ๊ฐ€์ ธ์˜ด
  2. ์ƒ์„ฑ ๋‹จ๊ณ„ (Generation)
    • ๊ฒ€์ƒ‰๋œ ๋ฌธ์„œ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ AI๊ฐ€ ๋‹ต๋ณ€์„ ์ƒ์„ฑํ•จ
    • ๋‹จ์ˆœํžˆ ๊ฒ€์ƒ‰๋œ ๋‚ด์šฉ์„ ๋ณต์‚ฌํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ, LLM์ด ๋ฌธ๋งฅ์„ ์ดํ•ดํ•˜์—ฌ ์ตœ์ ์˜ ๋‹ต๋ณ€์„ ๋งŒ๋“ฆ

RAG ๊ตฌ์กฐ ๊ฐœ์š”

RAG์˜ ํ•ต์‹ฌ ์š”์†Œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Œ.

  • ์ฟผ๋ฆฌ(Query) ์ž…๋ ฅ → ์‚ฌ์šฉ์ž๊ฐ€ ์งˆ๋ฌธ์„ ์ž…๋ ฅ
  • ์ •๋ณด ๊ฒ€์ƒ‰(Retriever) → ์™ธ๋ถ€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ๊ด€๋ จ ์ •๋ณด ๊ฒ€์ƒ‰
  • LLM(Generator) → ๊ฒ€์ƒ‰๋œ ์ •๋ณด๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ ๋‹ต๋ณ€ ์ƒ์„ฑ
  • ์ตœ์ข… ์‘๋‹ต(Output) → ์‚ฌ์šฉ์ž์—๊ฒŒ ์ตœ์ ํ™”๋œ ์‘๋‹ต ์ œ๊ณต

์ด ๊ณผ์ •์—์„œ FAISS, Pinecone, Weaviate ๊ฐ™์€ ๋ฒกํ„ฐ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ํ™œ์šฉํ•˜์—ฌ ๋Œ€๊ทœ๋ชจ ๋ฌธ์„œ๋ฅผ ํšจ์œจ์ ์œผ๋กœ ๊ฒ€์ƒ‰ํ•  ์ˆ˜ ์žˆ์Œ.


RAG์˜ ์žฅ์ 


RAG๋Š” ๊ธฐ์กด LLM๋ณด๋‹ค ๋ช‡ ๊ฐ€์ง€ ์ค‘์š”ํ•œ ์žฅ์ ์„ ๊ฐ€์ง.

์ตœ์‹  ์ •๋ณด ๋ฐ˜์˜ ๊ฐ€๋Šฅ

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

์‹ ๋ขฐ๋„ ๋†’์€ ๋‹ต๋ณ€ ์ƒ์„ฑ

๋ชจ๋ธ์ด ์ •๋ณด๋ฅผ ์ถ”์ธกํ•ด์„œ ๋งŒ๋“ค์–ด๋‚ด๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ, ๊ฒ€์ƒ‰๋œ ๋ฌธ์„œ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ๋‹ต๋ณ€์„ ์ƒ์„ฑํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์‚ฌ์‹ค์— ๊ธฐ๋ฐ˜ํ•œ ์‘๋‹ต์ด ๊ฐ€๋Šฅํ•จ. ์ด๋Š” AI ๋ชจ๋ธ์˜ ์‹ ๋ขฐ์„ฑ์„ ํฌ๊ฒŒ ํ–ฅ์ƒ์‹œํ‚ด.

๋ชจ๋ธ ํฌ๊ธฐ์™€ ํ•™์Šต ๋น„์šฉ ์ ˆ๊ฐ

๋ชจ๋ธ ์ž์ฒด๋ฅผ ๊ณ„์†ํ•ด์„œ ํ•™์Šต์‹œํ‚ค์ง€ ์•Š์•„๋„, ์™ธ๋ถ€ ๋ฌธ์„œ๋ฅผ ์ฐธ์กฐํ•˜์—ฌ ์ตœ์‹  ์ •๋ณด๋ฅผ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ์Œ. ์ฆ‰, ๊ฑฐ๋Œ€ํ•œ ๋ชจ๋ธ์„ ํ•™์Šตํ•˜๋Š” ๋Œ€์‹  ์™ธ๋ถ€ ๊ฒ€์ƒ‰ ์‹œ์Šคํ…œ์„ ํ™œ์šฉํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ๋น„์šฉ์„ ์ค„์ผ ์ˆ˜ ์žˆ์Œ.

ํŠน์ • ๋„๋ฉ”์ธ์— ์ตœ์ ํ™” ๊ฐ€๋Šฅ

์˜๋ฃŒ, ๋ฒ•๋ฅ , ๊ธˆ์œต ๋“ฑ ํŠน์ • ๋„๋ฉ”์ธ์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ํฌํ•จํ•˜๋„๋ก ๊ฒ€์ƒ‰ ๊ณต๊ฐ„์„ ์ œํ•œํ•  ์ˆ˜ ์žˆ์Œ. ์ด๋ฅผ ํ†ตํ•ด ๋”์šฑ ์ •๋ฐ€ํ•œ ๋‹ต๋ณ€์ด ๊ฐ€๋Šฅํ•จ.


728x90
๋ฐ˜์‘ํ˜•

RAG vs ์ „ํ†ต์ ์ธ LLM ๋น„๊ต


 

๋น„๊ต ํ•ญ๋ชฉ ์ „ํ†ต์ ์ธ LLM RAG
์ตœ์‹  ์ •๋ณด ๋ฐ˜์˜ ๋ถˆ๊ฐ€๋Šฅ (ํ•™์Šต๋œ ๋ฐ์ดํ„ฐ๊นŒ์ง€๋งŒ ์‚ฌ์šฉ) ๊ฐ€๋Šฅ (์™ธ๋ถ€ ๋ฐ์ดํ„ฐ ๊ฒ€์ƒ‰)
์‹ ๋ขฐ๋„ ํ™˜๊ฐ ๊ฐ€๋Šฅ์„ฑ ์กด์žฌ ๊ฒ€์ƒ‰ ๊ธฐ๋ฐ˜์ด๋ฏ€๋กœ ์‹ ๋ขฐ๋„ ๋†’์Œ
ํ•™์Šต ๋น„์šฉ ์ง€์†์ ์ธ ์žฌํ•™์Šต ํ•„์š” ์™ธ๋ถ€ ๊ฒ€์ƒ‰ ํ™œ์šฉ์œผ๋กœ ๋น„์šฉ ์ ˆ๊ฐ
๋„๋ฉ”์ธ ํŠนํ™” ์–ด๋ ค์›€ ํŠน์ • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ํ™œ์šฉ ๊ฐ€๋Šฅ

 


RAG ํ™œ์šฉ ์‚ฌ๋ก€


ํ˜„์žฌ RAG๋Š” ๋‹ค์–‘ํ•œ ์‚ฐ์—…์—์„œ ํ™œ์šฉ๋˜๊ณ  ์žˆ

์ฑ—๋ด‡ ๋ฐ ๊ณ ๊ฐ ์ง€์› ์‹œ์Šคํ…œ

  • ๊ธฐ์—…์˜ ๊ณ ๊ฐ ์ง€์› ์ฑ—๋ด‡์ด ์‹ค์‹œ๊ฐ„์œผ๋กœ ์ตœ์‹  ๋ฌธ์„œ๋ฅผ ๊ฒ€์ƒ‰ํ•˜์—ฌ ๋‹ต๋ณ€์„ ์ œ๊ณตํ•จ
  • ๊ธˆ์œต, IT ์ง€์›, ์ „์ž์ƒ๊ฑฐ๋ž˜ ๊ณ ๊ฐ์„ผํ„ฐ ๋“ฑ์—์„œ ํ™œ์šฉ ๊ฐ€๋Šฅํ•จ

๋ฒ•๋ฅ  ๋ฐ ์˜๋ฃŒ AI

  • ๋ฒ•๋ฅ  ๋ฌธ์„œ, ํŒ๋ก€ ๊ฒ€์ƒ‰ ํ›„ ๊ฐ€์žฅ ์ ์ ˆํ•œ ๋‹ต๋ณ€์„ ์ œ๊ณตํ•จ
  • ์˜๋ฃŒ AI๊ฐ€ ๋…ผ๋ฌธ, ์ง„๋ฃŒ ๊ธฐ๋ก ๋“ฑ์„ ๊ฒ€์ƒ‰ํ•˜์—ฌ ์ •ํ™•ํ•œ ์ •๋ณด๋ฅผ ์ œ๊ณตํ•จ

์ฝ”๋“œ ์ƒ์„ฑ ๋ฐ ๋ฌธ์„œ ๊ฒ€์ƒ‰

  • ๊ฐœ๋ฐœ์ž ๋„๊ตฌ์—์„œ ๋ฌธ์„œ๋ฅผ ๊ฒ€์ƒ‰ํ•˜์—ฌ ์ฝ”๋“œ๋ฅผ ์ถ”์ฒœํ•จ
  • GitHub Copilot, Tabnine ๋“ฑ๊ณผ ์œ ์‚ฌํ•œ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ์Œ

๊ฒฐ๋ก 


RAG(Retrieval-Augmented Generation)๋Š” ๊ธฐ์กด LLM์˜ ํ•œ๊ณ„๋ฅผ ๋ณด์™„ํ•˜๋ฉด์„œ, ์ตœ์‹  ์ •๋ณด ๊ฒ€์ƒ‰ ๋ฐ ์‹ ๋ขฐ๋„ ๋†’์€ ์‘๋‹ต ์ƒ์„ฑ์ด ๊ฐ€๋Šฅํ•œ ๊ฐ•๋ ฅํ•œ ๊ธฐ์ˆ ์ž„. ํŠนํžˆ, ๋น ๋ฅด๊ฒŒ ๋ณ€ํ™”ํ•˜๋Š” ์ •๋ณด ํ™˜๊ฒฝ์—์„œ AI๊ฐ€ ์ตœ์‹  ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ˜์˜ํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ ๋งค์šฐ ์œ ์šฉํ•จ.

์•ž์œผ๋กœ AI ์ฑ—๋ด‡, ๊ฒ€์ƒ‰ ์—”์ง„, ๋ฒ•๋ฅ  ๋ฐ ์˜๋ฃŒ ๋ถ„์•ผ ๋“ฑ์—์„œ RAG์˜ ํ™œ์šฉ์ด ๋”์šฑ ํ™•๋Œ€๋  ๊ฒƒ์œผ๋กœ ์˜ˆ์ƒ๋จ. LLM์„ ํ™œ์šฉํ•˜๋Š” ํ”„๋กœ์ ํŠธ๋ฅผ ์ง„ํ–‰ํ•  ๊ฒฝ์šฐ, RAG๋ฅผ ์ ์šฉํ•˜๋ฉด ๋”์šฑ ์ •ํ™•ํ•˜๊ณ  ์‹ ๋ขฐ์„ฑ ์žˆ๋Š” AI ์‹œ์Šคํ…œ์„ ๊ตฌ์ถ•ํ•  ์ˆ˜ ์žˆ์Œ.


์š”์•ฝ


  • RAG๋Š” ๊ฒ€์ƒ‰(Retrieval) + ์ƒ์„ฑ(Generation) ๋ฐฉ์‹์„ ๊ฒฐํ•ฉํ•œ AI ๋ชจ๋ธ
  • ์™ธ๋ถ€ ๋ฌธ์„œ๋ฅผ ๊ฒ€์ƒ‰ํ•˜์—ฌ LLM์˜ ํ•œ๊ณ„๋ฅผ ๋ณด์™„ํ•จ
  • ์ตœ์‹  ์ •๋ณด ๋ฐ˜์˜, ์‹ ๋ขฐ๋„ ํ–ฅ์ƒ, ํ•™์Šต ๋น„์šฉ ์ ˆ๊ฐ ๊ฐ€๋Šฅ
  • ์ฑ—๋ด‡, ์˜๋ฃŒ, ๋ฒ•๋ฅ , ๊ฐœ๋ฐœ์ž ๋„๊ตฌ ๋“ฑ ๋‹ค์–‘ํ•œ ๋ถ„์•ผ์—์„œ ํ™œ์šฉ๋จ
๋ฐ˜์‘ํ˜•