Post

๐ŸŠ LLM ๊ธฐ๋ฐ˜ ์ œ์ฃผ์—ฌํ–‰ ์ถ”์ฒœํ”Œ๋žซํผ - ํƒ๋ผ,ํƒ๋‚˜

๐ŸŠ LLM ๊ธฐ๋ฐ˜ ์ œ์ฃผ์—ฌํ–‰ ์ถ”์ฒœํ”Œ๋žซํผ - ํƒ๋ผ,ํƒ๋‚˜

๐ŸŠ LLM ๊ธฐ๋ฐ˜ ์ œ์ฃผ๋„ ์—ฌํ–‰ ๊ณ„ํš ์ถ”์ฒœ ์„œ๋น„์Šค โ€˜ํƒ๋ผ, ํƒ๋‚˜โ€˜

๐Ÿ“‘ ๋ชฉ์ฐจ

ํ”„๋กœ์ ํŠธ์˜ ์†Œ๊ฐœ

๐ŸŠ LLM ๊ธฐ๋ฐ˜ ์ œ์ฃผ๋„ ์—ฌํ–‰ ๊ณ„ํš ์ถ”์ฒœ ์„œ๋น„์Šค โ€œํƒ๋ผ, ํƒ๋‚˜โ€

  LLM๊ณผ RAG๋ฅผ ๊ฒฐํ•ฉํ•˜์—ฌ ์ œ์ฃผ๋„๋ฅผ ์—ฌํ–‰ํ•˜๋Š” ์‚ฌ์šฉ์ž๋“ค์—๊ฒŒ
  ๊ฐœ์ธ์˜ ์ทจํ–ฅ๊ณผ ํ•„์š”์— ๋งž์ถ˜ ์—ฌํ–‰ ๊ณ„ํš์„ ์‰ฝ๊ฒŒ ์„ธ์šฐ๊ณ  ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋„๋ก ๋•๋Š” ํ”Œ๋žซํผ

์—ญํ•  ๋ฐ ๊ธฐ์—ฌ

  • ๊ธฐํš: ๋ฐœํ‘œ PPT ์ œ์ž‘, ๋ณด๊ณ ์„œ ์ž‘์„ฑ, ์„ค๊ณ„๋„ ๋ฐ ์•„ํ‚คํ…์ณ ๋ฌธ์„œํ™” ์ž‘์—….
  • ๋ฐ์ดํ„ฐ ์ˆ˜์ง‘ ๋ฐ ์ „์ฒ˜๋ฆฌ: ๋ฒกํ„ฐ DB ๊ตฌ์„ฑ์— ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ์ˆ˜์ง‘ํ•˜๊ณ , ์ „์ฒ˜๋ฆฌํ•จ.
  • ๋ฒกํ„ฐ DB ๊ตฌ์„ฑ: Pinecone์„ ์ด์šฉํ•œ ๋ฒกํ„ฐํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ๊ตฌ์„ฑ, RAG ๊ธฐ๋Šฅ์„ ํ†ตํ•ด LLM์˜ ๋‹ต๋ณ€ ์„ฑ๋Šฅ ํ–ฅ์ƒ.
  • ๋ฐฑ์—”๋“œ ๊ฐœ๋ฐœ: ํšŒ์› ๊ธฐ๋Šฅ์„ ๊ฐœ๋ฐœํ•˜๊ณ  ํšŒ์› ์„ธ์…˜ ์œ ์ง€ ๋กœ์ง ๊ตฌํ˜„์„ ํ†ตํ•ด ์‚ฌ์šฉ์ž ๊ฒฝํ—˜์„ ๊ฐ•ํ™”.
  • LLM ํ”„๋กฌํฌํ„ฐ ์—”์ง€๋‹ˆ์–ด๋ง: ํ”„๋กฌํฌํ„ฐ ์—”์ง€๋‹ˆ์–ด๋ง์„ ํ†ตํ•ด์„œ LLM ๋ชจ๋ธ์˜ ์—ญํ•  ์ œํ•œ ๋ฐ ๋‹ต๋ณ€ ์„ฑ๋Šฅ ๊ฐ•ํ™”.

ํ”„๋กœ์ ํŠธ ์ง„ํ–‰ ๊ณผ์ •

๊ฐœ๋ฐœ ๋ฒ”์œ„

  • ํ”Œ๋žซํผ ๊ธฐ๋Šฅ:
    • ์—ฌํ–‰ ์ผ์ • ์ถ”์ฒœ: ์‚ฌ์šฉ์ž ์ •๋ณด๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ๊ฐœ์ธํ™”๋œ ์—ฌํ–‰ ์ผ์ •์„ ์ถ”์ฒœ.
    • ๋งˆ์ดํŽ˜์ด์ง€: ์‚ฌ์šฉ์ž๊ฐ€ ์ €์žฅํ•œ ์ผ์ •์„ ๊ด€๋ฆฌ.
  • ๊ธฐ์ˆ  ์Šคํƒ:
    • ํ”„๋ก ํŠธ์—”๋“œ: React๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋™์ ์ธ ์‚ฌ์šฉ์ž ๊ฒฝํ—˜์„ ์ œ๊ณต.
    • ๋ฐฑ์—”๋“œ: Spring Boot์™€ Flask๋ฅผ ์ด์šฉํ•˜์—ฌ RESTful API๋ฅผ ๊ตฌ์ถ•ํ•˜๊ณ  ์•ˆ์ •์ ์ธ ์„œ๋ฒ„ ํ™˜๊ฒฝ์„ ๊ตฌํ˜„.
    • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค: MySQL๊ณผ Pinecone DB๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์‚ฌ์šฉ์ž ๋ฐ์ดํ„ฐ์™€ ์žฅ์†Œ ์ •๋ณด๋ฅผ ์ฒด๊ณ„์ ์œผ๋กœ ๊ด€๋ฆฌ.
    • LLM ํ†ตํ•ฉ: OpenAI์˜ GPT๋ฅผ ํ™œ์šฉํ•˜์—ฌ ๋Œ€ํ™”ํ˜• ์ธํ„ฐํŽ˜์ด์Šค์™€ ๋กœ์ง์„ ๊ตฌํ˜„.
  • ์‚ฌ์šฉ ๋ฐ์ดํ„ฐ์…‹:
    RAG ํ™œ์šฉ์„ ์œ„ํ•œ ๋ฐ์ดํ„ฐ์…‹ ๊ตฌ์„ฑ
    • ํ•œ๊ตญ๊ด€๊ด‘๊ณต์‚ฌ ๊ด€๊ด‘์ง€ ๋ฐ์ดํ„ฐ ํ™œ์šฉ
    • ๊ตฌ๊ธ€๋งต ๊ด€๊ด‘์ง€ ๋ฐ์ดํ„ฐ ํฌ๋กค๋ง

์ตœ์ข… ๊ฒฐ๊ณผ๋ฌผ

๐Ÿ“Œ ๋กœ๊ทธ์ธ ๋ฐ ํšŒ์›๊ฐ€์ž… ํŽ˜์ด์ง€

ํšŒ์›๊ฐ€์ž… ํŽ˜์ด์ง€๋กœ๊ทธ์ธ ํŽ˜์ด์ง€
  • ๋กœ๊ทธ์ธ ๋ฐ ํšŒ์›๊ฐ€์ž… ํŽ˜์ด์ง€
    • ๋กœ๊ทธ์ธ ๊ธฐ๋Šฅ
      • ์‚ฌ์šฉ์ž๊ฐ€ ์ด๋ฉ”์ผ๊ณผ ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ์ž…๋ ฅํ•˜์—ฌ ๋กœ๊ทธ์ธ ๊ฐ€๋Šฅ
      • ๋กœ๊ทธ์ธ ์„ฑ๊ณต ์‹œ ๋ฉ”์ธ ํŽ˜์ด์ง€๋กœ ์ž๋™ ์ด๋™
    • ํšŒ์›๊ฐ€์ž… ๊ธฐ๋Šฅ
      • ์ƒˆ๋กœ์šด ์‚ฌ์šฉ์ž๊ฐ€ ์ด๋ฉ”์ผ๊ณผ ๋‹‰๋„ค์ž„ ๋ฐ ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ์ž…๋ ฅํ•˜์—ฌ ๊ณ„์ • ์ƒ์„ฑ ๊ฐ€๋Šฅ

๐Ÿ“Œ ๋ฉ”์ธ ํŽ˜์ด์ง€

๋ฉ”์ธ ํŽ˜์ด์ง€
  • ๋ฉ”์ธ ํŽ˜์ด์ง€
    • ์ œ์ฃผ๋„ ์ถ”์ฒœ ์—ฌํ–‰์ง€ ์˜์ƒ
      • ๋ฉ”์ธ ํŽ˜์ด์ง€์—์„œ ์ œ์ฃผ๋„์—ฌํ–‰ ์ถ”์ฒœ ์˜์ƒ์„ ๋ฐฐ์น˜ํ•ด ์‚ฌ์šฉ์ž ์ด๋ชฉ ์ง‘์ค‘
    • ์ฃผ์š” ๊ธฐ๋Šฅ ๋ฐ”๋กœ ๊ฐ€๊ธฐ ๋ฒ„ํŠผ
      • ๋งˆ์ดํŽ˜์ด์ง€, ์ผ์ • ์ถ”์ฒœ, ๋กœ๊ทธ์•„์›ƒ ๊ธฐ๋Šฅ์œผ๋กœ ๋ฐ”๋กœ ์ด๋™ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฒ„ํŠผ ์ œ๊ณต
      • ์‚ฌ์šฉ์ž ํŽธ์˜์„ฑ์„ ๊ณ ๋ คํ•œ ์ง๊ด€์ ์ธ ๋„ค๋น„๊ฒŒ์ด์…˜ ๊ตฌ์„ฑ

๐Ÿ“Œ ์—ฌํ–‰ ์ผ์ • ์ถ”์ฒœ ํŽ˜์ด์ง€

์‹œ์ž‘ ํ™”๋ฉด์‚ฌ์šฉ์ž ์ดˆ๊ธฐ ์ž…๋ ฅ์ผ์ • ์ถ”์ฒœ ์™„๋ฃŒ
  • ์—ฌํ–‰ ์ผ์ • ์ถ”์ฒœ ํŽ˜์ด์ง€
    • ์—ฌํ–‰ ์—์ด์ „ํŠธ โ€˜ํƒํƒ์ดโ€™์™€ ๋Œ€ํ™”๋ฅผ ์‹œ์ž‘ํ•˜๋ฉด ์ผ์ • ์ถ”์ฒœ
    • ์‚ฌ์šฉ์ž ์ดˆ๊ธฐ ์ž…๋ ฅ ๊ธฐ๋Šฅ
      • ์‚ฌ์šฉ์ž๊ฐ€ ์—ฌํ–‰ ์ผ์ •(๋‚ ์งœ), ๋™๋ฐ˜์ž, ํ…Œ๋งˆ๋ฅผ ์ดˆ๊ธฐ ์ž…๋ ฅ๊ฐ’์œผ๋กœ ์„ ํƒ ๊ฐ€๋Šฅ
      • ํ…Œ๋งˆ๋Š” ๋‹ค์ค‘ ์„ ํƒ ๊ฐ€๋Šฅ(์˜ˆ: ํž๋ง, ๋ชจํ—˜, ๋ฌธํ™” ๋“ฑ)
    • ์—ฌํ–‰ ์ผ์ • ์ถ”์ฒœ ๊ธฐ๋Šฅ
      • ์ž…๋ ฅ๋œ ์ดˆ๊ธฐ ๋ฐ์ดํ„ฐ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ LLM์„ ํ™œ์šฉํ•ด ๊ฐœ์ธํ™”๋œ ์—ฌํ–‰ ์ผ์ • ์ถ”์ฒœ ์ œ๊ณต
      • ์‚ฌ์šฉ์ž๋Š” ๋ฒ„ํŠผ ํด๋ฆญ์œผ๋กœ ๊ฐ„ํŽธํ•˜๊ฒŒ ์—ฌํ–‰ ์ผ์ •์„ ์ถ”์ฒœ๋ฐ›์„ ์ˆ˜ ์žˆ์Œ

๐Ÿ“Œ ์—ฌํ–‰ ์ผ์ • ์ถ”์ฒœ ํŽ˜์ด์ง€ - ์ผ์ • ์ˆ˜์ •

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

๐Ÿ“Œ ์ƒ์„ธ ์ผ์ • ํŽ˜์ด์ง€ & ๋งˆ์ดํŽ˜์ด์ง€

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

๐Ÿงฉ ์„ค๊ณ„ ๋‚ด์šฉ

ํ”„๋กœ์ ํŠธ ๊ตฌ์กฐ๋„

**<ํ”„๋กœ์ ํŠธ ๊ตฌ์กฐ๋„="">**

๐Ÿ”ท 1. ํ”„๋ก ํŠธ์—”๋“œ (React)

  • ์‚ฌ์šฉ์ž์™€ ์ง์ ‘ ์ƒํ˜ธ์ž‘์šฉํ•˜๋Š” UI๋Š” React๋กœ ๊ฐœ๋ฐœ๋จ.
  • ๋ธŒ๋ผ์šฐ์ €์—์„œ ์‹คํ–‰๋˜๋ฉฐ, ์‚ฌ์šฉ์ž ์š”์ฒญ์€ LoadBalancer๋ฅผ ํ†ตํ•ด ๋ฐฑ์—”๋“œ๋กœ ์ „๋‹ฌ๋จ.

๐Ÿ”ถ 2. ๋กœ๋“œ ๋ฐธ๋Ÿฐ์„œ (AWS Load Balancer)

  • ์‚ฌ์šฉ์ž ์š”์ฒญ์„ ๋‘ ๊ฐœ์˜ EC2 ์ธ์Šคํ„ด์Šค(Spring Boot / Flask)๋กœ ๋ถ„์‚ฐ ์ฒ˜๋ฆฌ.
  • ํŠธ๋ž˜ํ”ฝ ๋ถ„์‚ฐ์„ ํ†ตํ•ด ์„œ๋ฒ„ ๊ณผ๋ถ€ํ•˜ ๋ฐฉ์ง€, ๊ณ ๊ฐ€์šฉ์„ฑ ํ™•๋ณด.

๐ŸŸฉ 3. Spring Boot (EC2 - ๋ฐฑ์—”๋“œ ์„œ๋ฒ„)

  • ์ฃผ์š” ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง ๋ฐ API ์ฒ˜๋ฆฌ ๋‹ด๋‹น.
  • ํšŒ์›๊ฐ€์ž…, ๋กœ๊ทธ์ธ, ๋งˆ์ดํŽ˜์ด์ง€, ์ผ์ • CRUD ๋“ฑ์˜ ๊ธฐ๋Šฅ ๊ตฌํ˜„.
  • MySQL(RDS)์™€ ์—ฐ๋™๋˜์–ด ์‚ฌ์šฉ์ž ๋ฐ์ดํ„ฐ๋ฅผ ๊ด€๋ฆฌ.

๐ŸŸฆ 4. Flask + Gunicorn (EC2 - ๋ฐฑ์—”๋“œ ์„œ๋ฒ„)

  • ์—ฌํ–‰ ์ผ์ • ์ถ”์ฒœ ๊ธฐ๋Šฅ ์ „์šฉ ์„œ๋ฒ„.
  • Python ๊ธฐ๋ฐ˜ Flask๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ LLM ๊ด€๋ จ ์š”์ฒญ ์ฒ˜๋ฆฌ.
  • Gunicorn์€ Flask ์•ฑ์„ WSGI ์„œ๋ฒ„๋กœ ์‹คํ–‰ํ•˜๋Š” ์—ญํ• .

๐ŸŸจ 5. RDS (MySQL)

  • AWS์—์„œ ์ œ๊ณตํ•˜๋Š” ํด๋ผ์šฐ๋“œ ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์„œ๋น„์Šค.
  • ์‚ฌ์šฉ์ž, ์ผ์ •, ์žฅ์†Œ ๋ฐ์ดํ„ฐ ๋“ฑ์„ ์ €์žฅ.
  • Spring Boot ๋ฐ Flask์—์„œ ๋ชจ๋‘ ์ ‘๊ทผ ๊ฐ€๋Šฅ.

๐Ÿง  6. LLM ์—ฐ๋™ ๊ตฌ์„ฑ
๐Ÿ”น Pinecone

  • ๋ฒกํ„ฐ ๊ฒ€์ƒ‰ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค.
  • ์ „์ฒ˜๋ฆฌ๋œ ๊ด€๊ด‘์ง€ ์ •๋ณด๋ฅผ ๋ฒกํ„ฐ๋กœ ์ €์žฅํ•˜๊ณ , RAG ๋ฐฉ์‹์œผ๋กœ ๊ฒ€์ƒ‰ ์ˆ˜ํ–‰.

๐Ÿ”น ChatGPT (OpenAI)

  • ์ž์—ฐ์–ด ์ดํ•ด ๋ฐ ์—ฌํ–‰ ์ผ์ • ์ƒ์„ฑ ์—ญํ• .
  • ์‚ฌ์šฉ์ž์˜ ์ž…๋ ฅ์„ ๋ฐ”ํƒ•์œผ๋กœ ํ”„๋กฌํ”„ํŠธ ์ฒ˜๋ฆฌ ๋ฐ ๊ฒฐ๊ณผ ์ƒ์„ฑ.

๐Ÿ”น LangChain

  • Pinecone + ChatGPT + Flask ๊ฐ„ ํ๋ฆ„์„ ์ œ์–ดํ•˜๋Š” Python ํ”„๋ ˆ์ž„์›Œํฌ.
  • ์ž…๋ ฅ โ†’ ๋ฒกํ„ฐ ๊ฒ€์ƒ‰ โ†’ ์‘๋‹ต ์ƒ์„ฑ ๊ณผ์ •์„ ์ฒด๊ณ„์ ์œผ๋กœ ๊ด€๋ฆฌ.

๐ŸŠ ํƒํƒ์ด ๋งˆ์Šค์ฝ”ํŠธ

  • ์„œ๋น„์Šค ์ •์ฒด์„ฑ์„ ์ƒ์ง•ํ•˜๋Š” ๋งˆ์Šค์ฝ”ํŠธ.
  • ์œ ์ € ์นœํ™”์  ๊ฒฝํ—˜์„ ์œ„ํ•œ ๋””์ž์ธ ์š”์†Œ.

โœ… ์ „์ฒด ํ๋ฆ„ ์š”์•ฝ

1
2
3
4
5
6
7
์‚ฌ์šฉ์ž (React)
โ†“
LoadBalancer
โ†“
EC2 ์ธ์Šคํ„ด์Šค
โ”œโ”€ Spring Boot โ†’ MySQL (RDS)
โ””โ”€ Flask + Gunicorn โ†’ LangChain โ†’ Pinecone + ChatGPT

ERD ์„ค๊ณ„๋„
1
2
- ์ฃผ์š” ํ…Œ์ด๋ธ”(Users, saved_plans, travel_plans) ๊ฐ„์˜ ๊ด€๊ณ„๋ฅผ ์„ค๊ณ„
- ๋ฐ์ดํ„ฐ ํ๋ฆ„๊ณผ ์ฐธ์กฐ ๊ตฌ์กฐ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํšจ์œจ์ ์ธ ์ฟผ๋ฆฌ ๊ตฌ์กฐ ๋งˆ๋ จ

์œ ์ € ํ”Œ๋กœ์šฐ ์ฐจํŠธ
1
2
- ์‚ฌ์šฉ์ž์˜ ํ–‰๋™ ํ๋ฆ„์„ ์‹œ๊ฐํ™”ํ•˜์—ฌ UX ํ๋ฆ„์„ ์„ค๊ณ„
- ์ฃผ์š” ๊ธฐ๋Šฅ(ํšŒ์›๊ฐ€์ž… โ†’ ์ผ์ • ์ƒ์„ฑ โ†’ ๋งˆ์ดํŽ˜์ด์ง€) ๊ฐ„ ์ „ํ™˜ ๊ตฌ์กฐ๋ฅผ ๋ช…ํ™•ํžˆ ํ‘œํ˜„

ํ”„๋ก ํŠธ-๋ฐฑ์—”๋“œ ๊ตฌ์กฐ๋„
1
2
3
4
5
6
- ์‚ฌ์šฉ์ž๊ฐ€ React ํŽ˜์ด์ง€์—์„œ ์ผ์ • ์ถ”์ฒœ ์š”์ฒญ
- HTTP + JSON ํ˜•ํƒœ๋กœ ์„œ๋ฒ„์— ์ „๋‹ฌ
- ์„œ๋ฒ„๊ฐ€ REST API ํ†ตํ•ด ์š”์ฒญ ์ฒ˜๋ฆฌ
- LLM ํ˜ธ์ถœ + Vector DB โ†’ ์ž์—ฐ์–ด ์ถ”์ฒœ ์ผ์ • ์ƒ์„ฑ
- ์ƒ์„ฑ๋œ ์ผ์ •์€ DB์— ์ €์žฅ ํ›„ ์‚ฌ์šฉ์ž์—๊ฒŒ ์ „์†ก
- ์‚ฌ์šฉ์ž๋Š” ์ƒ์„ธ ์ผ์ • ํ™•์ธ ๋ฐ ์ €์žฅ ๊ฐ€๋Šฅ

๐Ÿ”ฉ ๊ธฐ์ˆ  ์Šคํƒ

๐Ÿ’ป Frontend

๐Ÿง  Backend

โ˜๏ธ Server & Infra

๐Ÿ—ƒ๏ธ Database

๐Ÿงช Development Tools

๐Ÿ“ก Communications

๐Ÿ”— Collaboration / APIs

๐Ÿ—‚๏ธ Version Control


๐Ÿ’ก ํšŒ๊ณ 

  • LLM + RAG ์—ฐ๋™ ๊ฒฝํ—˜
    OpenAI์˜ LLM๊ณผ RAG(Retrieval-Augmented Generation)๋ฅผ ์‹ค์ œ ์„œ๋น„์Šค ํ๋ฆ„์— ์ ์šฉํ•˜๋ฉด์„œ,
    ์–ด๋–ค ๋ฐ์ดํ„ฐ๋ฅผ ๋ฒกํ„ฐ๋กœ ์ €์žฅํ•˜๊ณ , ์–ด๋–ค ๋ฐ์ดํ„ฐ๋Š” DB๋กœ ๊ด€๋ฆฌํ•˜๋Š” ๊ฒƒ์ด ํšจ์œจ์ ์ผ์ง€ ๊ณ ๋ฏผํ•˜๊ฒŒ ๋˜์—ˆ๋‹ค. ๋‹จ์ˆœํžˆ ๋ชจ๋ธ์„ ํ˜ธ์ถœํ•˜๋Š” ์ˆ˜์ค€์„ ๋„˜์–ด, RAG๋ฅผ ์ ‘๋ชฉ์‹œํ‚ค๋Š” ๊ณผ์ •์—์„œ AI์˜ ํ• ๋ฃจ์‹œ๋„ค์ด์…˜์„ ์ตœ๋Œ€ํ•œ ๋ฐฉ์ง€ํ•˜๊ณ ์ž ํ•˜์˜€๊ณ ,
    ๊ฐœ๋ฐœ ๋‹น์‹œ ์—†๋Š” ์žฅ์†Œ๋ฅผ ์ถ”์ฒœํ•˜๊ฑฐ๋‚˜, ํ—ˆ์œ„ ์ •๋ณด๋ฅผ ์ œ๊ณตํ•˜๋Š” ๋“ฑ์˜ ๋ฌธ์ œ๋ฅผ ์ตœ์†Œํ™” ํ•˜๊ณ ์ž ํ•˜์˜€๋‹ค.

  • Spring Boot ๊ธฐ๋ฐ˜์˜ ๋ฐฑ์—”๋“œ ์„ค๊ณ„ Spring Boot๋ฅผ ์ด์šฉํ•ด RESTful API๋ฅผ ์ง์ ‘ ์„ค๊ณ„ํ•˜๊ณ  ๊ตฌํ˜„ํ•˜๋ฉด์„œ, ๋ฐฑ์—”๋“œ ๊ตฌ์กฐ๋ฅผ ์ฒด๊ณ„์ ์œผ๋กœ ์ดํ•ดํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค.
    ํ•จ๊ป˜ ๊ณต๋ถ€ํ•˜๋ฉด์„œ ์Šคํ”„๋ง๋ถ€ํŠธ ์‚ฌ์šฉํ•ด ๋ณด๋Š” ์ข‹์€ ๊ฒฝํ—˜์ด์—ˆ๋‹ค.

  • LangChain์„ ํ†ตํ•œ LLM ์ œ์–ด ๊ฒฝํ—˜
    LangChain์„ ํ™œ์šฉํ•˜์—ฌ ํ”„๋กฌํ”„ํŠธ ํ…œํ”Œ๋ฆฟ, ์ฒด์ธ ๊ตฌ์กฐ, ์—์ด์ „ํŠธ ์„ค์ • ๋“ฑ์„ ๋‹ค๋ค„๋ณด๋ฉฐ,
    ๋‹จ์ˆœํ•œ GPT ํ˜ธ์ถœ์„ ๋„˜์–ด LLM์˜ ๋™์ž‘์„ ๊ตฌ์„ฑ ์š”์†Œ๋ณ„๋กœ ์ œ์–ดํ•˜๋Š” ๊ตฌ์กฐํ™”๋œ ๋ฐฉ์‹์„ ์ตํž ์ˆ˜ ์žˆ์—ˆ๋‹ค.
    ํŠนํžˆ ์‚ฌ์šฉ์ž ์š”์ฒญ ํ๋ฆ„์„ ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ์„ค๊ณ„ํ•˜๊ธฐ ์œ„ํ•ด,
    ๋‹จ์–ด ๋‹จ์œ„์˜ ์œ ์‚ฌ๋„ ๋ถ„์„์„ ํ™œ์šฉํ•˜์—ฌ ๋ณด๋‹ค ์ •๊ตํ•˜๊ณ  ์˜๋ฏธ ์žˆ๋Š” ์žฅ์†Œ ์ถ”์ฒœ์ด ์ด๋ฃจ์–ด์ง€๋„๋ก ๊ณ ๋ฏผํ–ˆ๋‹ค.

  • ์œ ์ง€ ๋ณด์ˆ˜์˜ ์ค‘์š”์„ฑ ์ฒด๊ฐ
    ์‹ค์ œ ๋ฐ์ดํ„ฐ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ DB๋ฅผ ๊ตฌ์„ฑํ•˜๊ณ  RAG๋ฅผ ์ ์šฉํ•˜๋ฉด์„œ,
    ์žฅ์†Œ ์ •๋ณด์˜ ์ •ํ™•๋„ ์œ ์ง€์™€ ์‹ค์‹œ๊ฐ„ ์—…๋ฐ์ดํŠธ๊ฐ€ ์ค‘์š”ํ•œ ๊ณผ์ œ๋กœ ๋‹ค๊ฐ€์™”๋‹ค.
    ํŠนํžˆ ์‹œ์ฆŒ๋ณ„ ํ์—…ยท๋ณ€๊ฒฝ๋œ ์žฅ์†Œ๊ฐ€ ๋ฐ˜์˜๋˜์ง€ ์•Š์„ ๊ฒฝ์šฐ, ์‚ฌ์šฉ์ž ๊ฒฝํ—˜์— ์ง์ ‘์ ์ธ ์˜ํ–ฅ์„ ์ฃผ๊ธฐ ๋•Œ๋ฌธ์—
    ๋ฐ์ดํ„ฐ ์‹ ์„ ๋„์™€ ์‹œ์Šคํ…œ ์œ ์ง€ ๋ณด์ˆ˜์˜ ์ค‘์š”์„ฑ์„ ์‹ค๊ฐํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค.


https://github.com/CSID-DGU/2024-2-SCS4031-jjambbong-3


This post is licensed under CC BY 4.0 by the author.