๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
Project ESG+AI/Tech Basics

46์ผ์ฐจ. IT ๊ฐœ๋… ์ •๋ฆฌ

by GreenJin_S2 2025. 12. 16.

 

 

 

์ž๋ฐ”์—์„œ๋Š” ํŒŒ์ดํ”„๋ผ์ธ

LLM์—์„œ๋Š” ์ฒด์ธ


์ข‹์•„์š”! ๋ง์”€ํ•˜์‹  ์ž๋ฐ”(Java), ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ(JavaScript), ์Šคํ”„๋ง(Spring), Node.js๋Š” ๋ชจ๋‘ ํ”„๋กœ๊ทธ๋ž˜๋ฐ/์›น ๊ฐœ๋ฐœ์—์„œ ์ž์ฃผ ๋‚˜์˜ค๋Š” ์šฉ์–ด์ง€๋งŒ, ์„œ๋กœ ์—ญํ• ๊ณผ ์“ฐ์ž„์ด ๋‹ค๋ฆ…๋‹ˆ๋‹ค. ํ•˜๋‚˜์”ฉ ์‰ฝ๊ฒŒ ์ •๋ฆฌํ•ด ๋“œ๋ฆด๊ฒŒ์š”.


1๏ธโƒฃ ์ž๋ฐ”(Java)

  • ์ข…๋ฅ˜: ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด
  • ํŠน์ง•:
    • ๊ฐ์ฒด์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ(OOP) ์ง€์›
    • ํ•œ ๋ฒˆ ์ž‘์„ฑํ•˜๋ฉด ์—ฌ๋Ÿฌ ํ™˜๊ฒฝ์—์„œ ์‹คํ–‰ ๊ฐ€๋Šฅ (“Write Once, Run Anywhere”)
    • ๊ฐ•๋ ฅํ•œ ์•ˆ์ •์„ฑ๊ณผ ํ™•์žฅ์„ฑ์œผ๋กœ ๊ธฐ์—…์šฉ ๋ฐฑ์—”๋“œ ๊ฐœ๋ฐœ์— ๋งŽ์ด ์‚ฌ์šฉ
  • ์‚ฌ์šฉ ์‚ฌ๋ก€: ์€ํ–‰ ์‹œ์Šคํ…œ, ์ „์ž์ƒ๊ฑฐ๋ž˜ ์„œ๋ฒ„, ์•ˆ๋“œ๋กœ์ด๋“œ ์•ฑ ๋ฐฑ์—”๋“œ ๋“ฑ

2๏ธโƒฃ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ(JavaScript)

  • ์ข…๋ฅ˜: ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด
  • ํŠน์ง•:
    • ์›น ๋ธŒ๋ผ์šฐ์ €์—์„œ ์‹คํ–‰๋˜๋Š” ํ”„๋ก ํŠธ์—”๋“œ(ํด๋ผ์ด์–ธํŠธ)์šฉ ์–ธ์–ด
    • ๋™์ ์ธ ์›น ํŽ˜์ด์ง€ ๊ตฌํ˜„ ๊ฐ€๋Šฅ (๋ฒ„ํŠผ ํด๋ฆญ, ํ™”๋ฉด ์—…๋ฐ์ดํŠธ ๋“ฑ)
    • ์ตœ๊ทผ์—๋Š” Node.js ๋•๋ถ„์— ์„œ๋ฒ„ ๊ฐœ๋ฐœ๋„ ๊ฐ€๋Šฅ
  • ์‚ฌ์šฉ ์‚ฌ๋ก€: ์›น์‚ฌ์ดํŠธ UI, SPA(Single Page Application), ๋ธŒ๋ผ์šฐ์ € ๊ฒŒ์ž„, ์›น ์• ๋‹ˆ๋ฉ”์ด์…˜

๐Ÿ’ก ์ฃผ์˜: ์ž๋ฐ”์™€ ์ด๋ฆ„์ด ๋น„์Šทํ•˜์ง€๋งŒ ์™„์ „ํžˆ ๋‹ค๋ฅธ ์–ธ์–ด์ž…๋‹ˆ๋‹ค.


3๏ธโƒฃ ์Šคํ”„๋ง(Spring)

  • ์ข…๋ฅ˜: ํ”„๋ ˆ์ž„์›Œํฌ(Framework)
  • ํŠน์ง•:
    • ์ž๋ฐ” ๊ธฐ๋ฐ˜์˜ ์›น/๋ฐฑ์—”๋“œ ๊ฐœ๋ฐœ ํ”„๋ ˆ์ž„์›Œํฌ
    • ๊ฐœ๋ฐœ์ž๊ฐ€ ๋ฐ˜๋ณต์ ์œผ๋กœ ์ž‘์„ฑํ•ด์•ผ ํ•˜๋Š” ์ฝ”๋“œ(์„ค์ •, ๋ณด์•ˆ, DB ์—ฐ๋™ ๋“ฑ)๋ฅผ ์ค„์—ฌ์คŒ
    • ์•ˆ์ •์ ์ด๊ณ  ํ™•์žฅ์„ฑ์ด ์ข‹์•„ ๊ธฐ์—…์šฉ ์›น ์„œ๋น„์Šค์— ๋งŽ์ด ์‚ฌ์šฉ
  • ์ฃผ์š” ๊ตฌ์„ฑ:
    • Spring Boot: ๋น ๋ฅธ ์›น ์„œ๋น„์Šค ๊ตฌ์ถ• ์ง€์›
    • Spring Security: ์ธ์ฆ/์ธ๊ฐ€ ๊ด€๋ฆฌ
    • Spring Data: DB ์—ฐ๋™ ํŽธ๋ฆฌ

๐Ÿ’ก ์‰ฝ๊ฒŒ ๋งํ•˜๋ฉด: ์ž๋ฐ”๋กœ ์›น ์„œ๋ฒ„๋ฅผ ๋งŒ๋“ค ๋•Œ, ํŽธ๋ฆฌํ•˜๊ฒŒ ํ•ด์ฃผ๋Š” ๋„๊ตฌ ๋ชจ์Œ


4๏ธโƒฃ Node.js

  • ์ข…๋ฅ˜: ๋Ÿฐํƒ€์ž„ ํ™˜๊ฒฝ(Runtime Environment)
  • ํŠน์ง•:
    • ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋ฅผ ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ์•„๋‹Œ ์„œ๋ฒ„์—์„œ๋„ ์‹คํ–‰ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•ด์ฃผ๋Š” ํ™˜๊ฒฝ
    • ๋น„๋™๊ธฐ ์ฒ˜๋ฆฌ์™€ ์ด๋ฒคํŠธ ๊ธฐ๋ฐ˜ ๊ตฌ์กฐ๋กœ ์‹ค์‹œ๊ฐ„ ์„œ๋น„์Šค์— ๊ฐ•ํ•จ
    • npm(Node Package Manager)์„ ํ†ตํ•ด ๋‹ค์–‘ํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์‚ฌ์šฉ ๊ฐ€๋Šฅ
  • ์‚ฌ์šฉ ์‚ฌ๋ก€: ์ฑ„ํŒ… ์•ฑ, ์‹ค์‹œ๊ฐ„ ๊ฒŒ์ž„ ์„œ๋ฒ„, REST API ์„œ๋ฒ„

๐Ÿ’ก ์‰ฝ๊ฒŒ ๋งํ•˜๋ฉด: ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋กœ ์„œ๋ฒ„ ํ”„๋กœ๊ทธ๋žจ์„ ๋Œ๋ฆด ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ฃผ๋Š” ํ™˜๊ฒฝ


๐Ÿ”น ์ •๋ฆฌ ๋น„๊ต

๊ตฌ๋ถ„์ž๋ฐ”(Java)์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ(JavaScript)์Šคํ”„๋ง(Spring)Node.js
์œ ํ˜• ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด ํ”„๋ ˆ์ž„์›Œํฌ ๋Ÿฐํƒ€์ž„ ํ™˜๊ฒฝ
์‹คํ–‰ ํ™˜๊ฒฝ JVM ๋ธŒ๋ผ์šฐ์ € / Node.js ์ž๋ฐ” ์œ„์—์„œ ์‹คํ–‰ ์„œ๋ฒ„(Node.js ํ™˜๊ฒฝ)
์šฉ๋„ ๋ฐฑ์—”๋“œ, ์•ฑ ํ”„๋ก ํŠธ์—”๋“œ, ์„œ๋ฒ„ ์ž๋ฐ” ๊ธฐ๋ฐ˜ ์›น ๋ฐฑ์—”๋“œ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๊ธฐ๋ฐ˜ ์„œ๋ฒ„
ํŠน์ง• ์•ˆ์ •์ , ๊ฐ์ฒด์ง€ํ–ฅ ๋™์ , ์ธํ„ฐ๋ž™ํ‹ฐ๋ธŒ ๊ฐœ๋ฐœ ํŽธ์˜์„ฑ, ํ™•์žฅ์„ฑ ์‹ค์‹œ๊ฐ„ ์ฒ˜๋ฆฌ, ์ด๋ฒคํŠธ ๊ธฐ๋ฐ˜

 


 

๋žญ์ฒด์ธ(LangChain) ์ž…๋ฌธ๋ถ€ํ„ฐ ์‘์šฉ๊นŒ์ง€ - WikiDocs

 

-์˜ค๋Š˜ ๋‚ด์šฉ

 

 

์ปดํฌ๋„ŒํŠธ = ์ธ์Šคํ„ด์Šค (๊ฐ์ฒด)

์ปจํ…Œ์ด๋„ˆ = ๊ฐœ์ฒด

1๏ธโƒฃ ๊ฐ์ฒด(Object)

  • ์ •์˜: ํ”„๋กœ๊ทธ๋ž˜๋ฐ์—์„œ ์†์„ฑ๊ณผ ๋™์ž‘์„ ๊ฐ€์ง€๋Š” ์‹ค์ฒดํ™” ๊ฐ€๋Šฅํ•œ ๊ฐœ๋….
  • ์˜ˆ์‹œ: ์ž๋™์ฐจ๋ผ๋Š” ๊ฐœ๋… ์ž์ฒด๊ฐ€ ๊ฐ์ฒด.

2๏ธโƒฃ ์ธ์Šคํ„ด์Šค(Instance)

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

๐Ÿ’ก ์ •๋ฆฌ: ๊ฐ์ฒด = ์„ค๊ณ„๋„, ์ธ์Šคํ„ด์Šค = ์„ค๊ณ„๋„๋กœ ๋งŒ๋“  ์‹ค์ œ ๋ฌผ๊ฑด


3๏ธโƒฃ ์ปดํฌ๋„ŒํŠธ(Component)

  • ์ •์˜: ์žฌ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ UI ์š”์†Œ๋‚˜ ํ”„๋กœ๊ทธ๋žจ ๋‹จ์œ„.
  • ๋ณดํ†ต ํ•˜๋‚˜์˜ ๊ธฐ๋Šฅ ๋‹จ์œ„๋ฅผ ๊ฐ€์ง.
  • ์˜ˆ์‹œ: ๋ฒ„ํŠผ, ๋ฉ”๋‰ด๋ฐ”, ์นด๋“œ UI, ์ง€๋„ ์œ„์ ฏ ๋“ฑ
  • React, Vue, Angular ๊ฐ™์€ ํ”„๋ก ํŠธ์—”๋“œ ํ”„๋ ˆ์ž„์›Œํฌ์—์„œ ๋งŽ์ด ์‚ฌ์šฉ๋จ.

๐Ÿ’ก ํŠน์ง•:

  • ์ž์ฒด์ ์œผ๋กœ ์ƒํƒœ(state)์™€ ์†์„ฑ(props)์„ ๊ฐ€์งˆ ์ˆ˜ ์žˆ์Œ.
  • ๋‹ค๋ฅธ ์ปดํฌ๋„ŒํŠธ ์•ˆ์— ๋“ค์–ด๊ฐˆ ์ˆ˜๋„ ์žˆ์Œ (์ค‘์ฒฉ ๊ฐ€๋Šฅ).
  • ์ปดํฌ๋„ŒํŠธ ์ž์ฒด๋„ ๊ฐ์ฒด์ด๋ฏ€๋กœ ์ธ์Šคํ„ด์Šค๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Œ.

4๏ธโƒฃ ์ปจํ…Œ์ด๋„ˆ(Container)

  • ์ •์˜: ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์ปดํฌ๋„ŒํŠธ๋‚˜ ๊ฐ์ฒด๋ฅผ ํฌํ•จํ•˜๊ณ  ๊ด€๋ฆฌํ•˜๋Š” ๋‹จ์œ„.
  • UI๋‚˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ตฌ์กฐ์—์„œ ์กฐ์ง/๊ด€๋ฆฌ ์—ญํ• ์„ ํ•จ.
  • ์˜ˆ์‹œ:
    • ์›น ํŽ˜์ด์ง€์—์„œ ์—ฌ๋Ÿฌ ์นด๋“œ ์ปดํฌ๋„ŒํŠธ๋ฅผ ๋‹ด๊ณ  ์žˆ๋Š” ๊ทธ๋ฆฌ๋“œ ๋ ˆ์ด์•„์›ƒ
    • Redux ๊ฐ™์€ ์ƒํƒœ ๊ด€๋ฆฌ์—์„œ ์Šคํ† ์–ด(Store)

๐Ÿ’ก ์ •๋ฆฌ:

  • ์ปจํ…Œ์ด๋„ˆ๋Š” ๋‚ด๋ถ€์— ์—ฌ๋Ÿฌ ์ปดํฌ๋„ŒํŠธ(๋˜๋Š” ๊ฐ์ฒด/์ธ์Šคํ„ด์Šค)๋ฅผ ๋‹ด๊ณ  ์žˆ๋Š” ํฐ ๋‹จ์œ„

 

invoke

batch

 

 

1. ๊ธฐ๋ณธ LLM ์ฒด์ธ์˜ ๊ตฌ์„ฑ ์š”์†Œ

  1. ํ”„๋กฌํ”„ํŠธ(Prompt): ์‚ฌ์šฉ์ž ๋˜๋Š” ์‹œ์Šคํ…œ์—์„œ ์ œ๊ณตํ•˜๋Š” ์ž…๋ ฅ์œผ๋กœ, LLM์—๊ฒŒ ํŠน์ • ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋„๋ก ์š”์ฒญํ•˜๋Š” ์ง€์‹œ๋ฌธ์ž…๋‹ˆ๋‹ค. ํ”„๋กฌํ”„ํŠธ๋Š” ์งˆ๋ฌธ, ๋ช…๋ น, ๋ฌธ์žฅ ์‹œ์ž‘ ๋ถ€๋ถ„ ๋“ฑ ๋‹ค์–‘ํ•œ ํ˜•ํƒœ๋ฅผ ์ทจํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, LLM์˜ ์‘๋‹ต์„ ์œ ๋„ํ•˜๋Š” ๋ฐ ์ค‘์š”ํ•œ ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค.
  2. LLM(Large Language Model): GPT, Gemini ๋“ฑ ๋Œ€๊ทœ๋ชจ ์–ธ์–ด ๋ชจ๋ธ๋กœ, ๋Œ€๋Ÿ‰์˜ ํ…์ŠคํŠธ ๋ฐ์ดํ„ฐ์—์„œ ํ•™์Šตํ•˜์—ฌ ์–ธ์–ด๋ฅผ ์ดํ•ดํ•˜๊ณ  ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๋Š” ์ธ๊ณต์ง€๋Šฅ ์‹œ์Šคํ…œ์ž…๋‹ˆ๋‹ค. LLM์€ ํ”„๋กฌํ”„ํŠธ๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ ์ ์ ˆํ•œ ์‘๋‹ต์„ ์ƒ์„ฑํ•˜๊ฑฐ๋‚˜, ์ฃผ์–ด์ง„ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

1-1-2. LangChain ํ”„๋ ˆ์ž„์›Œํฌ์˜ ๊ตฌ์„ฑ

  1. ๋žญ์ฒด์ธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ(LangChain Libraries): ํŒŒ์ด์ฌ๊ณผ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ํฌํ•จํ•˜๋ฉฐ, ๋‹ค์–‘ํ•œ ์ปดํฌ๋„ŒํŠธ์˜ ์ธํ„ฐํŽ˜์ด์Šค์™€ ํ†ตํ•ฉ, ์ด ์ปดํฌ๋„ŒํŠธ๋“ค์„ ์ฒด์ธ๊ณผ ์—์ด์ „ํŠธ๋กœ ๊ฒฐํ•ฉํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋ณธ ๋Ÿฐํƒ€์ž„, ๊ทธ๋ฆฌ๊ณ  ์ฒด์ธ๊ณผ ์—์ด์ „ํŠธ์˜ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๊ตฌํ˜„์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.
  2. ๋žญ์ฒด์ธ ํ…œํ”Œ๋ฆฟ(LangChain Templates): ๋‹ค์–‘ํ•œ ์ž‘์—…์„ ์œ„ํ•œ ์‰ฝ๊ฒŒ ๋ฐฐํฌํ•  ์ˆ˜ ์žˆ๋Š” ์ฐธ์กฐ ์•„ํ‚คํ…์ฒ˜ ๋ชจ์Œ์ž…๋‹ˆ๋‹ค. ์ด ํ…œํ”Œ๋ฆฟ์€ ๊ฐœ๋ฐœ์ž๋“ค์ด ํŠน์ • ์ž‘์—…์— ๋งž์ถฐ ๋น ๋ฅด๊ฒŒ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๊ตฌ์ถ•ํ•  ์ˆ˜ ์žˆ๋„๋ก ๋•์Šต๋‹ˆ๋‹ค.
  3. ๋žญ์„œ๋ธŒ(LangServe): ๋žญ์ฒด์ธ ์ฒด์ธ์„ REST API๋กœ ๋ฐฐํฌํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•˜๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ž…๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ๊ฐœ๋ฐœ์ž๋“ค์€ ์ž์‹ ์˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์™ธ๋ถ€ ์‹œ์Šคํ…œ๊ณผ ์‰ฝ๊ฒŒ ํ†ตํ•ฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  4. ๋žญ์Šค๋ฏธ์Šค(LangSmith): ๊ฐœ๋ฐœ์ž ํ”Œ๋žซํผ์œผ๋กœ, LLM ํ”„๋ ˆ์ž„์›Œํฌ์—์„œ ๊ตฌ์ถ•๋œ ์ฒด์ธ์„ ๋””๋ฒ„๊น…, ํ…Œ์ŠคํŠธ, ํ‰๊ฐ€, ๋ชจ๋‹ˆํ„ฐ๋งํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ๋žญ์ฒด์ธ๊ณผ์˜ ์›ํ™œํ•œ ํ†ตํ•ฉ์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.

1. LangChain์˜ "Runnable" ํ”„๋กœํ† ์ฝœ

LangChain์˜ "Runnable" ํ”„๋กœํ† ์ฝœ์€ ์‚ฌ์šฉ์ž๊ฐ€ ์‚ฌ์šฉ์ž ์ •์˜ ์ฒด์ธ์„ ์‰ฝ๊ฒŒ ์ƒ์„ฑํ•˜๊ณ  ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๋„๋ก ์„ค๊ณ„๋œ ํ•ต์‹ฌ์ ์ธ ๊ฐœ๋…์ž…๋‹ˆ๋‹ค. ์ด ํ”„๋กœํ† ์ฝœ์„ ํ†ตํ•ด, ๊ฐœ๋ฐœ์ž๋Š” ์ผ๊ด€๋œ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋‹ค์–‘ํ•œ ํƒ€์ž…์˜ ์ปดํฌ๋„ŒํŠธ๋ฅผ ์กฐํ•ฉํ•˜๊ณ , ๋ณต์žกํ•œ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ ํŒŒ์ดํ”„๋ผ์ธ์„ ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. "Runnable" ํ”„๋กœํ† ์ฝœ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ฃผ์š” ๋ฉ”์†Œ๋“œ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค:

  • invoke: ์ฃผ์–ด์ง„ ์ž…๋ ฅ์— ๋Œ€ํ•ด ์ฒด์ธ์„ ํ˜ธ์ถœํ•˜๊ณ , ๊ฒฐ๊ณผ๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ์ด ๋ฉ”์†Œ๋“œ๋Š” ๋‹จ์ผ ์ž…๋ ฅ์— ๋Œ€ํ•ด ๋™๊ธฐ์ ์œผ๋กœ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.
  • batch: ์ž…๋ ฅ ๋ฆฌ์ŠคํŠธ์— ๋Œ€ํ•ด ์ฒด์ธ์„ ํ˜ธ์ถœํ•˜๊ณ , ๊ฐ ์ž…๋ ฅ์— ๋Œ€ํ•œ ๊ฒฐ๊ณผ๋ฅผ ๋ฆฌ์ŠคํŠธ๋กœ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ์ด ๋ฉ”์†Œ๋“œ๋Š” ์—ฌ๋Ÿฌ ์ž…๋ ฅ์— ๋Œ€ํ•ด ๋™๊ธฐ์ ์œผ๋กœ ์ž‘๋™ํ•˜๋ฉฐ, ํšจ์œจ์ ์ธ ๋ฐฐ์น˜ ์ฒ˜๋ฆฌ๋ฅผ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค.
  • stream: ์ž…๋ ฅ์— ๋Œ€ํ•ด ์ฒด์ธ์„ ํ˜ธ์ถœํ•˜๊ณ , ๊ฒฐ๊ณผ์˜ ์กฐ๊ฐ๋“ค์„ ์ŠคํŠธ๋ฆฌ๋ฐํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” ๋Œ€์šฉ๋Ÿ‰ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ๋‚˜ ์‹ค์‹œ๊ฐ„ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ์— ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค.
  • ๋น„๋™๊ธฐ ๋ฒ„์ „: ainvoke, abatch, astream ๋“ฑ์˜ ๋ฉ”์†Œ๋“œ๋Š” ๊ฐ๊ฐ์˜ ๋™๊ธฐ ๋ฒ„์ „์— ๋Œ€ํ•œ ๋น„๋™๊ธฐ ์‹คํ–‰์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ๋น„๋™๊ธฐ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ํŒจ๋Ÿฌ๋‹ค์ž„์„ ์‚ฌ์šฉํ•˜์—ฌ ๋” ๋†’์€ ์ฒ˜๋ฆฌ ์„ฑ๋Šฅ๊ณผ ํšจ์œจ์„ ๋‹ฌ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ฐ ์ปดํฌ๋„ŒํŠธ๋Š” ์ž…๋ ฅ ๋ฐ ์ถœ๋ ฅ ์œ ํ˜•์ด ๋ช…ํ™•ํ•˜๊ฒŒ ์ •์˜๋˜์–ด ์žˆ์œผ๋ฉฐ, "Runnable" ํ”„๋กœํ† ์ฝœ์„ ๊ตฌํ˜„ํ•จ์œผ๋กœ์จ, ์ด๋Ÿฌํ•œ ์ปดํฌ๋„ŒํŠธ๋“ค์€ ์ž…๋ ฅ๊ณผ ์ถœ๋ ฅ ์Šคํ‚ค๋งˆ๋ฅผ ๊ฒ€์‚ฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” ๊ฐœ๋ฐœ์ž๊ฐ€ ํƒ€์ž… ์•ˆ์ •์„ฑ์„ ๋ณด์žฅํ•˜๊ณ , ์˜ˆ์ƒ์น˜ ๋ชปํ•œ ์˜ค๋ฅ˜๋ฅผ ๋ฐฉ์ง€ํ•  ์ˆ˜ ์žˆ๋„๋ก ๋„์™€์ค๋‹ˆ๋‹ค.

LangChain์„ ์‚ฌ์šฉํ•˜์—ฌ ์ปค์Šคํ…€ ์ฒด์ธ์„ ์ƒ์„ฑํ•˜๋Š” ๊ณผ์ •์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค:

  1. ํ•„์š”ํ•œ ์ปดํฌ๋„ŒํŠธ๋ฅผ ์ •์˜ํ•˜๊ณ , ๊ฐ๊ฐ "Runnable" ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค.
  2. ์ปดํฌ๋„ŒํŠธ๋“ค์„ ์กฐํ•ฉํ•˜์—ฌ ์‚ฌ์šฉ์ž ์ •์˜ ์ฒด์ธ์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.
  3. ์ƒ์„ฑ๋œ ์ฒด์ธ์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค. ์ด๋•Œ, invoke, batch, stream ๋ฉ”์†Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์›ํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

1๏ธโƒฃ GPT ์•ฝ์ž ์˜๋ฏธ

GPT = Generative Pre-trained Transformer

๊ฐ ๋‹จ์–ด ์˜๋ฏธ๋ฅผ ํ’€์–ด๋ณด๋ฉด:

  1. Generative (์ƒ์„ฑํ˜•)
    • ์ƒˆ๋กœ์šด ๋ฐ์ดํ„ฐ๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๋Š” ๋Šฅ๋ ฅ์„ ์˜๋ฏธ
    • ์˜ˆ: ๊ธ€, ์ฝ”๋“œ, ๊ทธ๋ฆผ, ์Œ์•… ๋“ฑ์„ ๋งŒ๋“ค์–ด๋‚ผ ์ˆ˜ ์žˆ์Œ
  2. Pre-trained (์‚ฌ์ „ํ•™์Šต๋œ)
    • ๋ฐฉ๋Œ€ํ•œ ๋ฐ์ดํ„ฐ๋กœ ๋ฏธ๋ฆฌ ํ•™์Šต๋˜์–ด ์žˆ์Œ
    • ๊ทธ๋ž˜์„œ ์งˆ๋ฌธํ•˜๋ฉด ๋ฐ”๋กœ ๋‹ต์„ ์ œ๊ณต ๊ฐ€๋Šฅ
  3. Transformer (ํŠธ๋žœ์Šคํฌ๋จธ)
    • 2017๋…„ ๋“ฑ์žฅํ•œ ๋”ฅ๋Ÿฌ๋‹ ๋ชจ๋ธ ๊ตฌ์กฐ
    • ๋ฌธ์žฅ ์•ˆ ๋‹จ์–ด ๊ฐ„ ๊ด€๊ณ„๋ฅผ ํšจ์œจ์ ์œผ๋กœ ์ดํ•ด → ์ž์—ฐ์–ด ์ฒ˜๋ฆฌ(NLP)์— ๊ฐ•์ 
    • ์˜ˆ: ๋ฒˆ์—ญ, ์š”์•ฝ, ์งˆ์˜์‘๋‹ต, ์ฑ—๋ด‡ ๋“ฑ

2๏ธโƒฃ ์‰ฝ๊ฒŒ ๋งํ•˜๋ฉด

“๋ฏธ๋ฆฌ ํ•™์Šต๋œ ํŠธ๋žœ์Šคํฌ๋จธ ๋ชจ๋ธ๋กœ, ์ƒˆ๋กœ์šด ๊ธ€์ด๋‚˜ ์ •๋ณด๋ฅผ ์ƒ์„ฑํ•˜๋Š” AI”

 

 


์˜ฌ๋ผ๋งˆ(Ollama)์™€ ๋ผ๋งˆ(LLaMA)์˜ ๊ด€๊ณ„ ํ•œ๋ˆˆ์— ๋ณด๊ธฐ

์š”์•ฝ๋ถ€ํ„ฐ ๋ง์”€๋“œ๋ฆฌ๋ฉด,
๐Ÿ‘‰ ๋ผ๋งˆ(LLaMA)๋Š” ๋ฉ”ํƒ€(Meta)๊ฐ€ ๋งŒ๋“  ๋Œ€ํ˜• ์–ธ์–ด ๋ชจ๋ธ์ด๊ณ ,
๐Ÿ‘‰ ์˜ฌ๋ผ๋งˆ(Ollama)๋Š” ์ด๋Ÿฐ ๋ผ๋งˆ ๊ฐ™์€ ๋ชจ๋ธ์„ ๊ฐœ์ธ ์ปดํ“จํ„ฐ์—์„œ ์‰ฝ๊ฒŒ ์‹คํ–‰ํ•˜๊ฒŒ ํ•ด์ฃผ๋Š” ๋„๊ตฌ์ž…๋‹ˆ๋‹ค.
์ฆ‰, ๋ชจ๋ธ๊ณผ ์‹คํ–‰ ๋„๊ตฌ์˜ ๊ด€๊ณ„๋ผ๊ณ  ๋ณด์‹œ๋ฉด ๋ฉ๋‹ˆ๋‹ค.


1๏ธโƒฃ ๋ผ๋งˆ(LLaMA)๋ž€ ๋ฌด์—‡์ธ๊ฐ€?

๐Ÿ“Œ ๊ธฐ๋ณธ ๊ฐœ๋…

  • LLaMA (Large Language Model Meta AI)
  • ๋ฉ”ํƒ€(Meta, ๊ตฌ ํŽ˜์ด์Šค๋ถ)๊ฐ€ ๊ฐœ๋ฐœํ•œ ๋Œ€๊ทœ๋ชจ ์–ธ์–ด ๋ชจ๋ธ(LLM)
  • ChatGPT์™€ ์œ ์‚ฌํ•˜๊ฒŒ ๊ธ€ ์ƒ์„ฑ, ์š”์•ฝ, ๋ฒˆ์—ญ, ์งˆ์˜์‘๋‹ต ๋“ฑ์„ ์ˆ˜ํ–‰

๐Ÿ“Œ ํŠน์ง•

  • ์˜คํ”ˆ์†Œ์Šค์— ๊ฐ€๊นŒ์šด ๊ณต๊ฐœ ์ •์ฑ…
  • ์—ฐ๊ตฌ·๊ฐœ๋ฐœ์ž ์ปค๋ฎค๋‹ˆํ‹ฐ์—์„œ ํ™œ๋ฐœํžˆ ์‚ฌ์šฉ
  • LLaMA 2, LLaMA 3 ๋“ฑ ๋ฒ„์ „์ด ๊ณ„์† ๋ฐœ์ „ ์ค‘

๐Ÿ‘‰ ์‰ฝ๊ฒŒ ๋งํ•ด, ์—”์ง„(๋‘๋‡Œ) ์—ญํ• ์ž…๋‹ˆ๋‹ค.


2๏ธโƒฃ ์˜ฌ๋ผ๋งˆ(Ollama)๋ž€ ๋ฌด์—‡์ธ๊ฐ€?

๐Ÿ“Œ ๊ธฐ๋ณธ ๊ฐœ๋…

  • **๋กœ์ปฌ ํ™˜๊ฒฝ(๋‚ด PC)**์—์„œ LLM์„ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ฃผ๋Š” ํ”Œ๋žซํผ/๋Ÿฐ์ฒ˜
  • ๋งฅOS, ์œˆ๋„์šฐ, ๋ฆฌ๋ˆ…์Šค ์ง€์›

๐Ÿ“Œ ์ฃผ์š” ๊ธฐ๋Šฅ

  • ๋ผ๋งˆ, ๋ฏธ์ŠคํŠธ๋ž„(Mistral), ์ ฌ๋งˆ(Gemma) ๋“ฑ ๋‹ค์–‘ํ•œ ๋ชจ๋ธ์„
    ๐Ÿ‘‰ ๋ช…๋ น์–ด ํ•œ ์ค„๋กœ ๋‹ค์šด๋กœ๋“œ & ์‹คํ–‰
  • ์„œ๋ฒ„ ์„ค์ •, GPU ์„ธํŒ… ๊ฐ™์€ ๋ณต์žกํ•œ ์ž‘์—…์„ ์ž๋™์œผ๋กœ ์ฒ˜๋ฆฌ

๐Ÿ‘‰ ์‰ฝ๊ฒŒ ๋งํ•ด, ์—”์ง„์„ ์‰ฝ๊ฒŒ ์‹œ๋™ ๊ฑธ์–ด์ฃผ๋Š” ์‹œ๋™ ๋ฒ„ํŠผ + ์ •๋น„์†Œ์ž…๋‹ˆ๋‹ค.


3๏ธโƒฃ ์˜ฌ๋ผ๋งˆ์™€ ๋ผ๋งˆ์˜ ๊ด€๊ณ„ ์ •๋ฆฌ

 

๊ตฌ๋ถ„ ๋ผ๋งˆ(LLaMA) ์˜ฌ๋ผ๋งˆ(Ollama)
์ •์ฒด ์–ธ์–ด ๋ชจ๋ธ ์‹คํ–‰ ๋„๊ตฌ
์—ญํ•  ์ƒ๊ฐํ•˜๊ณ  ๊ธ€์„ ์ƒ์„ฑ ๋ชจ๋ธ์„ ๋กœ์ปฌ์—์„œ ๋Œ๋ ค์คŒ
๊ฐœ๋ฐœ์‚ฌ Meta Ollama ํŒ€
๊ด€๊ณ„ ์‹คํ–‰ ๋Œ€์ƒ ์‹คํ–‰ ์ฃผ์ฒด

๐Ÿ’ก **์˜ฌ๋ผ๋งˆ๋Š” ๋ผ๋งˆ๋ฅผ ํฌํ•จํ•œ ์—ฌ๋Ÿฌ LLM์„ “๋Œ๋ ค์ฃผ๋Š” ๊ทธ๋ฆ‡”**์ด๊ณ ,
๐Ÿ’ก **๋ผ๋งˆ๋Š” ๊ทธ ์•ˆ์—์„œ ์ž‘๋™ํ•˜๋Š” “๋‡Œ”**๋ผ๊ณ  ์ดํ•ดํ•˜์‹œ๋ฉด ๋”ฑ ๋งž์Šต๋‹ˆ๋‹ค.


4๏ธโƒฃ ๋น„์œ ๋กœ ์ดํ•ดํ•˜๋ฉด ๋” ์‰ฝ์Šต๋‹ˆ๋‹ค

  • ๐Ÿš— ๋ผ๋งˆ(LLaMA) = ์ž๋™์ฐจ ์—”์ง„
  • ๐Ÿงฐ ์˜ฌ๋ผ๋งˆ(Ollama) = ์ฐจ๊ณ  + ์‹œ๋™ ์‹œ์Šคํ…œ

 

 

 

 

 

 

 

 

 

 

  •