Skip to content

Latest commit

ย 

History

261 Commits

Folders and files

NameName
Last commit message
Last commit date
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

TRENDB Logo

TRENDB: IT ํŠธ๋ Œ๋“œ ๋ถ„์„ AI ์—์ด์ „ํŠธ

๋‹ค์–‘ํ•œ ๋„๊ตฌ๋ฅผ ํ™œ์šฉํ•˜์—ฌ IT ์—…๊ณ„ ํŠธ๋ Œ๋“œ์— ๋Œ€ํ•œ ์ธ์‚ฌ์ดํŠธ๋ฅผ ์ œ๊ณตํ•˜๋Š” ์ง€๋Šฅํ˜• ์—์ด์ „ํŠธ

FastAPI ๊ธฐ๋ฐ˜ AI ์—์ด์ „ํŠธ ์„œ๋ฒ„

ํ”„๋กœ์ ํŠธ ๊ธฐ๊ฐ„: 2024.07.10 ~ 2025.06.04

Python FastAPI LangChain PostgreSQL Milvus Elasticsearch Redis AWS Amazon S3

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

๊ฐœ๋ฐœ ๋ชฉ์ 

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

TRENDB๋Š” ๊ธฐ์กด ๊ฑฐ๋Œ€ ์–ธ์–ด ๋ชจ๋ธ(LLM)์˜ ํ•œ๊ณ„์ธ ํ™˜๊ฐ ํ˜„์ƒ์„ ์ค„์ด๊ณ , ์‹ ๋ขฐํ•  ์ˆ˜ ์žˆ๋Š” ์ตœ์‹  ์ •๋ณด๋ฅผ ์ œ๊ณตํ•˜๋Š” ๊ฒƒ์„ ํ•ต์‹ฌ ๋ชฉํ‘œ๋กœ ์‚ผ์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ์œ„ํ•ด ๋ฐ์ดํ„ฐ ์ˆ˜์ง‘ ํŒŒ์ดํ”„๋ผ์ธ, AI ์—์ด์ „ํŠธ ์„œ๋ฒ„, ๋ฉ”์ธ API ์„œ๋ฒ„๋ฅผ ๋ถ„๋ฆฌํ•œ ๊ตฌ์กฐ๋กœ ์„œ๋น„์Šค ์ „๋ฐ˜์„ ์„ค๊ณ„ํ–ˆ์Šต๋‹ˆ๋‹ค.

์ด ์ค‘ langchain-trend-agent ๋ ˆํฌ๋Š” FastAPI ๊ธฐ๋ฐ˜์˜ AI ์—์ด์ „ํŠธ ์„œ๋ฒ„๋กœ์„œ, ์‚ฌ์šฉ์ž์˜ ์งˆ๋ฌธ์„ ๋ถ„์„ํ•˜๊ณ  ์ ์ ˆํ•œ ๋„๊ตฌ๋ฅผ ์„ ํƒํ•ด ์‹คํ–‰ํ•œ ๋’ค, ๊ฒฐ๊ณผ๋ฅผ ์ข…ํ•ฉํ•˜์—ฌ ์ŠคํŠธ๋ฆฌ๋ฐ ์‘๋‹ต๊ณผ ์ถœ์ฒ˜๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ ํŒ€ ๋ฌธ์„œ ๊ธฐ๋ฐ˜ ์งˆ์˜์‘๋‹ต๊ณผ ํŒŒ์ผ ์ฒจ๋ถ€ ๊ธฐ๋ฐ˜ ์ปจํ…์ŠคํŠธ ํ™•์žฅ ๊ธฐ๋Šฅ์„ ํ•จ๊ป˜ ์ œ๊ณตํ•˜์—ฌ, ๊ฒ€์ƒ‰, ๋ถ„์„, ์ƒ์„ฑ, ๊ฒ€์ฆ์ด ํ•˜๋‚˜์˜ ํ๋ฆ„ ์•ˆ์—์„œ ์ด์–ด์ง€๋Š” ์‚ฌ์šฉ์ž ๊ฒฝํ—˜์„ ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค.

์‚ฌ์šฉ์ž๋Š” ์ด ์„œ๋ฒ„๋ฅผ ํ†ตํ•ด ํ•˜๋‚˜์˜ ์„œ๋น„์Šค ์•ˆ์—์„œ ๋‹ค์Œ ํ๋ฆ„์„ ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ์ด์–ด๊ฐˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

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

์ €์žฅ์†Œ ์—ญํ• 

  • langchain-trend-agent ๋ ˆํฌ๋Š” FastAPI ๊ธฐ๋ฐ˜์˜ AI ์—์ด์ „ํŠธ ์„œ๋ฒ„์ž…๋‹ˆ๋‹ค.
  • LangChain ๊ธฐ๋ฐ˜ ์—์ด์ „ํŠธ๊ฐ€ 15๊ฐœ์˜ ๋„๊ตฌ๋ฅผ ์กฐํ•ฉํ•ด ๊ฒ€์ƒ‰, ๋ถ„์„, ์ƒ์„ฑ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.
  • ๋‰ด์Šค ๊ฒ€์ƒ‰, ์›น ๊ฒ€์ƒ‰, ์ปค๋ฎค๋‹ˆํ‹ฐ ํƒ์ƒ‰, ๋…ผ๋ฌธ ๊ฒ€์ƒ‰, ์ฃผ์‹ ๋ถ„์„, ์ด๋ฏธ์ง€ ์ƒ์„ฑ, ๋ฌธ์„œ ๊ธฐ๋ฐ˜ ์งˆ์˜์‘๋‹ต์„ ๋‹ด๋‹นํ•ฉ๋‹ˆ๋‹ค.
  • ๋ฉ”์ธ API ์„œ๋ฒ„์™€ ๋ฐ์ดํ„ฐ ์ˆ˜์ง‘ ํŒŒ์ดํ”„๋ผ์ธ์ด ์—ฐ๊ฒฐ๋œ ์ƒํƒœ์—์„œ, ์ตœ์ข… ์‚ฌ์šฉ์ž์—๊ฒŒ ๊ทผ๊ฑฐ ๊ธฐ๋ฐ˜ ์‘๋‹ต๊ณผ ์ŠคํŠธ๋ฆฌ๋ฐ ๊ฒฐ๊ณผ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

2. ํ•ต์‹ฌ ๊ธฐ๋Šฅ ๋ฐ ๊ตฌํ˜„

TRENDB์˜ ํ•ต์‹ฌ์€ LangChain ๊ธฐ๋ฐ˜ ์ž์œจํ˜• ์—์ด์ „ํŠธ๊ฐ€ ์‚ฌ์šฉ์ž์˜ ์งˆ๋ฌธ์„ ๋ถ„์„ํ•˜๊ณ , ๋“ฑ๋ก๋œ 15๊ฐœ์˜ ๋„๊ตฌ๋ฅผ ์กฐํ•ฉํ•ด ํ•˜๋‚˜์˜ ์‘๋‹ต์œผ๋กœ ์ •๋ฆฌํ•˜๋Š” ๋ฐ ์žˆ์Šต๋‹ˆ๋‹ค. ์—์ด์ „ํŠธ๋Š” ๋‰ด์Šค ๊ฒ€์ƒ‰, ์›น ๊ฒ€์ƒ‰, ์ปค๋ฎค๋‹ˆํ‹ฐ ํƒ์ƒ‰, ์‹œ๊ณ„์—ด ๋ถ„์„, ๋ฌธ์„œ ๊ธฐ๋ฐ˜ ์งˆ์˜์‘๋‹ต, ์ด๋ฏธ์ง€ ์ƒ์„ฑ, ๋ฆฌํฌํŠธ ์ƒ์„ฑ์„ ์ƒํ™ฉ์— ๋งž๊ฒŒ ์กฐํ•ฉํ•˜๋ฉฐ, ์ด ๊ณผ์ •์—์„œ ์ƒ์„ฑ๋œ ์‹œ๊ฐํ™” ์ž๋ฃŒ๋Š” S3์— ์—…๋กœ๋“œ๋˜์–ด ์ด๋ฏธ์ง€ ํ˜•ํƒœ๋กœ ํ•จ๊ป˜ ์ œ๊ณต๋ฉ๋‹ˆ๋‹ค.

2.1. ์‹œ์žฅ ๋ฐ ํŠธ๋ Œ๋“œ ๋ถ„์„

  • ํŠธ๋ Œ๋“œ ํ‚ค์›Œ๋“œ ๋ถ„์„: ๊ตญ๋‚ด ๋‰ด์Šค ๋ฐ์ดํ„ฐ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ๊ธฐ๊ฐ„๋ณ„(์ผ/์ฃผ/์›”) ํŠธ๋ Œ๋“œ ํ‚ค์›Œ๋“œ๋ฅผ ์ถ”์ถœํ•˜๊ณ , ์–ธ๊ธ‰๋Ÿ‰๊ณผ ๊ธ๋ถ€์ • ๋ถ„ํฌ๋ฅผ ์ฐจํŠธ๋กœ ์‹œ๊ฐํ™”ํ•˜์—ฌ ๊ธฐ์‚ฌ ๋ณธ๋ฌธ ์š”์•ฝ๊ณผ ํ•จ๊ป˜ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.
  • ๊ฒฝ์Ÿ์‚ฌ ๋™ํ–ฅ ๋ถ„์„: ์ง€์ •๋œ ๊ฒฝ์Ÿ์‚ฌ๋“ค์˜ ๋‰ด์Šค ์–ธ๊ธ‰๋Ÿ‰ ๋ฐ ๊ธ๋ถ€์ • ์ถ”์ด๋ฅผ ๋ถ„์„ํ•˜๊ณ , ๊ด€๋ จ ๋Œ€ํ‘œ ๊ธฐ์‚ฌ๋ฅผ ํ•จ๊ป˜ ์ œ์‹œํ•˜์—ฌ ๋น„๊ต ๋ถ„์„์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.
  • ๊ตฌ๊ธ€ ํŠธ๋ Œ๋“œ ๋ถ„์„: pytrends๋ฅผ ํ™œ์šฉํ•˜์—ฌ ํŠน์ • ํ‚ค์›Œ๋“œ์˜ ๊ด€์‹ฌ๋„ ๋ณ€ํ™”๋ฅผ ์‹œ๊ณ„์—ด ๊ทธ๋ž˜ํ”„๋กœ ์‹œ๊ฐํ™”ํ•ด ๋Œ€์ค‘์˜ ๊ด€์‹ฌ๋„ ์ถ”์ด๋ฅผ ์ง๊ด€์ ์œผ๋กœ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค.
  • ๊ตญ๋‚ด์™ธ ์ฃผ์‹ ๋ถ„์„: FinanceDataReader์™€ yfinance๋ฅผ ํ†ตํ•ด ๊ตญ๋‚ด์™ธ ์ฃผ์‹์˜ OHLCV ๋ฐ์ดํ„ฐ๋ฅผ ์กฐํšŒํ•˜๊ณ , ์ข…๊ฐ€ ๋ฐ ๊ฑฐ๋ž˜๋Ÿ‰ ์ฐจํŠธ๋ฅผ ์ƒ์„ฑํ•˜์—ฌ ์‹œ์žฅ ๋ฐ˜์‘์„ ๋ถ„์„ํ•ฉ๋‹ˆ๋‹ค.

๊ธฐ๊ฐ„๋ณ„ ํŠธ๋ Œ๋“œ ํ‚ค์›Œ๋“œ ๋ถ„์„ ํŠน์ • ํ‚ค์›Œ๋“œ ํŠธ๋ Œ๋“œ ๋ถ„์„
๊ธฐ๊ฐ„๋ณ„ ์ƒ์œ„ ํ‚ค์›Œ๋“œ ํŠธ๋ Œ๋“œ ๋ถ„์„(์ขŒ) ๋ฐ ํŠน์ • ํ‚ค์›Œ๋“œ ์‹ฌ์ธต ๋ถ„์„(์šฐ)

๊ฒฝ์Ÿ์‚ฌ ๋™ํ–ฅ ๋ถ„์„
๊ฒฝ์Ÿ์‚ฌ๋ณ„ ๋‰ด์Šค ์–ธ๊ธ‰๋Ÿ‰ ๋ฐ ๊ธ๋ถ€์ • ๋ถ„ํฌ ๋ถ„์„

๊ตญ๋‚ด์™ธ ์ฃผ์‹ ๋ถ„์„
์ฃผ๊ฐ€ ๋ฐ ๊ฑฐ๋ž˜๋Ÿ‰ ๋ณ€๋™ ์ถ”์ด ์‹œ๊ฐํ™”

2.2. ๋‹ค์ค‘ ์†Œ์Šค ์ •๋ณด ๊ฒ€์ƒ‰ ๋ฐ ๋ถ„์„

  • ๊ตญ๋‚ด์™ธ ๋‰ด์Šค ๊ฒ€์ƒ‰: ์ž์ฒด ๊ตฌ์ถ•ํ•œ Elasticsearch ๋‰ด์Šค ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ๊ตญ๋‚ด์™ธ ๊ธฐ์‚ฌ๋ฅผ ์‹ค์‹œ๊ฐ„์œผ๋กœ ๊ฒ€์ƒ‰ํ•˜๊ณ , ํ•ต์‹ฌ ๋‚ด์šฉ์„ ์š”์•ฝํ•˜์—ฌ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.
  • ์›น ๋ฐ ์ปค๋ฎค๋‹ˆํ‹ฐ ๊ฒ€์ƒ‰: Tavily ์›น ๊ฒ€์ƒ‰, ๋„ค์ด๋ฒ„/๋‹ค์Œ ๋ธ”๋กœ๊ทธ, Reddit, X(Twitter) ๋“ฑ ๋‹ค์–‘ํ•œ ์ฑ„๋„์„ ๋ณ‘๋ ฌ๋กœ ํƒ์ƒ‰ํ•˜์—ฌ ์ตœ์‹  ์ •๋ณด์™€ ์—ฌ๋ก ์„ ์ข…ํ•ฉ์ ์œผ๋กœ ์ˆ˜์ง‘ํ•ฉ๋‹ˆ๋‹ค.
  • ์ „๋ฌธ ์ •๋ณด ๊ฒ€์ƒ‰: Wikipedia, ๋‚˜๋ฌด์œ„ํ‚ค, OpenAlex(ํ•™์ˆ  ๋…ผ๋ฌธ), YouTube ๋“ฑ ํŠน์ • ๋„๋ฉ”์ธ์— ํŠนํ™”๋œ ๊ฒ€์ƒ‰์„ ์ˆ˜ํ–‰ํ•˜์—ฌ ์ •๋ณด์˜ ๊นŠ์ด์™€ ์‹ ๋ขฐ๋„๋ฅผ ๋†’์ž…๋‹ˆ๋‹ค.
  • ์›น/๋ฌธ์„œ ๋‚ด์šฉ ์ถ”์ถœ: ์‚ฌ์šฉ์ž๊ฐ€ ์ œ๊ณตํ•œ URL(์›นํŽ˜์ด์ง€, PDF)์˜ ํ…์ŠคํŠธ๋ฅผ ์ง์ ‘ ์ถ”์ถœํ•˜๊ณ  ๋ถ„์„ํ•˜์—ฌ ๋ณ„๋„์˜ ๊ฒ€์ƒ‰ ์—†์ด ์›ํ•˜๋Š” ์ •๋ณด์— ๋ฐ”๋กœ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์›น & ์ปค๋ฎค๋‹ˆํ‹ฐ ๊ฒ€์ƒ‰
๋‹ค์ค‘ ์ปค๋ฎค๋‹ˆํ‹ฐ ๋™์‹œ ๊ฒ€์ƒ‰ ๊ฒฐ๊ณผ

๋…ผ๋ฌธ ๊ฒ€์ƒ‰ ์œ ํŠœ๋ธŒ ๊ฒ€์ƒ‰
๋…ผ๋ฌธ ๊ฒ€์ƒ‰(์ขŒ) ๋ฐ ์œ ํŠœ๋ธŒ ์˜์ƒ ๊ฒ€์ƒ‰(์šฐ)

์›น/๋ฌธ์„œ ๋‚ด์šฉ ์ถ”์ถœ
URL ๊ธฐ๋ฐ˜ ์›นํŽ˜์ด์ง€ ๋‚ด์šฉ ์ถ”์ถœ ๋ฐ ์š”์•ฝ

2.3. ์ฝ˜ํ…์ธ  ์ƒ์„ฑ ๋ฐ ์ง€์‹ ํ™•์žฅ

  • ์ž๋™ ๋ฆฌํฌํŠธ ์ƒ์„ฑ: ์—ฌ๋Ÿฌ ๋ถ„์„ ๋„๊ตฌ์˜ ๊ฒฐ๊ณผ๋ฅผ ์ข…ํ•ฉํ•˜๊ณ , LLM์ด ์„œ์ˆ ํ˜• ๋ถ„์„๊นŒ์ง€ ๋”ํ•œ ์ „๋ฌธ์ ์ธ ํŠธ๋ Œ๋“œ ๋ฆฌํฌํŠธ(DOCX)๋ฅผ ์ž๋™์œผ๋กœ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.
  • AI ์ด๋ฏธ์ง€ ์ƒ์„ฑ: DALL-E 3๋ฅผ ํ™œ์šฉํ•˜์—ฌ ์‚ฌ์šฉ์ž์˜ ์•„์ด๋””์–ด๋ฅผ ์ฆ‰์‹œ ์‹œ๊ฐ์ ์ธ ์ด๋ฏธ์ง€๋กœ ๊ตฌ์ฒดํ™”ํ•ฉ๋‹ˆ๋‹ค.
  • ํŒ€ ๋ฌธ์„œ ๊ธฐ๋ฐ˜ RAG: ํŒ€ ์ „์šฉ ํด๋ผ์šฐ๋“œ์— ๋ฌธ์„œ(PDF, DOCX, TXT)๋ฅผ ์—…๋กœ๋“œํ•˜๋ฉด ์‹œ์Šคํ…œ์ด ์ž๋™์œผ๋กœ ํ…์ŠคํŠธ๋ฅผ ์ถ”์ถœํ•˜๊ณ  ์˜๋ฏธ ๋‹จ์œ„๋กœ ๋ถ„ํ• ํ•œ ๋’ค ๋ฒกํ„ฐ ์ž„๋ฒ ๋”ฉ์œผ๋กœ ๋ณ€ํ™˜ํ•˜์—ฌ Milvus์— ์ €์žฅํ•ฉ๋‹ˆ๋‹ค. ์ดํ›„ ์‚ฌ์šฉ์ž๊ฐ€ ํŒ€ ๋ฌธ์„œ์— ๋Œ€ํ•ด ์งˆ๋ฌธํ•˜๋ฉด, ์œ ์‚ฌ๋„๊ฐ€ ๋†’์€ ๋ฌธ์„œ ๋‚ด์šฉ์„ ์ฐพ์•„ ๋‹ต๋ณ€์˜ ๊ทผ๊ฑฐ๋กœ ํ™œ์šฉํ•ฉ๋‹ˆ๋‹ค.
  • ๋ฌธ์„œ ํŒŒ์ผ ์ฒจ๋ถ€: ๋Œ€ํ™” ์‹œ ๋ฌธ์„œ ํŒŒ์ผ(PDF, DOCX, HWP, TXT)์„ ์ฒจ๋ถ€ํ•˜๋ฉด, ํ•ด๋‹น ํŒŒ์ผ์—์„œ ํ…์ŠคํŠธ๋ฅผ ์ถ”์ถœํ•ด ํ˜„์žฌ ๋Œ€ํ™”์˜ ๋ฌธ๋งฅ์— ๋ฐ˜์˜ํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด AI ์—์ด์ „ํŠธ๋Š” ์ฒจ๋ถ€๋œ ํŒŒ์ผ ๋‚ด์šฉ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ๋ณด๋‹ค ์ •ํ™•ํ•œ ์‘๋‹ต์„ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ž๋™ ๋ฆฌํฌํŠธ ์ƒ์„ฑ
์ž๋™ ์ƒ์„ฑ๋œ ํŠธ๋ Œ๋“œ ๋ฆฌํฌํŠธ(DOCX) ๋‹ค์šด๋กœ๋“œ

AI ์ด๋ฏธ์ง€ ์ƒ์„ฑ
DALL-E 3๋ฅผ ํ™œ์šฉํ•œ ์ด๋ฏธ์ง€ ์ƒ์„ฑ

ํŒŒ์ผ ์ฒจ๋ถ€๋ฅผ ํ†ตํ•œ ๋Œ€ํ™” ๋ฌธ๋งฅ ํ™•์žฅ
์—…๋กœ๋“œ๋œ ํŒŒ์ผ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•œ ์งˆ์˜์‘๋‹ต

2.4. ์—์ด์ „ํŠธ ์‹œ์Šคํ…œ

  • ์œ ์—ฐํ•œ LLM ๋ชจ๋ธ ์„ ํƒ: GPT-4.1, GPT-4o-mini, Claude Sonnet, Grok-3 ๋“ฑ ์—ฌ๋Ÿฌ LLM์„ ์‚ฌ์šฉ์ž๊ฐ€ ์ง์ ‘ ์„ ํƒํ•˜์—ฌ ๋ชฉ์ ์— ๋งž๋Š” ์‘๋‹ต ์ „๋žต์„ ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์‚ฌ์šฉ์ž ๋งž์ถคํ˜• ํŽ˜๋ฅด์†Œ๋‚˜: ์‹œ์Šคํ…œ์—์„œ ์ œ๊ณตํ•˜๋Š” ํ”„๋ฆฌ์…‹์„ ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜, ์‚ฌ์šฉ์ž๊ฐ€ ์ง์ ‘ ์ฑ—๋ด‡์˜ ๋งํˆฌ, ์–ด์กฐ, ์—ญํ• ์„ ์ •์˜ํ•˜๋Š” ์ปค์Šคํ…€ ํŽ˜๋ฅด์†Œ๋‚˜๋ฅผ ์ƒ์„ฑํ•˜์—ฌ ๊ฐœ์ธํ™”๋œ ์‚ฌ์šฉ์ž ๊ฒฝํ—˜์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.
  • ์‹ค์‹œ๊ฐ„ ๋„๊ตฌ ์‹คํ–‰ ์ƒํƒœ ์ œ๊ณต: ์—์ด์ „ํŠธ๊ฐ€ ๋‹ต๋ณ€์„ ์ƒ์„ฑํ•˜๊ธฐ ์œ„ํ•ด ์–ด๋–ค ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๊ณ  ์žˆ๋Š”์ง€ ์‹ค์‹œ๊ฐ„์œผ๋กœ ์ŠคํŠธ๋ฆฌ๋ฐํ•˜์—ฌ, ์‚ฌ์šฉ์ž๊ฐ€ ์‘๋‹ต ์ƒ์„ฑ ๊ณผ์ •์„ ํˆฌ๋ช…ํ•˜๊ฒŒ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋„๋ก ํ–ˆ์Šต๋‹ˆ๋‹ค.
  • ์ฑ„ํŒ…๋ฐฉ ์ œ๋ชฉ ์ž๋™ ์ƒ์„ฑ: ์ฑ„ํŒ…๋ฐฉ์˜ ์ฒซ ๋ฒˆ์งธ ์งˆ๋ฌธ์ด ์ž…๋ ฅ๋˜๋ฉด, LLM์ด ํ•ด๋‹น ์งˆ๋ฌธ์˜ ํ•ต์‹ฌ ๋‚ด์šฉ์„ ์š”์•ฝํ•˜์—ฌ ์ฑ„ํŒ…๋ฐฉ ์ œ๋ชฉ์œผ๋กœ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ์‚ฌ์šฉ์ž๋Š” ๊ฐ ๋Œ€ํ™”์˜ ์ฃผ์ œ๋ฅผ ์‰ฝ๊ฒŒ ์‹๋ณ„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์‚ฌ์šฉ์ž ๋งž์ถคํ˜• ํŽ˜๋ฅด์†Œ๋‚˜
LLM ๋ชจ๋ธ ์„ ํƒ ๋ฐ ์‚ฌ์šฉ์ž ๋งž์ถคํ˜• ํŽ˜๋ฅด์†Œ๋‚˜ ์„ค์ •

2.5. ์‹ ๋ขฐ์„ฑ ๋ฐ ํˆฌ๋ช…์„ฑ

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

์‹ค์‹œ๊ฐ„ ์ถœ์ฒ˜ ์ œ๊ณต
์‹ค์‹œ๊ฐ„์œผ๋กœ ์ œ๊ณต๋˜๋Š” ๋‹ต๋ณ€ ๋ฐ ์ถœ์ฒ˜ ์ •๋ณด


3. ๊ธฐ์ˆ  ์Šคํƒ

๊ตฌ๋ถ„ ๊ธฐ์ˆ  ์ƒ์„ธ ์„ค๋ช…
Backend FastAPI, Python 3.10 ๋น„๋™๊ธฐ ๊ธฐ๋ฐ˜ AI ์—์ด์ „ํŠธ API ์„œ๋ฒ„ ๊ตฌ์ถ•
LLM & AI LangChain, OpenAI GPT-4.1, GPT-4o-mini, Claude Sonnet, Grok-3, DALL-E 3 ์—์ด์ „ํŠธ, ์ฒด์ธ, ๋ฉ”๋ชจ๋ฆฌ, ๋„๊ตฌ ํ˜ธ์ถœํ˜• ์‘๋‹ต ์ƒ์„ฑ ๋ฐ ์ด๋ฏธ์ง€ ์ƒ์„ฑ
Database PostgreSQL, Milvus, Elasticsearch, Redis ์ฑ„ํŒ…/์‚ฌ์šฉ์ž ๋ฐ์ดํ„ฐ ๊ด€๋ฆฌ, ๋ฒกํ„ฐ ์ž„๋ฒ ๋”ฉ ์ €์žฅ, ๋‰ด์Šค ๋ฐ์ดํ„ฐ ๊ฒ€์ƒ‰, ์บ์‹œ ์ฒ˜๋ฆฌ
Infrastructure AWS (EC2, S3), Google Compute Engine, Docker ์„œ๋ฒ„ ์šด์˜, ์‹œ๊ฐํ™” ๊ฒฐ๊ณผ ์ €์žฅ, ์ปจํ…Œ์ด๋„ˆ ๊ธฐ๋ฐ˜ ์‹คํ–‰ ํ™˜๊ฒฝ ๊ตฌ์„ฑ
Monitoring & Mgt. LangSmith, Kibana, Attu, DBeaver ์—์ด์ „ํŠธ ์ถ”์ , ๋ฐ์ดํ„ฐ ํƒ์ƒ‰, ๋ฒกํ„ฐ DB ๋ฐ ๊ด€๊ณ„ํ˜• DB ๊ด€๋ฆฌ
DevOps GitHub Actions, Jenkins FastAPI ๋ฐฐํฌ ์ž๋™ํ™”, ๋ฐ์ดํ„ฐ ์ˆ˜์ง‘ ๋ฐ ์šด์˜ ์ž๋™ํ™” ์—ฐ๊ณ„
Core Libraries Pandas, NumPy, Pydantic, Plotly, TavilySearch, BeautifulSoup, FinanceDataReader, yfinance, pytrends, python-docx, PyMuPDF ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ, ์œ ํšจ์„ฑ ๊ฒ€์ฆ, ์‹œ๊ฐํ™”, ๊ฒ€์ƒ‰, ๋ฆฌํฌํŠธ ์ƒ์„ฑ, ๋ฌธ์„œ ํŒŒ์‹ฑ

4. ๊ด€๋ จ ์ €์žฅ์†Œ

TRENDB๋Š” ์—ญํ• ์„ ๋ถ„๋ฆฌํ•œ ์ €์žฅ์†Œ๋“ค์ด ํ•จ๊ป˜ ๋™์ž‘ํ•˜๋Š” ๊ตฌ์กฐ์ž…๋‹ˆ๋‹ค.

  • AI ์—์ด์ „ํŠธ ์„œ๋ฒ„ (FastAPI): ํ˜„์žฌ ์ €์žฅ์†Œ. LangChain ๊ธฐ๋ฐ˜ ์—์ด์ „ํŠธ์™€ 15๊ฐœ์˜ ๋„๊ตฌ๋ฅผ ํ†ตํ•ด ์‚ฌ์šฉ์ž์˜ ์งˆ๋ฌธ์„ ํ•ด์„ํ•˜๊ณ , ๊ฒ€์ƒ‰ยท๋ถ„์„ยท์ƒ์„ฑ ๊ฒฐ๊ณผ๋ฅผ ์ข…ํ•ฉํ•˜์—ฌ ์ŠคํŠธ๋ฆฌ๋ฐ ์‘๋‹ต์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.
  • ๋ฉ”์ธ API ์„œ๋ฒ„ (Spring Boot): server - ์‚ฌ์šฉ์ž ์ธ์ฆ(JWT), ํšŒ์› ๊ด€๋ฆฌ, ํŒ€ ์ƒ์„ฑ ๋ฐ ๊ด€๋ฆฌ, ํŒ€ ํŒŒ์ผ ํด๋ผ์šฐ๋“œ, ์ธ์‚ฌ์ดํŠธ ๋Œ€์‹œ๋ณด๋“œ API ๋“ฑ ํ•ต์‹ฌ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์„ ๋‹ด๋‹นํ•ฉ๋‹ˆ๋‹ค.
  • ๋ฐ์ดํ„ฐ ์ˆ˜์ง‘ ํŒŒ์ดํ”„๋ผ์ธ (Python Scripts & Jenkins): global-it-news-analysis - ๊ตญ๋‚ด์™ธ IT ๋‰ด์Šค๋ฅผ ์ˆ˜์ง‘ํ•˜๊ณ  ํ‚ค์›Œ๋“œ, ์—ฐ๊ด€ ํ‚ค์›Œ๋“œ, ๊ธ๋ถ€์ • ๋ถ„์„ ๋ฐ์ดํ„ฐ๋ฅผ ์ƒ์„ฑํ•˜์—ฌ Elasticsearch์™€ PostgreSQL์— ์ ์žฌํ•ฉ๋‹ˆ๋‹ค.

5. ์‹œ์Šคํ…œ ์•„ํ‚คํ…์ฒ˜ ๋ฐ ๋ฐ์ดํ„ฐ ํ๋ฆ„

TRENDB System Architecture

TRENDB๊ฐ€ ์‚ฌ์šฉํ•˜๋Š” ํ•ต์‹ฌ ๋‰ด์Šค ๋ฐ์ดํ„ฐ๋Š” ๋ณ„๋„์˜ ์ž๋™ํ™”๋œ ํŒŒ์ดํ”„๋ผ์ธ์„ ํ†ตํ•ด ๊ตฌ์ถ•๋ฉ๋‹ˆ๋‹ค. Jenkins๋ฅผ ์‚ฌ์šฉํ•ด ๋งค์ผ ๊ตญ๋‚ด์™ธ IT ๋‰ด์Šค๋ฅผ ์ˆ˜์ง‘ํ•˜๊ณ , ๊ธฐ์‚ฌ ์›๋ฌธ๊ณผ ๊ธ๋ถ€์ • ๊ฒฐ๊ณผ, confidence๋Š” Elasticsearch์— ์ €์žฅํ•˜๋ฉฐ, ํ‚ค์›Œ๋“œ์™€ ์—ฐ๊ด€ ํ‚ค์›Œ๋“œ ์ง‘๊ณ„ ๊ฒฐ๊ณผ๋Š” PostgreSQL์— ์ €์žฅํ•ฉ๋‹ˆ๋‹ค. AI ์—์ด์ „ํŠธ ์„œ๋ฒ„๋Š” ์ด ๋ฐ์ดํ„ฐ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์ตœ์‹  ํŠธ๋ Œ๋“œ ๋ถ„์„๊ณผ ๊ทผ๊ฑฐ ์ค‘์‹ฌ ์‘๋‹ต์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.

์‘๋‹ต ์ฒ˜๋ฆฌ ํ๋ฆ„

TRENDB ์‘๋‹ต ์ฒ˜๋ฆฌ ํ๋ฆ„๋„

  1. API ์š”์ฒญ (/agent/query): ์‚ฌ์šฉ์ž๊ฐ€ ์งˆ๋ฌธ๊ณผ ํ•จ๊ป˜ ํŒŒ์ผ, ํŽ˜๋ฅด์†Œ๋‚˜ ID, ์ฑ„ํŒ…๋ฐฉ ์ •๋ณด ๋“ฑ์„ FastAPI ์„œ๋ฒ„๋กœ ์ „์†กํ•ฉ๋‹ˆ๋‹ค.
  2. ์ปจํ…์ŠคํŠธ ์ค€๋น„ (AgentChatService):
    • get_session_history: PostgreSQL์—์„œ ์ด์ „ ๋Œ€ํ™” ๊ธฐ๋ก์„ ๋ถˆ๋Ÿฌ์™€ ๋ฉ”๋ชจ๋ฆฌ์— ์ฃผ์ž…ํ•ฉ๋‹ˆ๋‹ค.
    • get_user_persona: ์‚ฌ์šฉ์ž๊ฐ€ ์„ ํƒํ•œ ํŽ˜๋ฅด์†Œ๋‚˜ ์ •๋ณด๋ฅผ ์กฐํšŒํ•ฉ๋‹ˆ๋‹ค.
    • extract_text_by_filename: ์—…๋กœ๋“œ๋œ ํŒŒ์ผ์ด ์žˆ๋Š” ๊ฒฝ์šฐ ํ…์ŠคํŠธ๋ฅผ ์ถ”์ถœํ•ด ํ˜„์žฌ ๋Œ€ํ™” ๋ฌธ๋งฅ์— ๋ฐ˜์˜ํ•ฉ๋‹ˆ๋‹ค.
  3. ์—์ด์ „ํŠธ ์ดˆ๊ธฐํ™”: ์‹œ์Šคํ…œ ํ”„๋กฌํ”„ํŠธ, ๋ฉ”๋ชจ๋ฆฌ, 15๊ฐœ์˜ ๋„๊ตฌ๋ฅผ ๊ฒฐํ•ฉํ•˜์—ฌ AgentExecutor๋ฅผ ๊ตฌ์„ฑํ•ฉ๋‹ˆ๋‹ค. LLM์€ ์‚ฌ์šฉ์ž๊ฐ€ ์„ ํƒํ•œ ๋ชจ๋ธ๋กœ ๋™์ ์œผ๋กœ ์ดˆ๊ธฐํ™”๋ฉ๋‹ˆ๋‹ค.
  4. ์ž์œจ์  ๋„๊ตฌ ์‹คํ–‰:
    • ์—์ด์ „ํŠธ๊ฐ€ ์งˆ๋ฌธ์„ ๋ถ„์„ํ•ด ๊ตญ๋‚ด์™ธ ๋‰ด์Šค ๊ฒ€์ƒ‰, ํŠธ๋ Œ๋“œ ๋ถ„์„, ์ปค๋ฎค๋‹ˆํ‹ฐ ํƒ์ƒ‰, ๋…ผ๋ฌธ ๊ฒ€์ƒ‰, ์ฃผ์‹ ๋ถ„์„, ์ด๋ฏธ์ง€ ์ƒ์„ฑ ๋“ฑ ํ•„์š”ํ•œ ๋„๊ตฌ๋ฅผ ์„ ํƒํ•˜์—ฌ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.
    • ๋„๊ตฌ ์‹คํ–‰ ๋กœ๊ทธ์™€ ์ค‘๊ฐ„ ์ƒํƒœ๋Š” SSE(Server-Sent Events)๋ฅผ ํ†ตํ•ด ์‹ค์‹œ๊ฐ„์œผ๋กœ ์ŠคํŠธ๋ฆฌ๋ฐ๋ฉ๋‹ˆ๋‹ค.
  5. ๊ฒฐ๊ณผ ์ข…ํ•ฉ ๋ฐ ์ตœ์ข… ์‘๋‹ต ์ƒ์„ฑ:
    • ๋„๊ตฌ ์‹คํ–‰ ๊ฒฐ๊ณผ๋ฅผ ์ข…ํ•ฉํ•ด ์ตœ์ข… ๋‹ต๋ณ€์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.
    • ๋‹ต๋ณ€๊ณผ ํ•จ๊ป˜ ๊ด€๋ จ ๋งํฌ ๋ฐ ์ถœ์ฒ˜ ์ •๋ณด๋„ ํ•จ๊ป˜ ์ŠคํŠธ๋ฆฌ๋ฐ๋ฉ๋‹ˆ๋‹ค.
  6. DB ์ €์žฅ: ์‘๋‹ต ์ƒ์„ฑ์ด ์™„๋ฃŒ๋˜๋ฉด ๋Œ€ํ™” ๋‚ด์šฉ์„ PostgreSQL์— ์ €์žฅํ•˜๊ณ , ์ฒซ ์งˆ๋ฌธ์ธ ๊ฒฝ์šฐ ์ฑ„ํŒ…๋ฐฉ ์ œ๋ชฉ๋„ ์ž๋™์œผ๋กœ ๊ฐฑ์‹ ํ•ฉ๋‹ˆ๋‹ค.

6. API ์—”๋“œํฌ์ธํŠธ

HTTP Method ๊ฒฝ๋กœ ์„ค๋ช…
POST /agent/query AI ์—์ด์ „ํŠธ์—๊ฒŒ ์งˆ๋ฌธํ•˜๊ณ  ์ŠคํŠธ๋ฆฌ๋ฐ ์‘๋‹ต์„ ๋ฐ›์Šต๋‹ˆ๋‹ค.
POST /team-files ํŒ€ ํŒŒ์ผ์„ ์—…๋กœ๋“œํ•˜๊ณ  Milvus์— ๋ฒกํ„ฐ ์ž„๋ฒ ๋”ฉ์„ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.
DELETE /team-files/{team_id}/{file_id} ํŠน์ • ํŒ€ ํŒŒ์ผ๊ณผ ๊ด€๋ จ๋œ ๋ฒกํ„ฐ ์ž„๋ฒ ๋”ฉ์„ ์‚ญ์ œํ•ฉ๋‹ˆ๋‹ค.
POST /team-file/query ํŒ€ ํŒŒ์ผ ๊ธฐ๋ฐ˜์œผ๋กœ RAG ์งˆ์˜์‘๋‹ต์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

7. ๋ธŒ๋žœ์น˜ ์ „๋žต

  • main: ์•ˆ์ •ํ™”๋œ ์ตœ์ข… ๋ฒ„์ „์ด ๊ด€๋ฆฌ๋˜๋Š” ๋ธŒ๋žœ์น˜์ž…๋‹ˆ๋‹ค. GitHub Actions์™€ ์—ฐ๋™๋˜์–ด main ๋ธŒ๋žœ์น˜ ๋ฐ˜์˜ ์‹œ ์ž๋™ ๋ฐฐํฌ๊ฐ€ ์ง„ํ–‰๋ฉ๋‹ˆ๋‹ค.
  • develop: ๋‹ค์Œ ์ถœ์‹œ ๋ฒ„์ „์„ ๊ฐœ๋ฐœํ•˜๋Š” ๋ธŒ๋žœ์น˜์ž…๋‹ˆ๋‹ค. ๊ธฐ๋Šฅ ๊ฐœ๋ฐœ์ด ์™„๋ฃŒ๋˜๋ฉด feature ๋ธŒ๋žœ์น˜์—์„œ develop์œผ๋กœ ๋ณ‘ํ•ฉ๋ฉ๋‹ˆ๋‹ค.
  • feature/*: ์‹ ๊ทœ ๊ธฐ๋Šฅ ๊ฐœ๋ฐœ ๋ฐ ๋ฒ„๊ทธ ์ˆ˜์ •์„ ์œ„ํ•œ ๋ธŒ๋žœ์น˜์ž…๋‹ˆ๋‹ค. develop์—์„œ ๋ถ„๊ธฐํ•˜๋ฉฐ, ๊ฐœ๋ฐœ ์™„๋ฃŒ ํ›„ ๋‹ค์‹œ develop์œผ๋กœ Pull Request๋ฅผ ๋ณด๋ƒ…๋‹ˆ๋‹ค.

About

๐Ÿ† ํ•œ์–‘๋Œ€ํ•™๊ต ERICA ์†Œํ”„ํŠธ์›จ์–ด์œตํ•ฉ๋Œ€ํ•™ ์บก์Šคํ†ค๋””์ž์ธ ๊ฒฝ์ง„๋Œ€ํšŒ ์šฐ์ˆ˜์ƒ ๐Ÿ† TRENDB: AI Agent Server | DB FIS ์‚ฐํ•™ํ˜‘๋ ฅ ํ”„๋กœ์ ํŠธ

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages