LlamaIndex๐Ÿฆ™์™€ RAG์˜ ๊ธฐ๋ณธ ๊ฐœ๋…

์ตœ๊ทผ์— LLM์„ ์ด์šฉํ•˜์—ฌ ๋กœ์ปฌ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฒ€์ƒ‰ํ•˜๋Š” ์„œ๋น„์Šค๋ฅผ ๋งŒ๋“œ๋Š” ํ”„๋กœ์ ํŠธ๋ฅผ ํ•˜๋‚˜ ์ง„ํ–‰ํ–ˆ์Šต๋‹ˆ๋‹ค. OpenAI API๋ฅผ ํ™œ์šฉํ•ด ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋ฉด ๋˜๋Š” ๊ฐ„๋‹จํ•œ ํ”„๋กœ์ ํŠธ์˜€๋Š”๋ฐ์š”. LLM ์•ก์„ธ์Šค ๋„๊ตฌ๋Š” ์ง์ ‘ ๊ตฌ์ถ•ํ•˜๊ธฐ ๋ณด๋‹จ LlamaIndex๋ฅผ ์‚ฌ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ ๋‚ด์šฉ์„ ๊ฐ„๋žตํ•˜๊ฒŒ ์†Œ๊ฐœํ•ฉ๋‹ˆ๋‹ค.

LlamaIndex

LlamaIndex๋Š” LLM ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์œ„ํ•œ ๋ฐ์ดํ„ฐ ํ”„๋ ˆ์ž„์›Œํฌ์ž…๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๊ฐ€ LLM์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ฌด์–ธ๊ฐ€ ์ž‘์—…์„ ์ฒ˜๋ฆฌํ•  ๋•Œ LLM ๋ชจ๋ธ ์ž์ฒด๊ฐ€ ํ•™์Šตํ•œ ๋ฐ์ดํ„ฐ๋งŒ์œผ๋กœ๋Š” ๋ถ€์กฑํ•œ ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์ฃ . ์ด๋Ÿด ๋• ์ปค์Šคํ…€ ๋ฐ์ดํ„ฐ๋ฅผ LLM์— ์ถ”๊ฐ€๋กœ ์ž…๋ ฅํ•˜์—ฌ ์ฒ˜๋ฆฌ๋ฅผ ํ•˜๊ฒŒ ๋˜๋Š”๋ฐ์š”.

์ด๋Ÿด ๋•Œ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์ด 1) ํŒŒ์ธํŠœ๋‹(fine-tuning)๊ณผ 2) ํ”„๋กฌํ”„ํŠธ ์—”์ง€๋‹ˆ์–ด๋ง(prompt engineering) ์ด์ฃ . OpenAI์—์„œ๋„ ์ตœ๊ทผ GPT-3.5 Turbo ๋ชจ๋ธ์— ๋Œ€ํ•œ ํŒŒ์ธํŠœ๋‹ ์„œ๋น„์Šค๋ฅผ ์˜คํ”ˆํ•˜๊ธด ํ–ˆ์ง€๋งŒ, ๋ถˆ๊ณผ ์–ผ๋งˆ ์ „๊นŒ์ง€๋งŒ ํ•ด๋„ ํŒŒ์ธํŠœ๋‹์„ ํ•  ์ˆ˜ ์—†์–ด ๊ฒฐ๊ตญ ํ”„๋กฌํ”„ํŠธ์— ์˜์กดํ•˜๋Š” ๋ฐฉ๋ฒ• ๋ฐ–์— ์—†์—ˆ์ฃ .

์ด๋Ÿด ๋•Œ ์ปค์Šคํ…€ ๋ฐ์ดํ„ฐ๋ฅผ ํ”„๋กฌํ”„ํŠธ์— ์ถ”๊ฐ€ ์ปจํ…์ŠคํŠธ(context)๋กœ ์ž…๋ ฅํ•˜์—ฌ LLM ๋ชจ๋ธ ์•ก์„ธ์Šค์˜ ๊ฒฐ๊ณผ ํ’ˆ์งˆ์„ ํ–ฅ์ƒ์‹œํ‚ค๊ฒŒ ๋˜๋Š”๋ฐ์š”. LlamaIndex๊ฐ€ ๋ฐ”๋กœ ์ด ์šฉ๋„์— ๋งž์ถ˜ ํ”„๋ ˆ์ž„์›Œํฌ๋ผ๊ณ  ๋ณด๋ฉด ๋ฉ๋‹ˆ๋‹ค.

RAG(Retrieval Augmented Generation)

์ด๋ ‡๊ฒŒ ํ”„๋กฌํ”„ํŠธ๋ฅผ ํ†ตํ•ด ์ปจํ…์ŠคํŠธ ์ •๋ณด๋ฅผ ์ถ”๊ฐ€ํ•จ์œผ๋กœ์จ LLM ๋ชจ๋ธ์˜ ๊ฒฐ๊ณผ ํ’ˆ์งˆ์„ ๋†’์ด๋Š” ๊ฒƒ์„ RAG(Retrieval Augmented Generation)์ด๋ผ๊ณ  ๋ถ€๋ฅด๋Š”๋ฐ์š”. ์šฐ๋ฆฌ๋ง๋กœ ํ•˜๋ฉด โ€˜๊ฒ€์ƒ‰ ์ฆ๊ฐ• ์ƒ์„ฑโ€™ ์ฏค ๋˜๋ ค๋‚˜์š”?

์•”ํŠผ, RAG์€ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ํฌ๊ฒŒ 2๊ฐœ์˜ ๋‹จ๊ณ„๋กœ ๋‚˜๋‰ฉ๋‹ˆ๋‹ค.

  1. ์ธ๋ฑ์‹ฑ ์Šคํ…Œ์ด์ง€: ์ง€์‹๋ฒ ์ด์Šค(Knowledge Base)๋ฅผ ์ค€๋น„ํ•˜๋Š” ๋‹จ๊ณ„
  2. ์ฟผ๋ฆฌ ์Šคํ…Œ์ด์ง€: ์ง€์‹๋ฒ ์ด์Šค๋กœ ๋ถ€ํ„ฐ ์ถ”์ถœํ•œ ์ปจํ…์ŠคํŠธ(Context)๋ฅผ ํ™œ์šฉํ•ด LLM์— ์งˆ์˜ํ•˜๋Š” ๋‹จ๊ณ„

RAG ๊ตฌ์กฐ /๊ทธ๋ฆผ ์ถœ์ฒ˜: LlamaIndex ๋ฌธ์„œ

์ธ๋ฑ์‹ฑ ์Šคํ…Œ์ด์ง€(Indexing State)์—์„œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ž‘์—…์„ ํ•ฉ๋‹ˆ๋‹ค:

  • ๋ฐ์ดํ„ฐ ์†Œ์Šค๋กœ๋ถ€ํ„ฐ ๋ฐ์ดํ„ฐ๋ฅผ ๋กœ๋“œ
  • ๋กœ๋“œํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฌธ์„œ(Documents)๋กœ ๋ณ€ํ™˜
  • ๋ณ€ํ™˜ํ•œ ๋ฌธ์„œ์— ๋Œ€ํ•œ ์ƒ‰์ธ(Index) ์ƒ์„ฑ
  • (ํ•„์š”ํ•˜๋ฉด) ์ƒ‰์ธ์„ ์™ธ๋ถ€ ์ €์žฅ์†Œ์— ์ €์žฅ

ํ•œํŽธ ์ฟผ๋ฆฌ ์Šคํ…Œ์ด์ง€(Query State)์—์„œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ž‘์—…๋“ค์„ ํ•˜๊ฒŒ ๋˜์ฃ :

  • ์ƒ์„ฑ๋œ ์ƒ‰์ธ์œผ๋กœ๋ถ€ํ„ฐ ์งˆ์˜์— ๋งž๋Š” ์ปจํ…์ŠคํŠธ ์ถ”์ถœ
  • ์ถ”์ถœํ•œ ์ปจํ…์ŠคํŠธ๋ฅผ ํฌํ•จํ•˜์—ฌ LLM ์ฟผ๋ฆฌ
  • ์ฟผ๋ฆฌ ๊ฒฐ๊ณผ์˜ ์ฒ˜๋ฆฌ

์ด์— ๊ด€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ LlamaIndex ๋ฌธ์„œ์— ์ž˜ ๋‚˜์™€ ์žˆ์œผ๋‹ˆ ์—ฌ๊ธฐ์„œ๋Š” ์ƒ๋žตํ•˜๊ณ  ๊ทธ๋Ÿผ ์ง์ ‘ ๊ฐ„๋‹จํ•˜๊ฒŒ LlamaIndex๋กœ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ ์ž‘์—…์„ ํ•œ๋ฒˆ ํ•ด ๋ณผ๊นŒ์š”?

LlamaIndex๋กœ ์ปค์Šคํ…€ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ

์•ž์„œ ์†Œ๊ฐœํ–ˆ๋“ฏ ์ธ๋ฑ์‹ฑ ๋‹จ๊ณ„๋Š” ์ปค์Šคํ…€ ๋ฐ์ดํ„ฐ๋กœ๋ถ€ํ„ฐ LlamaIndex ์ƒ‰์ธ์„ ์ƒ์„ฑํ•˜๋Š” ๋‹จ๊ณ„์ธ๋ฐ์š”. ๊ธฐ๋ณธ์ ์ธ ์ฝ”๋“œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๊ฐ„๋‹จํ•ฉ๋‹ˆ๋‹ค.

from llama_index import VectorStoreIndex, SimpleDirectoryReader

documents = SimpleDirectoryReader('data').load_data()
index = VectorStoreIndex.from_documents(documents)

์œ„ ์ฝ”๋“œ๋Š” data ๋””๋ ‰ํ„ฐ๋ฆฌ ์†์— ๋“ค์–ด ์žˆ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ์–ด ๋ฌธ์„œ๋กœ ๋งŒ๋“  ๋‹ค์Œ ํ•ด๋‹น ๋ฌธ์„œ๋ฅผ ๋ฒกํ„ฐ ์Šคํ† ์–ด์— ์ €์žฅํ•˜๋Š” ๊ฒƒ์œผ๋กœ ๋๋‚ฉ๋‹ˆ๋‹ค. data ๋””๋ ‰ํ„ฐ๋ฆฌ ์†์—๋Š” ์˜ˆ๋ฅผ ๋“ค์–ด ๋‚ด๊ฐ€ ์ถ”๊ฐ€ํ•˜๋ ค๋Š” ์ปค์Šคํ…€ ๋ฐ์ดํ„ฐ๋ฅผ ํ…์ŠคํŠธ ํŒŒ์ผ ํ˜•์‹์œผ๋กœ ์ถ”๊ฐ€ํ•ด ๋‘๋ฉด ๋˜๊ตฌ์š”.

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

ํ˜„์žฌ๊นŒ์ง€์˜ ์ดˆ์ „๋„์ฒด๋Š” ์˜ํ•˜ 269๋„๋ถ€ํ„ฐ ์˜ํ•˜ 183๋„๊นŒ์ง€๋ผ๋Š” ๊ทน์ €์˜จ ํ™˜๊ฒฝ์—์„œ ์ดˆ์ „๋„ ํ˜„์ƒ์„ ๋ณด์˜€์Šต๋‹ˆ๋‹ค. 2019๋…„์—๋Š” ์˜ํ•˜ 23๋„, ์••๋ ฅ 1700์–ต Pa์—์„œ ์ดˆ์ „๋„ ํ˜„์ƒ์„ ๋ณด์ด๋Š” ๋ž€ํƒ€๋Š„ ์ˆ˜์†Œ ํ™”ํ•ฉ๋ฌผ ๋งŒ๋“ค๊ธฐ๋„ ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด๋•Œ์˜ ํ™˜๊ฒฝ์€ ์ดˆ๊ณ ์•• ํ™˜๊ฒฝ์ž…๋‹ˆ๋‹ค. 1๊ธฐ์••์ด 101325 Pa์ด๋‹ˆ๊นŒ ์ƒ์ƒํ•  ์ˆ˜ ์—†๋Š” ๋†’์€ ์••๋ ฅ์ž…๋‹ˆ๋‹ค.โ€จโ€จ๋งŒ์•ฝ ์ƒ์˜จ ์ƒ์••์—์„œ๋„ ์ดˆ์ „๋„์ฒด๋กœ ๋™์ž‘ํ•˜๋Š” ๋ฌผ์งˆ์ด ์ƒ๊ธด๋‹ค๋ฉด ์—๋„ˆ์ง€ ํ˜๋ช…์ด ์ผ์–ด๋‚  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ƒ์˜จ ์ƒ์•• ์ดˆ์ „๋„์ฒด๋ฅผ ๊ฐœ๋ฐœํ•œ ์‚ฌ๋žŒ์€ ์˜์‹ฌํ•  ๊ฒƒ ์—†์ด ๋…ธ๋ฒจ์ƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋ฏ€๋กœ 2023๋…„ 7์›”์— ๋Œ€ํ•œ๋ฏผ๊ตญ์—์„œ ์ƒ์˜จ, ์ƒ์••์˜ ์ดˆ์ „๋„์ฒด๋ฅผ ๋งŒ๋“ค์—ˆ๋‹ค๋Š” ๋‰ด์Šค๋Š” ์ถฉ๋ถ„ํžˆ ์„ธ์ƒ์„ ๋†€๋ผ๊ฒŒ ํ•  ๋งŒํ•ฉ๋‹ˆ๋‹ค. ๊ทธ ์ดˆ์ „๋„์ฒด๊ฐ€ ๋ฐ”๋กœ LK-99์ž…๋‹ˆ๋‹ค.

ํ€€ํ…€์—๋„ˆ์ง€ ์—ฐ๊ตฌ์†Œ๋Š” ๋…ผ๋ฌธ๊ณผ ํ•จ๊ป˜ ์ดˆ์ „๋„์ฒด๋ผ๊ณ  ์ฃผ์žฅํ•˜๋Š” LK-99์˜ ์˜์ƒ์„ ๊ณต๊ฐœํ–ˆ์Šต๋‹ˆ๋‹ค. ์ž์„ ์œ„์— ๋™์ „ ๋ชจ์–‘์˜ ๊ฒ€์€ ๋ฌผ์ฒด๊ฐ€ ๋น„์Šค๋“ฌํžˆ ๋“ค๋ ค ์žˆ์Šต๋‹ˆ๋‹ค. ์™„์ „ ๊ณต์ค‘๋ถ€์–‘์ด ์•„๋‹ˆ๋ผ ํ•œ์ชฝ ๋ฉด์ด ์ž์„์œ„์— ์‚ด์ง ๋‹ฟ์•„์žˆ๋Š”๋ฐ์š”. ์–ด์จŒ๊ฑฐ๋‚˜ ๋œจ๋‹ค์‹œํ”ผ ํ•œ ๋ชจ์Šต์€ ๋†€๋ž์Šต๋‹ˆ๋‹ค. ์ด ๋ฌผ์งˆ์ด ๋ฐ”๋กœ ์ดˆ์ „๋„์ฒด ๋ฌผ์งˆ์ด๋ผ๊ณ  ์ฃผ์žฅํ•˜๋Š” LK-99์ž…๋‹ˆ๋‹ค.โ€จโ€จ2028๋…„ 8์›” ํ˜„์žฌ ์„ธ๊ณ„์˜ ์œ ๋ช…ํ•œ ๋Œ€ํ•™๊ณผ ์—ฐ๊ตฌ์†Œ๋“ค์€ ์ƒ์˜จ ์ƒ์•• ์ดˆ์ „๋„์ฒด์ธ LK-99๋ฅผ ๊ฒ€์ฆํ•˜๊ณ  ์žˆ๋Š” ์ค‘์ž…๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ๋“ค์–ด ๋ฏธ๊ตญ์˜ ํ”„๋ฆฐ์Šคํ„ด ๋Œ€ํ•™, ๋…์ผ์˜ ๋ง‰์Šคํ”Œ๋ž‘ํฌ ์—ฐ๊ตฌ์†Œ๋Š” LK-99๊ฐ€ ํŠน์ดํ•œ ์„ฑ์งˆ์„ ๋ณด์˜€์ง€๋งŒ ์ดˆ์ „๋„์ฒด๋Š” ์•„๋‹Œ๋“ฏํ•˜๋‹ค๋Š” ๊ฒฐ๋ก ์„ ๋‚ด๋†“์•˜์Šต๋‹ˆ๋‹ค. LK-99๊ฐ€ ์ดˆ์ „๋„์ฒด๊ฐ€ ์•„๋‹ˆ๋‹ค๋ผ๊ณ  ๋‹จ์ •ํ•œ ๊ฒƒ์€ ์•„๋‹™๋‹ˆ๋‹ค. ๋‹ค๋งŒ ์—ฐ๊ตฌ์ž๋“ค์„ ์„ค๋“ํ•  ๋งŒํ•œ ์ถฉ๋ถ„ํ•œ ๋ฐ์ดํ„ฐ์™€ ์„ค๋ช…์ด ๋ถ€์กฑํ•˜๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋˜ ๋‹ค๋ฅธ ๊ณผํ•™์ž๋“ค์˜ ๊ฒ€์ฆ๊ฒฐ๊ณผ๊ฐ€ ๊ธฐ๋‹ค๋ ค์ง‘๋‹ˆ๋‹ค.

2023๋…„ 7์›” LK-99๋ผ๋Š” ์ดˆ์ „๋„์ฒด์— ๋Œ€ํ•œ ๋…ผ๋ฌธ์ด ์•„์นด์ด๋ธŒ์— ์˜ฌ๋ผ์™”๊ณ , ๊ทธ ์ดํ›„๋กœ ์ดˆ์ „๋„์ฒด ๋‰ด์Šค๊ฐ€ ๋œจ๊ฒ์Šต๋‹ˆ๋‹ค. LK-99๋ผ๋Š” ์ดˆ์ „๋„์ฒด ๊ฐœ๋ฐœ ๊ฐ€๋Šฅ์„ฑ์€ ์ดˆ์ „๋„์ฒด ํ™œ์šฉ ๋ถ„์•ผ๋กœ ๊ด€์‹ฌ์ด ๊ฐ”๊ณ , ์ฆ‰์‹œ ์ฃผ์‹์‹œ์žฅ์— ๊ทธ ๊ด€์‹ฌ์ด ๋ฐ˜์˜๋˜์—ˆ์Šต๋‹ˆ๋‹ค.โ€จโ€จ์˜ฌํ•ด ์‹œ์žฅ ์ตœ๋Œ€ ํ…Œ๋งˆ์ฃผ๋Š” ์ดˆ์ „๋„์ฒด ๊ด€๋ จ ์ฃผ์ž…๋‹ˆ๋‹ค. ์ดˆ์ „๋„์ฒด ์‘์šฉ๊ธฐ์ˆ ์„ ๊ฐ€์กŒ๋‹ค๋Š” ์–ด๋–ค ๊ธฐ์—…์€ 2023๋…„ 7์›”31์ผ๋ถ€ํ„ฐ ์ƒํ•œ๊ฐ€ 3ํšŒ๋กœ ์‚ฌํ˜๋งŒ์— 2๋ฐฐ๊ฐ€ ์˜ฌ๋ž์Šต๋‹ˆ๋‹ค. ๊ฑฐ๋ž˜์ •์ง€ ํ•˜๋ฃจ๊ฐ€ ์žˆ์—ˆ๊ณ , ๊ทธ ๋‹ค์Œ๋‚ ์—” ํ•˜ํ•œ๊ฐ€๋ฅผ ์ณ์„œ ๊ทธ์•ผ๋ง๋กœ ์ฃผ๊ฐ€๊ฐ€ ๋กค๋Ÿฌ์ฝ”์Šคํ„ฐ๋ฅผ ํƒ€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ฃผ์‹ํˆฌ์ž์— ๊ฐ๋ณ„ํ•œ ์ฃผ์˜๊ฐ€ ํ•„์š”ํ•ด ๋ณด์ž…๋‹ˆ๋‹ค.

ํ™•์ธ๋„ ํ• ๊ฒธ ์—ฐ์Šต ์‚ผ์•„ OpenAI Playground์—์„œ ํ€€ํ…€์—๋„ˆ์ง€ ์—ฐ๊ตฌ์†Œ์— ๋Œ€ํ•ด ํ•œ๋ฒˆ ๋ฌผ์–ด ๋ณด์ฃ .

๊ฒฐ๊ณผ๋Š” ๋ญ ๋งž๋Š” ๊ฑฐ ๊ฐ™๊ธฐ๊ณ  ํ•˜๊ณ  ํ™˜๊ฐ(hallucination) ๊ฐ™๊ธฐ๋„ ํ•˜๊ณ  ๊ทธ๋Ÿฌ๋„ค์š”.

๊ทธ๋Ÿผ ์ด๋ฒˆ์—” LlamaIndex๋ฅผ ์ด์šฉํ•ด RAG ์ฟผ๋ฆฌ๋ฅผ ํ•œ๋ฒˆ ์ˆ˜ํ–‰ํ•ด ๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ์•ž์—์„œ ์ฒ˜๋ฆฌํ•œ ์ธ๋ฑ์Šค๋ฅผ ํ™œ์šฉํ•˜์—ฌ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ฟผ๋ฆฌ๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

query_engine = index.as_query_engine()
response = query_engine.query("ํ€€ํ…€์—๋„ˆ์ง€ ์—ฐ๊ตฌ์†Œ์— ๋Œ€ํ•ด ๋งํ•ด์ค˜?")
print(response)
# => ํ€€ํ…€์—๋„ˆ์ง€ ์—ฐ๊ตฌ์†Œ๋Š” 2023๋…„ 7์›”์— ๋Œ€ํ•œ๋ฏผ๊ตญ์—์„œ ์ƒ์˜จ, ์ƒ์••์˜ ์ดˆ์ „๋„์ฒด๋ฅผ ๋งŒ๋“ค์—ˆ๋‹ค๋Š” ๋‰ด์Šค๋ฅผ ๋ฐœํ‘œํ•˜๊ธฐ ์ „๋ถ€ํ„ฐ ์ดˆ์ „๋„์ฒด ๊ด€๋ จ ์—ฐ๊ตฌ๋ฅผ ์ˆ˜ํ–‰ํ•˜๊ณ  ์žˆ๋Š” ์—ฐ๊ตฌ์†Œ์ž…๋‹ˆ๋‹ค. ๊ทธ๋“ค์€ ๋…ผ๋ฌธ๊ณผ ํ•จ๊ป˜ ์ดˆ์ „๋„์ฒด๋ผ๊ณ  ์ฃผ์žฅํ•˜๋Š” LK-99์˜ ์˜์ƒ์„ ๊ณต๊ฐœํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด ๋ฌผ์งˆ์ด ๋ฐ”๋กœ ์ดˆ์ „๋„์ฒด๋ผ๊ณ  ์ฃผ์žฅํ•˜๋Š” LK-99์ž…๋‹ˆ๋‹ค. ํ˜„์žฌ ์„ธ๊ณ„์˜ ์œ ๋ช…ํ•œ ๋Œ€ํ•™๊ณผ ์—ฐ๊ตฌ์†Œ๋“ค์€ ์ƒ์˜จ ์ƒ์•• ์ดˆ์ „๋„์ฒด์ธ LK-99๋ฅผ ๊ฒ€์ฆํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

์–ด๋–ค๊ฐ€์š”? ์ด๋ฒˆ์—” ๋ญ”๊ฐ€ ์ œ๋Œ€๋กœ ์•Œ๊ณ  ๋Œ€๋‹ตํ•˜๋Š” ๊ฒƒ ๊ฐ™์ฃ . ๊ทธ๋Ÿด ๋ฐ–์—์š”. ๋ฐฉ๊ธˆ ์ „ ์šฐ๋ฆฌ๊ฐ€ ์ž…๋ ฅํ•œ ๋ฐ์ดํ„ฐ๋ฅผ OpenAI๊ฐ€ ๋ฐ›์•„์„œ ์ฟผ๋ฆฌ ๊ฒฐ๊ณผ์— ํ™œ์šฉํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ์ •ํ™•ํ•œ ๋‚ด์šฉ์ด๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด๋ ‡๊ฒŒ ์ปค์Šคํ…€ ๋ฐ์ดํ„ฐ๋ฅผ ํ™œ์šฉํ•ด LLM ๋ชจ๋ธ์˜ ์ •ํ™•๋„๋ฅผ ๋†’์ด๋Š” ๊ฒŒ ๋ฐ”๋กœ LlmaIndex์—์„œ RAG์˜ ์—ญํ• ์ž…๋‹ˆ๋‹ค.

RAG์˜ ์ž‘๋™ ์›๋ฆฌ

LlamaIndex์— ๋Œ€ํ•œ ๋‚ด์šฉ์€ ์—ฌ๊ธฐ๊นŒ์ง€์ž…๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์—ฌ๊ธฐ์„œ ๋๋‚ด๋ฉด ์–ด๋”˜์ง€ ์กฐ๊ธˆ ๋ฐ‹๋ฐ‹ํ•˜์ฃ . ๊ทธ๋ž˜์„œ RAG์˜ ๋‚ด๋ถ€ ๊ตฌ์กฐ๋ฅผ ์ž ๊น ์‚ดํŽด๋ณด๋Š” ์‹œ๊ฐ„์„ ๊ฐ€์ ธ๋ณผ๊นŒ ํ•ฉ๋‹ˆ๋‹ค. ๊ด€์‹ฌ์žˆ๋Š” ๋ถ„๋งŒ ๋ณด์„ธ์š”.

์•ž์„œ๋„ ์‚ดํŽด๋ดค๋“ฏ LlamaIndex๋Š” ๋‚ด๋ถ€์ ์œผ๋กœ LLM๊ณผ ์—ฐ๋™ํ•˜์—ฌ ๋™์ž‘ํ•ฉ๋‹ˆ๋‹ค. LlamaIndex๋Š” ์—ฌ๋Ÿฌ LLM ๋ชจ๋ธ์„ ์ง€์›ํžˆ์ž๋งŒ ๊ธฐ๋ณธ์ ์œผ๋กœ๋Š” OpenAI์™€ ์—ฐ๋™ํ•˜๊ฒŒ ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค(๋””ํดํŠธ ๊ฐ’!).

์•„๋ž˜ ๊ทธ๋ฆผ์€ LlamaIndex์˜ ์›Œํฌํ”Œ๋กœ๋ฅผ ํ‘œํ˜„ํ•œ ๊ทธ๋ฆผ์ธ๋ฐ์š”.

๊ทธ๋ฆผ์—์„œ ๋ณด๋ฉด LlamaIndex๊ฐ€ RAG์„ ์ฒ˜๋ฆฌํ•˜๋Š” ๊ณผ์ •์—์„œ LLM(OpenAI)๊ณผ ์ ‘์†ํ•˜๋Š” ๋ถ€๋ถ„์€ ํฌ๊ฒŒ ์„ธ ๋ถ€๋ถ„์ž…๋‹ˆ๋‹ค.

โ‘  ์ƒ‰์ธ ์ƒ์„ฑ: ๋กœ์šฐ ๋ฐ์ดํ„ฐ๋ฅผ ์ž…๋ ฅ๋ฐ›์•„ ์ƒ‰์ธ์„ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด LlamaIndex๋Š” ์ž…๋ ฅ ๋ฐ์ดํ„ฐ๋ฅผ ํ† ํฐ ๋ฉ์–ด๋ฆฌ(chunk) ๋‹จ์œ„๋กœ ์ž˜๊ฒŒ ์ž๋ฅธ ๋‹ค์Œ ๊ทธ ํ† ํฐ ๋ฉ์–ด๋ฆฌ์— ๋Œ€ํ•œ ์ž„๋ฒ ๋”ฉ(embedding) ๋ฒกํ„ฐ๊ฐ’์„ ๊ตฌํ•ด ๊ทธ ๊ฐ’์„ ๋ฒกํ„ฐ ์ €์žฅ์†Œ์— ์ €์žฅํ•ฉ๋‹ˆ๋‹ค. ์ด ๋•Œ ์ž„๋ฒ ๋”ฉ ๋ฒกํ„ฐ๊ฐ’์„ ์–ป๊ธฐ ์œ„ํ•ด OpenAI Embeddings API๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. (๋””ํดํŠธ ๋ชจ๋ธ=text-embedding-ada-002)

โ‘ก ์ฟผ๋ฆฌ ๋ถ„์„: ๋ฒกํ„ฐ ์ €์žฅ์†Œ์— ์ €์žฅ๋œ ์ƒ‰์ธ์„ ๊ฒ€์ƒ‰ํ•˜๋ ค๋ฉด ์‚ฌ์šฉ์ž๊ฐ€ ์ž…๋ ฅํ•œ ์ฟผ๋ฆฌ ๋ฌธ์žฅ์„ ์•ž์„œ์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ์ž„๋ฒ ๋”ฉ ๊ฐ’์œผ๋กœ ๋ณ€ํ™˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด ๋•Œ๋„ ์—ญ์‹œ Embedings API๋ฅผ ์‚ฌ์šฉํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

โ‘ข LLM ์งˆ์˜: ๋งˆ์ง€๋ง‰์œผ๋กœ ์ƒ‰์ธ์—์„œ ์ถ”์ถœํ•œ ์ปจํ…์ŠคํŠธ๋ฅผ ์‚ฌ์šฉ์ž๊ฐ€ ์ž‘์„ฑํ•œ ์ฟผ๋ฆฌ์— ์ด์–ด ๋ถ™์—ฌ LLM์— ์ตœ์ข… ์งˆ์˜๋ฅผ ํ•ฉ๋‹ˆ๋‹ค. ์ด ๋•Œ๋Š” OpenAI Completions API๋ฅผ ์—”๋“œํฌ์ธํŠธ๋กœ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. (๋””ํดํŠธ ๋ชจ๋ธ=text-davinci-003)

์ด ๋งˆ์ง€๋ง‰ ๋‹จ๊ณ„์—์„œ LlamaIndex๊ฐ€ OpenAI์— ๋ณด๋‚ด๋Š” ํ”„๋กฌํ”„ํŠธ์˜ ๋‚ด์šฉ์€, ์•ž์„œ ์šฐ๋ฆฌ๊ฐ€ ์‚ฌ์šฉํ•œ ์งˆ์˜๋ฅผ ์˜ˆ๋กœ ๋“ค๋ฉด, ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

Context information is below.
---------------------
ํ˜„์žฌ๊นŒ์ง€์˜ ์ดˆ์ „๋„์ฒด๋Š” ์˜ํ•˜ 269๋„๋ถ€ํ„ฐ ์˜ํ•˜ 183๋„๊นŒ์ง€๋ผ๋Š” ๊ทน์ €์˜จ ํ™˜๊ฒฝ์—์„œ ์ดˆ์ „๋„ ํ˜„์ƒ์„ ๋ณด์˜€์Šต๋‹ˆ๋‹ค. 2019๋…„์—๋Š” ์˜ํ•˜ 23๋„, ์••๋ ฅ 1700์–ต Pa์—์„œ ์ดˆ์ „๋„ ํ˜„์ƒ์„ ๋ณด์ด๋Š” ๋ž€ํƒ€๋Š„ ์ˆ˜์†Œ ํ™”ํ•ฉ๋ฌผ ๋งŒ๋“ค๊ธฐ๋„ ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด๋•Œ์˜ ํ™˜๊ฒฝ์€ ์ดˆ๊ณ ์•• ํ™˜๊ฒฝ์ž…๋‹ˆ๋‹ค. 1๊ธฐ์••์ด 101325 Pa์ด๋‹ˆ๊นŒ ์ƒ์ƒํ•  ์ˆ˜ ์—†๋Š” ๋†’์€ ์••๋ ฅ์ž…๋‹ˆ๋‹ค.โ€จโ€จ๋งŒ์•ฝ ์ƒ์˜จ ์ƒ์••์—์„œ๋„ ์ดˆ์ „๋„์ฒด๋กœ ๋™์ž‘ํ•˜๋Š” ๋ฌผ์งˆ์ด ์ƒ๊ธด๋‹ค๋ฉด ์—๋„ˆ์ง€ ํ˜๋ช…์ด ์ผ์–ด๋‚  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ƒ์˜จ ์ƒ์•• ์ดˆ์ „๋„์ฒด๋ฅผ ๊ฐœ๋ฐœํ•œ ์‚ฌ๋žŒ์€ ์˜์‹ฌํ•  ๊ฒƒ ์—†์ด ๋…ธ๋ฒจ์ƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋ฏ€๋กœ 2023๋…„ 7์›”์— ๋Œ€ํ•œ๋ฏผ๊ตญ์—์„œ ์ƒ์˜จ, ์ƒ์••์˜ ์ดˆ์ „๋„์ฒด๋ฅผ ๋งŒ๋“ค์—ˆ๋‹ค๋Š” ๋‰ด์Šค๋Š” ์ถฉ๋ถ„ํžˆ ์„ธ์ƒ์„ ๋†€๋ผ๊ฒŒ ํ•  ๋งŒํ•ฉ๋‹ˆ๋‹ค. ๊ทธ ์ดˆ์ „๋„์ฒด๊ฐ€ ๋ฐ”๋กœ LK-99์ž…๋‹ˆ๋‹ค.

ํ€€ํ…€์—๋„ˆ์ง€ ์—ฐ๊ตฌ์†Œ๋Š” ๋…ผ๋ฌธ๊ณผ ํ•จ๊ป˜ ์ดˆ์ „๋„์ฒด๋ผ๊ณ  ์ฃผ์žฅํ•˜๋Š” LK-99์˜ ์˜์ƒ์„ ๊ณต๊ฐœํ–ˆ์Šต๋‹ˆ๋‹ค. ์ž์„ ์œ„์— ๋™์ „ ๋ชจ์–‘์˜ ๊ฒ€์€ ๋ฌผ์ฒด๊ฐ€ ๋น„์Šค๋“ฌํžˆ ๋“ค๋ ค ์žˆ์Šต๋‹ˆ๋‹ค. ์™„์ „ ๊ณต์ค‘๋ถ€์–‘์ด ์•„๋‹ˆ๋ผ ํ•œ์ชฝ ๋ฉด์ด ์ž์„์œ„์— ์‚ด์ง ๋‹ฟ์•„์žˆ๋Š”๋ฐ์š”. ์–ด์จŒ๊ฑฐ๋‚˜ ๋œจ๋‹ค์‹œํ”ผ ํ•œ ๋ชจ์Šต์€ ๋†€๋ž์Šต๋‹ˆ๋‹ค. ์ด ๋ฌผ์งˆ์ด ๋ฐ”๋กœ ์ดˆ์ „๋„์ฒด ๋ฌผ์งˆ์ด๋ผ๊ณ  ์ฃผ์žฅํ•˜๋Š” LK-99์ž…๋‹ˆ๋‹ค.โ€จโ€จ2028๋…„ 8์›” ํ˜„์žฌ ์„ธ๊ณ„์˜ ์œ ๋ช…ํ•œ ๋Œ€ํ•™๊ณผ ์—ฐ๊ตฌ์†Œ๋“ค์€ ์ƒ์˜จ ์ƒ์•• ์ดˆ์ „๋„์ฒด์ธ LK-99๋ฅผ ๊ฒ€์ฆํ•˜๊ณ  ์žˆ๋Š” ์ค‘์ž…๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ๋“ค์–ด ๋ฏธ๊ตญ์˜ ํ”„๋ฆฐ์Šคํ„ด ๋Œ€ํ•™, ๋…์ผ์˜ ๋ง‰์Šคํ”Œ๋ž‘ํฌ ์—ฐ๊ตฌ์†Œ๋Š” LK-99๊ฐ€ ํŠน์ดํ•œ ์„ฑ์งˆ์„ ๋ณด์˜€์ง€๋งŒ ์ดˆ์ „๋„์ฒด๋Š” ์•„๋‹Œ๋“ฏํ•˜๋‹ค๋Š” ๊ฒฐ๋ก ์„ ๋‚ด๋†“์•˜์Šต๋‹ˆ๋‹ค. LK-99๊ฐ€ ์ดˆ์ „๋„์ฒด๊ฐ€ ์•„๋‹ˆ๋‹ค๋ผ๊ณ  ๋‹จ์ •ํ•œ ๊ฒƒ์€ ์•„๋‹™๋‹ˆ๋‹ค. ๋‹ค๋งŒ ์—ฐ๊ตฌ์ž๋“ค์„ ์„ค๋“ํ•  ๋งŒํ•œ ์ถฉ๋ถ„ํ•œ ๋ฐ์ดํ„ฐ์™€ ์„ค๋ช…์ด ๋ถ€์กฑํ•˜๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋˜ ๋‹ค๋ฅธ ๊ณผํ•™์ž๋“ค์˜ ๊ฒ€์ฆ๊ฒฐ๊ณผ๊ฐ€ ๊ธฐ๋‹ค๋ ค์ง‘๋‹ˆ๋‹ค.

2023๋…„ 7์›” LK-99๋ผ๋Š” ์ดˆ์ „๋„์ฒด์— ๋Œ€ํ•œ ๋…ผ๋ฌธ์ด ์•„์นด์ด๋ธŒ์— ์˜ฌ๋ผ์™”๊ณ , ๊ทธ ์ดํ›„๋กœ ์ดˆ์ „๋„์ฒด ๋‰ด์Šค๊ฐ€ ๋œจ๊ฒ์Šต๋‹ˆ๋‹ค. LK-99๋ผ๋Š” ์ดˆ์ „๋„์ฒด ๊ฐœ๋ฐœ ๊ฐ€๋Šฅ์„ฑ์€ ์ดˆ์ „๋„์ฒด ํ™œ์šฉ ๋ถ„์•ผ๋กœ ๊ด€์‹ฌ์ด ๊ฐ”๊ณ , ์ฆ‰์‹œ ์ฃผ์‹์‹œ์žฅ์— ๊ทธ ๊ด€์‹ฌ์ด ๋ฐ˜์˜๋˜์—ˆ์Šต๋‹ˆ๋‹ค.โ€จโ€จ์˜ฌํ•ด ์‹œ์žฅ ์ตœ๋Œ€ ํ…Œ๋งˆ์ฃผ๋Š” ์ดˆ์ „๋„์ฒด ๊ด€๋ จ ์ฃผ์ž…๋‹ˆ๋‹ค. ์ดˆ์ „๋„์ฒด ์‘์šฉ๊ธฐ์ˆ ์„ ๊ฐ€์กŒ๋‹ค๋Š” ์–ด๋–ค ๊ธฐ์—…์€ 2023๋…„ 7์›”31์ผ๋ถ€ํ„ฐ ์ƒํ•œ๊ฐ€ 3ํšŒ๋กœ ์‚ฌํ˜๋งŒ์— 2๋ฐฐ๊ฐ€ ์˜ฌ๋ž์Šต๋‹ˆ๋‹ค. ๊ฑฐ๋ž˜์ •์ง€ ํ•˜๋ฃจ๊ฐ€ ์žˆ์—ˆ๊ณ , ๊ทธ ๋‹ค์Œ๋‚ ์—” ํ•˜ํ•œ๊ฐ€๋ฅผ
---------------------
Given the context information and not prior knowledge, answer the question: ํ€€ํ…€์—๋„ˆ์ง€ ์—ฐ๊ตฌ์†Œ์— ๋Œ€ํ•ด ๋งํ•ด์ค˜?

์—ฌ๊ธฐ์„œ๋Š” ์ž…๋ ฅํ•œ ์ปค์Šคํ…€ ๋ฐ์ดํ„ฐ์˜ ์–‘์ด ์ ์–ด ํ•˜๋‚˜์˜ ์ „์ฒด ๋ฐ์ดํ„ฐ๊ฐ€ ๋ชจ๋‘ ์ปจํ…์ŠคํŠธ๋กœ ํ”„๋กฌํ”„ํŠธ์— ํฌํ•จ๋˜์—ˆ์ง€๋งŒ ์‹ค์ œ๋กœ๋Š” ๋” ํฐ ๋‹จ์œ„์˜ ๋ฐ์ดํ„ฐ ์ค‘ ์ฒญํฌ๋กœ ๋‚˜๋‰œ ์ผ๋ถ€๋งŒ ์ปจํ…์ŠคํŠธ๋กœ ๋“ค์–ด๊ฐ€๊ฒŒ ๋˜๊ฒ ์ฃ . ์ด๊ฒŒ RAG์ด๊ณ  LlamaIndex๊ฐ€ ํ•˜๋Š” ์ฃผ๋œ ์ผ์ž…๋‹ˆ๋‹ค.

์—ฌ๊ธฐ๊นŒ์ง€ ์ฝ์–ด ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค! ๐Ÿ˜Š

Contact

์œ ์Šคํ’€ํŒจ๋Ÿฌ๋‹ค์ž„
03159 ์„œ์šธํŠน๋ณ„์‹œ ์ข…๋กœ๊ตฌ ์ข…๋กœ 33
๊ทธ๋ž‘์„œ์šธํƒ€์›Œ1, 7์ธต

+82 02 720 5059
Contact Us

Connect

Links

์œ ์Šคํ’€ํŒจ๋Ÿฌ๋‹ค์ž„์˜ ๋‹ค๋ฅธ ์‚ฌ์ดํŠธ๋“ค๋„ ๋งŒ๋‚˜ ๋ณด์„ธ์š”.

Usefulparadigm blog
WordPress ๊ฐ€์ด๋“œ
Landing Jekyll
Hello Gatsby