AI κ°λ
μλ¬Έ: https://docs.spring.io/spring-ai/reference/concepts.html#concept-fc
μ΄ μΉμ μμλ Spring AIκ° μ¬μ©νλ ν΅μ¬ κ°λ μ λν΄ μ€λͺ ν©λλ€. Spring AIκ° κ΅¬νλλ λ°©μμ λν μμ΄λμ΄λ₯Ό μ΄ν΄νλ €λ©΄ μ΄ μΉμ μ μμΈν μ½μ΄λ³΄μκΈ° λ°λλλ€.
λͺ¨λΈ
AI λͺ¨λΈμ μ 보λ₯Ό μ²λ¦¬νκ³ μμ±νλλ‘ μ€κ³λ μκ³ λ¦¬μ¦μΌλ‘, μ’ μ’ μΈκ°μ μΈμ§ κΈ°λ₯μ λͺ¨λ°©ν©λλ€. μ΄λ¬ν λͺ¨λΈμ λκ·λͺ¨ λ°μ΄ν°μ μμ ν¨ν΄κ³Ό μΈμ¬μ΄νΈλ₯Ό νμ΅ν¨μΌλ‘μ¨ μμΈ‘, ν μ€νΈ, μ΄λ―Έμ§ λλ κΈ°ν κ²°κ³Όλ¬Όμ μμ±νμ¬ μ°μ μ λ°μ λ€μν μ ν리μΌμ΄μ μ ν₯μμν¬ μ μμ΅λλ€.
AI λͺ¨λΈμλ λ€μν μ νμ΄ μμΌλ©°, κ° λͺ¨λΈμ νΉμ μ¬μ© μ¬λ‘μ μ ν©ν©λλ€. ChatGPTμ κ·Έ μμ±ν AI κΈ°λ₯μ ν μ€νΈ μ λ ₯κ³Ό μΆλ ₯μΌλ‘ μ¬μ©μμ λ§μμ μ¬λ‘μ‘μμ§λ§, λ§μ λͺ¨λΈκ³Ό νμ¬μμ λ€μν μ λ ₯κ³Ό μΆλ ₯μ μ 곡ν©λλ€. ChatGPT μ΄μ μλ λ§μ μ¬λλ€μ΄ λ―Έλμ λμ μ€ν μ΄λΈ λν¨μ κ³Ό κ°μ ν μ€νΈ-μ΄λ―Έμ§ μμ± λͺ¨λΈμ 맀λ£λμμ΅λλ€.
λ€μ νλ μ λ ₯ λ° μΆλ ₯ μ νμ λ°λΌ μ¬λ¬ λͺ¨λΈμ λΆλ₯ν κ²μ λλ€:
Spring AIλ νμ¬ μΈμ΄, μ΄λ―Έμ§, μ€λμ€λ‘ μ λ ₯κ³Ό μΆλ ₯μ μ²λ¦¬νλ λͺ¨λΈμ μ§μν©λλ€. μ΄μ νμ λ§μ§λ§ νμ ν μ€νΈλ₯Ό μ λ ₯μΌλ‘ λ°μλ€μ΄κ³ μ«μλ₯Ό μΆλ ₯νλ κ²μΌλ‘, λ μΌλ°μ μΌλ‘ μλ² λ© ν μ€νΈλΌκ³ νλ©° AI λͺ¨λΈμμ μ¬μ©λλ λ΄λΆ λ°μ΄ν° ꡬ쑰λ₯Ό λνλ λλ€. Spring AIλ μλ² λ©μ μ§μνμ¬ λ³΄λ€ κ³ κΈ μ¬μ© μ¬λ‘λ₯Ό κ°λ₯νκ² ν©λλ€.
GPTμ κ°μ λͺ¨λΈμ μ°¨λ³ννλ κ²μ GPT-Chat Generative Pre-trained Transformerμ βPβλ‘ μ μ μλ―μ΄ μ¬μ νμ΅λ νΉμ±μ λλ€. μ΄ μ¬μ νμ΅ κΈ°λ₯μ AIλ₯Ό κ΄λ²μν λ¨Έμ λ¬λμ΄λ λͺ¨λΈ νμ΅ λ°°κ²½ μ§μμ΄ νμ μλ μΌλ° κ°λ°μ λκ΅¬λ‘ μ νν©λλ€.
ν둬ννΈ
ν둬ννΈλ AI λͺ¨λΈμ΄ νΉμ μΆλ ₯μ μμ±νλλ‘ μλ΄νλ μΈμ΄ κΈ°λ° μ λ ₯μ κΈ°μ΄ μν μ ν©λλ€. ChatGPTμ μ΅μν μ¬λλ€μκ² ν둬ννΈλ λ¨μν APIλ‘ μ μ‘λλ λν μμμ μ λ ₯λλ ν μ€νΈμ²λΌ λ³΄μΌ μ μμ΅λλ€. νμ§λ§ ν둬ννΈμλ κ·Έ μ΄μμ μλ―Έκ° λ΄κ²¨ μμ΅λλ€. λ§μ AI λͺ¨λΈμμ ν둬ννΈμ ν μ€νΈλ λ¨μν λ¬Έμμ΄μ΄ μλλλ€.
ChatGPTμ APIμλ ν둬ννΈ λ΄μ μ¬λ¬ κ°μ ν μ€νΈ μ λ ₯μ΄ μμΌλ©°, κ° ν μ€νΈ μ λ ₯μλ μν μ΄ ν λΉλ©λλ€. μλ₯Ό λ€μ΄, μμ€ν μν μ λͺ¨λΈμ μλ λ°©λ²μ μλ €μ£Όκ³ μνΈ μμ©μ 컨ν μ€νΈλ₯Ό μ€μ ν©λλ€. λν μΌλ°μ μΌλ‘ μ¬μ©μμ μ λ ₯μΈ μ¬μ©μ μν λ μμ΅λλ€.
ν¨κ³Όμ μΈ ν둬ννΈλ₯Ό λ§λλ κ²μ μμ μ΄μ κ³Όνμ λλ€. ChatGPTλ μ¬λ κ°μ λνλ₯Ό μν΄ μ€κ³λμμ΅λλ€. μ΄λ SQLκ³Ό κ°μ κ²μ μ¬μ©νμ¬ βμ§λ¬Έβνλ κ²κ³Όλ μλΉν λ€λ¦ λλ€. λ€λ₯Έ μ¬λκ³Ό λννλ κ²μ²λΌ AI λͺ¨λΈκ³Ό μν΅ν΄μΌ ν©λλ€.
μ΄λ¬ν μνΈμμ© λ°©μμ μ€μμ± λλ¬Έμ "ν둬ννΈ μμ§λμ΄λ§"μ΄λΌλ μ©μ΄κ° λ μμ μΈ νλ¬ΈμΌλ‘ λ±μ₯νμ΅λλ€. ν둬ννΈμ ν¨κ³Όλ₯Ό ν₯μμν€λ λ€μν κΈ°λ²λ€μ΄ μμμ Έ λμ€κ³ μμ΅λλ€. ν둬ννΈ μ μμ μκ°μ ν¬μνλ©΄ κ²°κ³Όλ¬Όμ ν¬κ² ν₯μμν¬ μ μμ΅λλ€.
ν둬ννΈλ₯Ό 곡μ νλ κ²μ 곡λμ κ΄νμ΄ λμμΌλ©° μ΄μ λν νμ μ μ°κ΅¬λ νλ°ν μ΄λ£¨μ΄μ§κ³ μμ΅λλ€. ν¨κ³Όμ μΈ ν둬ννΈλ₯Ό λ§λλ κ²μ΄ μΌλ§λ μ§κ΄μ μ΄μ§ μμ μ μλμ§λ₯Ό 보μ¬μ£Όλ μλ‘, μ΅κ·Ό μ°κ΅¬ λ Όλ¬Έμ λ°λ₯΄λ©΄ κ°μ₯ ν¨κ³Όμ μΈ ν둬ννΈ μ€ νλλ ==βμ¬νΈν‘μ νκ³ μ΄ μμ μ λ¨κ³λ³λ‘ μ§ννμΈμ(Take a deep breath and work on this step by step.)β==λΌλ λ¬Έκ΅¬λ‘ μμνλ κ²μΌλ‘ λνλ¬μ΅λλ€. μΈμ΄κ° μ κ·Έλ κ² μ€μνμ§ μ μ μμ κ²μ λλ€. νμ¬ κ°λ° μ€μΈ μ λ²μ μ λ§ν κ²λ μκ³ ChatGPT 3.5μ κ°μ μ΄μ λ²μ μ κΈ°μ μ κ°μ₯ ν¨κ³Όμ μΌλ‘ νμ©νλ λ°©λ²λ μμ§ μμ ν μ΄ν΄νμ§ λͺ»νκ³ μμ΅λλ€.
ν둬ννΈ ν νλ¦Ώ
ν¨κ³Όμ μΈ ν둬ννΈλ₯Ό λ§λ€λ €λ©΄ μμ²μ 컨ν μ€νΈλ₯Ό μ€μ νκ³ μμ²μ μΌλΆλ₯Ό μ¬μ©μ μ λ ₯μ λ§λ κ°μΌλ‘ λ체ν΄μΌ ν©λλ€.
μ΄ νλ‘μΈμ€λ ν둬ννΈ μμ± λ° κ΄λ¦¬λ₯Ό μν΄ κΈ°μ‘΄μ ν μ€νΈ κΈ°λ° ν νλ¦Ώ μμ§μ μ¬μ©ν©λλ€. Spring AIλ μ΄λ₯Ό μν΄ OSS λΌμ΄λΈλ¬λ¦¬μΈ StringTemplateμ μ¬μ©ν©λλ€.
μλ₯Ό λ€μ΄ κ°λ¨ν ν둬ννΈ ν νλ¦Ώμ μκ°ν΄ λ³΄κ² μ΅λλ€:
Tell me a {adjective} joke about {content}.
Spring AIμμ ν둬ννΈ ν
νλ¦Ώμ Spring MVC μν€ν
μ²μ "View"μ λΉμ ν μ μμ΅λλ€. ν
νλ¦Ώ λ΄μ μ리 νμμλ₯Ό μ±μ°κΈ° μν΄ λͺ¨λΈ κ°μ²΄(μΌλ°μ μΌλ‘ java.util.Map
)κ° μ 곡λ©λλ€. βλ λλ§λβ λ¬Έμμ΄μ AI λͺ¨λΈμ μ 곡λλ ν둬ννΈμ μ½ν
μΈ κ° λ©λλ€.
λͺ¨λΈμ μ μ‘λλ ν둬ννΈμ νΉμ λ°μ΄ν° νμμλ μλΉν κ°λ³μ±μ΄ μμ΅λλ€. μ²μμλ λ¨μν λ¬Έμμ΄λ‘ μμνλ ν둬ννΈλ μ¬λ¬ λ©μμ§λ₯Ό ν¬ν¨νλλ‘ λ°μ νμΌλ©°, κ° λ©μμ§μ κ° λ¬Έμμ΄μ λͺ¨λΈμ λν κ³ μ ν μν μ λνλ λλ€.
μλ² λ©
μλ² λ©μ ν μ€νΈ, μ΄λ―Έμ§ λλ λμμμ μ«μ ννμΌλ‘ μ λ ₯ κ°μ κ΄κ³λ₯Ό ν¬μ°©ν©λλ€.
μλ² λ©μ ν μ€νΈ, μ΄λ―Έμ§, λμμμ 벑ν°λΌκ³ νλ λΆλ μμμ μ«μ λ°°μ΄λ‘ λ³ννλ λ°©μμΌλ‘ μλν©λλ€. μ΄λ¬ν 벑ν°λ ν μ€νΈ, μ΄λ―Έμ§ λ° λμμμ μλ―Έλ₯Ό ν¬μ°©νλλ‘ μ€κ³λμμ΅λλ€. μλ² λ© λ°°μ΄μ κΈΈμ΄λ₯Ό 벑ν°μ μ°¨μμ΄λΌκ³ ν©λλ€.
μ ν리μΌμ΄μ μ λ ν μ€νΈμ λ²‘ν° νν μ¬μ΄μ μμΉμ 거리λ₯Ό κ³μ°νμ¬ μλ² λ© λ²‘ν°λ₯Ό μμ±νλ λ° μ¬μ©λ κ°μ²΄ κ°μ μ μ¬μ±μ κ²°μ ν μ μμ΅λλ€.
AIλ₯Ό νꡬνλ Java κ°λ°μλ μ΄λ¬ν λ²‘ν° ννμ μ΄λ©΄μ μλ 볡μ‘ν μνμ μ΄λ‘ μ΄λ ꡬ체μ μΈ κ΅¬νμ μ΄ν΄ν νμλ μμ΅λλ€. νΉν μ ν리μΌμ΄μ μ AI κΈ°λ₯μ ν΅ν©ν λλ AI μμ€ν λ΄μμμ μν κ³Ό κΈ°λ₯μ λν κΈ°λ³Έμ μΈ μ΄ν΄λ§ μμΌλ©΄ μΆ©λΆν©λλ€.
μλ² λ©μ νΉν κ²μ μ¦κ° μμ±(RAG) ν¨ν΄κ³Ό κ°μ μ€μ μ ν리μΌμ΄μ κ³Ό κ΄λ ¨μ΄ μμ΅λλ€. μλ² λ©μ μ ν΄λ¦¬λ κΈ°ννμ 2μ°¨μ 곡κ°κ³Ό μ μ¬νμ§λ§ λ λμ μ°¨μμ μλ―Έ 곡κ°μμ λ°μ΄ν°λ₯Ό μ μΌλ‘ ννν μ μκ² ν΄μ€λλ€. μ¦, μ ν΄λ¦¬λ κΈ°ννμμ νλ©΄μμ μ λ€μ΄ μ’νμ λ°λΌ κ°κΉκ±°λ λ¨Ό κ²μ²λΌ, μλ―Έ 곡κ°μμλ μ λ€μ κ·Όμ μ±μ΄ μλ―Έμ μ μ¬μ±μ λ°μν©λλ€. λΉμ·ν μ£Όμ μ λν λ¬Έμ₯μ κ·Έλνμμ μ λ€μ΄ μλ‘ κ°κΉμ΄ μλ κ²μ²λΌ μ΄ λ€μ°¨μ 곡κ°μμ λ κ°κΉκ² λ°°μΉλ©λλ€. μ΄λ¬ν κ·Όμ μ±μ ν μ€νΈ λΆλ₯, μλ―Έλ‘ μ κ²μ, μ¬μ§μ΄ μ ν μΆμ²κ³Ό κ°μ μμ μ λμμ΄ λλλ°, AIκ° μ΄ νμ₯λ μλ―Έλ‘ μ νκ²½μμμ 'μμΉ'λ₯Ό κΈ°λ°μΌλ‘ κ΄λ ¨ κ°λ μ μλ³νκ³ κ·Έλ£Ήνν μ μκ² ν΄μ£ΌκΈ° λλ¬Έμ λλ€.
μ΄ μλ§¨ν± κ³΅κ°μ 벑ν°λ‘ μκ°ν μ μμ΅λλ€.
ν ν°
ν ν°μ AI λͺ¨λΈμ΄ μλνλ λ°©μμ κ΅¬μ± μμ μν μ ν©λλ€. μ λ ₯ μ λͺ¨λΈμ λ¨μ΄λ₯Ό ν ν°μΌλ‘ λ³νν©λλ€. μΆλ ₯ μμλ ν ν°μ λ€μ λ¨μ΄λ‘ λ³νν©λλ€.
μμ΄μμ νλμ ν ν°μ λλ΅ λ¨μ΄μ 75%μ ν΄λΉν©λλ€. μ°Έκ³ λ‘ μ °μ΅μ€νΌμ΄μ μ μνμ μ½ 90λ§ κ°μ λ¨μ΄λ‘ μ΄λ£¨μ΄μ Έ μμΌλ©°, μ΄λ μ½ 120λ§ κ°μ ν ν°μΌλ‘ νμ°λ©λλ€.
λ μ€μν κ²μ ν ν° = λμ΄λΌλ κ²μ λλ€. νΈμ€ν λ AI λͺ¨λΈμμλ μ¬μ©λ ν ν° μμ λ°λΌ μκΈμ΄ κ²°μ λ©λλ€. μ λ ₯κ³Ό μΆλ ₯ λͺ¨λ μ 체 ν ν° μμ κΈ°μ¬ν©λλ€.
λν λͺ¨λΈμλ λ¨μΌ API νΈμΆμμ μ²λ¦¬λλ ν μ€νΈμ μμ μ ννλ ν ν° μ νμ΄ μ μ©λ©λλ€. μ΄ μκ³κ°μ νν β컨ν μ€νΈ μ°½βμ΄λΌκ³ ν©λλ€. λͺ¨λΈμ μ΄ νλλ₯Ό μ΄κ³Όνλ ν μ€νΈλ μ²λ¦¬νμ§ μμ΅λλ€.
μλ₯Ό λ€μ΄, ChatGPT3λ 4K ν ν° μ νμ΄ μλ λ°λ©΄, GPT4λ 8K, 16K, 32K λ± λ€μν μ΅μ μ μ 곡ν©λλ€. Anthropicμ Claude AI λͺ¨λΈμ 100K ν ν° μ νμ΄ μμΌλ©°, Metaμ μ΅κ·Ό μ°κ΅¬μμλ 100λ§ ν ν° μ ν λͺ¨λΈμ΄ λμΆλμμ΅λλ€.
μμ§λ μ °μ΅μ€νΌμ΄μ μνμ GPT4λ‘ μμ½νλ €λ©΄ λ°μ΄ν°λ₯Ό μκ² μͺΌκ°κ³ λͺ¨λΈμ 컨ν μ€νΈ μ°½ μ ν λ΄μμ λ°μ΄ν°λ₯Ό μ μνλ μννΈμ¨μ΄ μμ§λμ΄λ§ μ λ΅μ κ³ μν΄μΌ ν©λλ€. Spring AI νλ‘μ νΈκ° μ΄ μμ μ λμμ΄ λ©λλ€.
ꡬ쑰νλ μΆλ ₯
μλ΅μ JSONμΌλ‘ μμ²νλλΌλ AI λͺ¨λΈμ μΆλ ₯μ μΌλ°μ μΌλ‘ java.lang.String
μΌλ‘ λμ°©ν©λλ€. μ΄λ μ¬λ°λ₯Έ JSONμΌ μ μμ§λ§ JSON λ°μ΄ν° κ΅¬μ‘°κ° μλλλ€. κ·Έλ₯ λ¬Έμμ΄μΌ λΏμ
λλ€. λν ν둬ννΈμ μΌλΆλ‘ βfor JSONβμ μμ²νλ κ²λ 100% μ ννμ§ μμ΅λλ€.
μ΄λ¬ν 볡μ‘μ±μΌλ‘ μΈν΄ μλν μΆλ ₯μ μ»κΈ° μν΄ ν둬ννΈλ₯Ό μμ±ν λ€μ κ·Έ κ²°κ³Όμ λ¨μν λ¬Έμμ΄μ μ ν리μΌμ΄μ ν΅ν©μ μν΄ μ¬μ© κ°λ₯ν λ°μ΄ν° κ΅¬μ‘°λ‘ λ³ννλ μ λ¬Έ λΆμΌκ° λ±μ₯νκ² λμμ΅λλ€.
ꡬ쑰νλ μΆλ ₯ λ³νμ μΈμ¬νκ² λ§λ€μ΄μ§ ν둬ννΈλ₯Ό μ¬μ©νλ©°, μνλ νμμ μ»κΈ° μν΄ λͺ¨λΈκ³Ό μ¬λ¬ λ² μνΈ μμ©ν΄μΌ νλ κ²½μ°κ° λ§μ΅λλ€.
λ°μ΄ν° λ° APIλ₯Ό AI λͺ¨λΈμ κ°μ Έμ€κΈ°
AI λͺ¨λΈμ νμ΅λμ§ μμ μ 보λ₯Ό μ΄λ»κ² μ 곡ν μ μμκΉμ?
GPT 3.5/4.0 λ°μ΄ν°μ μ 2021λ 9μκΉμ§λ§ νμ₯λλ€λ μ μ μ μνμΈμ. λ°λΌμ μ΄ λͺ¨λΈμ ν΄λΉ λ μ§ μ΄νμ μ§μμ΄ νμν μ§λ¬Έμ λν λ΅μ λͺ¨λ₯Έλ€κ³ λ§ν©λλ€. ν₯λ―Έλ‘μ΄ μ μ μ΄ λ°μ΄ν°μ μ μ©λμ΄ μ½ 650GBλΌλ μ μ λλ€.
λ°μ΄ν°λ₯Ό ν΅ν©νκΈ° μν΄ AI λͺ¨λΈμ μ¬μ©μ μ§μ νλ μΈ κ°μ§ κΈ°μ μ΄ μ‘΄μ¬ν©λλ€:
-
νμΈ νλ: μ΄ μ ν΅μ μΈ λ¨Έμ λ¬λ κΈ°λ²μλ λͺ¨λΈμ μ‘°μ νκ³ λ΄λΆ κ°μ€μΉλ₯Ό λ³κ²½νλ κ²μ΄ ν¬ν¨λ©λλ€. νμ§λ§ λ¨Έμ λ¬λ μ λ¬Έκ°μκ²λ κΉλ€λ‘μ΄ κ³Όμ μ΄λ©°, GPTμ κ°μ λͺ¨λΈμ κ²½μ° κ·Έ ν¬κΈ° λλ¬Έμ 리μμ€ μ§μ½λκ° λ§€μ° λμ΅λλ€. λν μΌλΆ λͺ¨λΈμμλ μ΄ μ΅μ μ μ 곡νμ§ μμ μλ μμ΅λλ€.
-
ν둬ννΈ μ€ν°ν: λ³΄λ€ μ€μ©μ μΈ λμμ λͺ¨λΈμ μ 곡λλ ν둬ννΈμ λ°μ΄ν°λ₯Ό μλ² λνλ κ²μ λλ€. λͺ¨λΈμ ν ν° μ νμ΄ μ£Όμ΄μ§λ©΄ λͺ¨λΈμ 컨ν μ€νΈ μ°½ λ΄μ κ΄λ ¨ λ°μ΄ν°λ₯Ό νμνλ κΈ°μ μ΄ νμν©λλ€. μ΄ μ κ·Ό λ°©μμ ꡬμ΄μ²΄λ‘ βν둬ννΈ μ±μ°κΈ°(stuffing the prompt)βλΌκ³ ν©λλ€. Spring AI λΌμ΄λΈλ¬λ¦¬λ κ²μ μ¦κ° μμ±(RAG)μΌλ‘ μλ €μ§ βν둬ννΈ μ±μ°κΈ°β κΈ°μ μ κΈ°λ°μΌλ‘ μ루μ μ ꡬννλ λ° λμμ μ€λλ€.
- ν¨μ νΈμΆ(Function Calling): μ΄ κΈ°μ μ μ¬μ©νλ©΄ λκ·λͺ¨ μΈμ΄ λͺ¨λΈμ μΈλΆ μμ€ν μ APIμ μ°κ²°νλ μ¬μ©μ μ μ μ¬μ©μ ν¨μλ₯Ό λ±λ‘ν μ μμ΅λλ€. Spring AIλ ν¨μ νΈμΆ(Function Calling)μ μ§μνκΈ° μν΄ μμ±ν΄μΌ νλ μ½λλ₯Ό ν¬κ² κ°μνν©λλ€.
κ²μ μ¦κ° μμ±(RAG)
μ νν AI λͺ¨λΈ μλ΅μ μν΄ κ΄λ ¨ λ°μ΄ν°λ₯Ό ν둬ννΈμ ν΅ν©ν΄μΌ νλ λ¬Έμ λ₯Ό ν΄κ²°νκΈ° μν΄ κ²μ μ¦κ° μμ±(RAG)μ΄λΌλ κΈ°μ μ΄ λ±μ₯νμ΅λλ€.
μ΄ μ κ·Ό λ°©μμλ λ¬Έμμμ λΉμ ν λ°μ΄ν°λ₯Ό μ½κ³ λ³νν λ€μ λ²‘ν° λ°μ΄ν°λ² μ΄μ€μ κΈ°λ‘νλ μΌκ΄ μ²λ¦¬ μ€νμΌμ νλ‘κ·Έλλ° λͺ¨λΈμ΄ ν¬ν¨λ©λλ€. λμ μμ€μμ μ΄κ²μ ETL(μΆμΆ, λ³ν λ° λ‘λ) νμ΄νλΌμΈμ λλ€. λ²‘ν° λ°μ΄ν°λ² μ΄μ€λ RAG κΈ°μ μ κ²μ λΆλΆμμ μ¬μ©λ©λλ€.
λΉμ ν λ°μ΄ν°λ₯Ό λ²‘ν° λ°μ΄ν°λ² μ΄μ€λ‘ λ‘λνλ κ³Όμ μμ κ°μ₯ μ€μν λ³ν μ€ νλλ μλ³Έ λ¬Έμλ₯Ό λ μμ μ‘°κ°μΌλ‘ λΆν νλ κ²μ λλ€. μλ³Έ λ¬Έμλ₯Ό μμ μ‘°κ°μΌλ‘ λΆν νλ μ μ°¨μλ λ κ°μ§ μ€μν λ¨κ³κ° μμ΅λλ€:
-
μ½ν μΈ μ μλ―Έμ κ²½κ³λ₯Ό μ μ§νλ©΄μ λ¬Έμλ₯Ό μ¬λ¬ λΆλΆμΌλ‘ λΆν ν©λλ€. μλ₯Ό λ€μ΄ λ¨λ½κ³Ό νκ° μλ λ¬Έμμ κ²½μ°, λ¨λ½μ΄λ ν μ€κ°μ λ¬Έμλ₯Ό λΆν νμ§ μμμΌ ν©λλ€. μ½λμ κ²½μ° λ©μλ ꡬν μ€κ°μ μ½λλ₯Ό λΆν νμ§ λ§μΈμ.
-
λ¬Έμμ κ° λΆλΆμ AI λͺ¨λΈμ ν ν° νλμ λΉν΄ ν¬κΈ°κ° μμ λΆλΆμΌλ‘ λ λΆν ν©λλ€.
RAGμ λ€μ λ¨κ³λ μ¬μ©μ μ λ ₯μ μ²λ¦¬νλ κ²μ λλ€. μ¬μ©μμ μ§λ¬Έμ AI λͺ¨λΈμ΄ λ΅λ³ν΄μΌ νλ κ²½μ°, ν΄λΉ μ§λ¬Έκ³Ό λͺ¨λ βμ μ¬νβ λ¬Έμ μ‘°κ°μ΄ AI λͺ¨λΈμ μ μ‘λλ ν둬ννΈμ λ°°μΉλ©λλ€. μ΄κ²μ΄ λ°λ‘ λ²‘ν° λ°μ΄ν°λ² μ΄μ€λ₯Ό μ¬μ©νλ μ΄μ μ λλ€. λ²‘ν° λ°μ΄ν°λ² μ΄μ€λ μ μ¬ν μ½ν μΈ λ₯Ό μ°Ύλ λ° λ§€μ° λ₯μν©λλ€.
-
ETL νμ΄νλΌμΈμμλ λ°μ΄ν° μμ€μμ λ°μ΄ν°λ₯Ό μΆμΆνκ³ κ΅¬μ‘°νλ λ²‘ν° μ μ₯μμ μ μ₯νλ νλ¦μ μ‘°μ¨νμ¬ AI λͺ¨λΈμ λ°μ΄ν°λ₯Ό μ λ¬ν λ κ²μμ μ΅μ νλ νμμΌλ‘ λ°μ΄ν°λ₯Ό ν보νλ λ°©λ²μ λν μμΈν μ 보λ₯Ό μ 곡ν©λλ€.
-
ChatClient - RAGλ μ ν리μΌμ΄μ μμ
QuestionAnswerAdvisor
λ₯Ό μ¬μ©νμ¬ RAG κΈ°λ₯μ νμ±ννλ λ°©λ²μ μ€λͺ ν©λλ€.
ν¨μ νΈμΆ
λκ·λͺ¨ μΈμ΄ λͺ¨λΈ(LLM)μ νμ΅ ν κ³ μ λμ΄ μ€λλ μ§μμΌλ‘ μ΄μ΄μ§λ©° μΈλΆ λ°μ΄ν°μ μ‘μΈμ€νκ±°λ μμ ν μ μμ΅λλ€.
ν¨μ νΈμΆ λ©μ»€λμ¦μ μ΄λ¬ν λ¨μ μ ν΄κ²°ν©λλ€. μ΄λ₯Ό ν΅ν΄ μ체 ν¨μλ₯Ό λ±λ‘νμ¬ λκ·λͺ¨ μΈμ΄ λͺ¨λΈμ μΈλΆ μμ€ν μ APIμ μ°κ²°ν μ μμ΅λλ€. μ΄λ¬ν μμ€ν μ LLMμ μ€μκ° λ°μ΄ν°λ₯Ό μ 곡νκ³ λμ λ°μ΄ν° μ²λ¦¬ μμ μ μνν μ μμ΅λλ€.
Spring AIλ ν¨μ νΈμΆμ μ§μνκΈ° μν΄ μμ±ν΄μΌ νλ μ½λλ₯Ό ν¬κ² κ°μνν©λλ€. ν¨μ νΈμΆ λνλ₯Ό λμ μ²λ¦¬ν΄μ€λλ€. ν¨μλ₯Ό @Bean
μΌλ‘ μ 곡ν λ€μ ν둬ννΈ μ΅μ
μ ν¨μμ λΉ μ΄λ¦μ μ 곡νμ¬ ν΄λΉ ν¨μλ₯Ό νμ±νν μ μμ΅λλ€. λν λ¨μΌ ν둬ννΈμμ μ¬λ¬ ν¨μλ₯Ό μ μνκ³ μ°Έμ‘°ν μ μμ΅λλ€.
-
ν¨μ μ μ μ 보λ₯Ό ν¨κ» μ μ‘νλ μ±ν μμ²μ μνν©λλ€.
name
,Βdescription
(μ: λͺ¨λΈμ΄ μΈμ ν¨μλ₯Ό νΈμΆν΄μΌ νλμ§ μ€λͺ ), 'μ λ ₯ 맀κ°λ³μ'(μ: ν¨μμ μ λ ₯ 맀κ°λ³μ μ€ν€λ§)λ₯Ό μ 곡ν©λλ€. -
λͺ¨λΈμ΄ ν¨μλ₯Ό νΈμΆνκΈ°λ‘ κ²°μ νλ©΄ μ λ ₯ 맀κ°λ³μλ₯Ό μ¬μ©νμ¬ ν¨μλ₯Ό νΈμΆνκ³ μΆλ ₯μ λͺ¨λΈμ λ°νν©λλ€.
-
Spring AIκ° μ΄ λνλ₯Ό μ²λ¦¬ν©λλ€. μ μ ν ν¨μμ ν¨μ νΈμΆμ μ μ‘νκ³ κ·Έ κ²°κ³Όλ₯Ό λͺ¨λΈμ λ°νν©λλ€.
-
λͺ¨λΈμ νμν λͺ¨λ μ 보λ₯Ό κ²μνκΈ° μν΄ μ¬λ¬ λ²μ ν¨μ νΈμΆ(Function Calling)μ μνν μ μμ΅λλ€.
-
νμν λͺ¨λ μ 보λ₯Ό νλνλ©΄ λͺ¨λΈμ΄ μλ΅μ μμ±ν©λλ€.
λ€λ₯Έ AI λͺ¨λΈμμ μ΄ κΈ°λ₯μ μ¬μ©νλ λ°©λ²μ λν μμΈν λ΄μ©μ ν¨μ νΈμΆ(Function Calling) μ€λͺ μλ₯Ό μ°Έμ‘°νμΈμ.
AI μλ΅ νκ°νκΈ°
μ¬μ©μ μμ²μ λν AI μμ€ν μ μΆλ ₯μ ν¨κ³Όμ μΌλ‘ νκ°νλ κ²μ μ΅μ’ μ ν리μΌμ΄μ μ μ νμ±κ³Ό μ μ©μ±μ 보μ₯νλ λ° λ§€μ° μ€μν©λλ€. μ΄λ¬ν λͺ©μ μΌλ‘ μ¬μ νμ΅λ λͺ¨λΈ μ체λ₯Ό μ¬μ©ν μ μλ λͺ κ°μ§ μλ‘μ΄ κΈ°μ μ΄ λ±μ₯νκ³ μμ΅λλ€.
μ΄ νκ° νλ‘μΈμ€μλ μμ±λ μλ΅μ΄ μ¬μ©μμ μλ λ° μΏΌλ¦¬μ λ§₯λ½κ³Ό μΌμΉνλμ§ μ¬λΆλ₯Ό λΆμνλ μμ μ΄ ν¬ν¨λ©λλ€. κ΄λ ¨μ±, μΌκ΄μ±, μ¬μ€ μ νμ± λ±μ λ©νΈλ¦μ μ¬μ©νμ¬ AIκ° μμ±ν μλ΅μ νμ§μ μΈ‘μ ν©λλ€.
ν κ°μ§ μ κ·Ό λ°©μμ μ¬μ©μμ μμ²κ³Ό AI λͺ¨λΈμ μλ΅μ λͺ¨λ λͺ¨λΈμ μ μνμ¬ μλ΅μ΄ μ 곡λ λ°μ΄ν°μ μΌμΉνλμ§ μ¬λΆλ₯Ό 쿼리νλ κ²μ λλ€.
λν λ²‘ν° λ°μ΄ν°λ² μ΄μ€μ μ μ₯λ μ 보λ₯Ό 보쑰 λ°μ΄ν°λ‘ νμ©νλ©΄ νκ° νλ‘μΈμ€λ₯Ό κ°μ νμ¬ μλ΅ κ΄λ ¨μ±μ νλ¨νλ λ° λμμ΄ λ μ μμ΅λλ€.
Spring AI νλ‘μ νΈλ νμ¬ λͺ¨λΈ μλ΅μ νκ°νκΈ° μν κΈ°λ³Έ μ λ΅μ λν μ‘μΈμ€λ₯Ό μ 곡νλ Evaluator
APIλ₯Ό μ 곡ν©λλ€. μμΈν λ΄μ©μ νκ° ν
μ€νΈ λ¬Έμλ₯Ό μ°Έμ‘°νμΈμ.