Developer Log
Portfolio

Portfolio

๋…ธ์…˜์—์„œ ๋ณด๊ธฐ

๋ฐฑ์—”๋“œ ์—”์ง€๋‹ˆ์–ด๋ง ์—ญ๋Ÿ‰์œผ๋กœ AI ๊ธฐ๋Šฅ์ด ์•ˆ์ •์ ์œผ๋กœ ์„œ๋น„์Šค๋  ์ˆ˜ ์žˆ๋„๋ก ๋’ท๋ฐ›์นจํ•˜๋Š” Backend + AI ์—”์ง€๋‹ˆ์–ด์ž…๋‹ˆ๋‹ค.

  • AI ๋ชจ๋ธ/LLM ์‹œ์Šคํ…œ์„ ์‹ค์ œ ์ œํ’ˆ ํ˜•ํƒœ๋กœ ์—ฐ๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด API, ์ธ์ฆ/์ธ๊ฐ€, ๋น„๋™๊ธฐ ์ฒ˜๋ฆฌ, ๋ฐฐํฌ/๊ด€์ธก๊นŒ์ง€ end-to-end๋กœ ์„ค๊ณ„ยท๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค.
  • ๋ฌธ์ œ๋ฅผ ์ง€ํ‘œ๋กœ ์ •์˜ํ•˜๊ณ (์ •ํ™•๋„/์ง€์—ฐ/์ฒ˜๋ฆฌ๋Ÿ‰), ์‹คํ—˜โ†’๊ฐœ์„ โ†’์šด์˜๊นŒ์ง€ ๋ฐ˜๋ณตํ•˜๋ฉฐ ์„ฑ๋Šฅ์„ ๋Œ์–ด์˜ฌ๋ฆฌ๋Š” ๊ฒƒ์„ ์ง€ํ–ฅํ•ฉ๋‹ˆ๋‹ค.

Profile

Notion image

Major

  • ์‚ฐ์—…๊ณตํ•™ ํ•™์‚ฌ

Contact & Channel

  • Phone: 010-8882-9000
  • Email: nsby9000@gmail.com

Core Strengths

  • AI ์—ญ๋Ÿ‰: ์—์ด์ „ํŠธ, RAG ํŒŒ์ดํ”„๋ผ์ธ์„ ๊ฒ€์ƒ‰ยท์žฌ์ •๋ ฌยทํ‰๊ฐ€๊นŒ์ง€ ํ™•์žฅํ•˜๊ณ , ์ด๋ฅผ ์ œํ’ˆ/์—…๋ฌด ํ๋ฆ„์— ์—ฐ๊ฒฐ
  • ๋ฐฑ์—”๋“œ ์„ค๊ณ„/๊ตฌํ˜„: Spring Boot/FastAPI ๊ธฐ๋ฐ˜์˜ MSA ์•„ํ‚คํ…์ฒ˜์™€ ํŠธ๋ Œ์ ์…˜ ๊ด€๋ฆฌ ๋“ฑ์˜ ์—ญ๋Ÿ‰์„ ๊ฐ–์ถ”๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์šด์˜/๋ฐฐํฌ ์—ญ๋Ÿ‰: AWS, Docker, K8S ๋“ฑ์„ ํ™œ์šฉํ•œ ํด๋ผ์šฐ๋“œ ๋„ค์ดํ‹ฐ๋ธŒ ํ™˜๊ฒฝ ์šด์˜ ๋ฐ CI/CD ๊ตฌ์ถ•์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

Software Engineer

์ง€์†์ ์ธ ํ•™์Šต

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

ํ˜‘์—…๊ณผ ์ปค๋ฎค๋‹ˆํ‹ฐ

  • ํŒ€ ํ”„๋กœ์ ํŠธ์™€ ์Šคํ„ฐ๋””๋ฅผ ํ†ตํ•ด ํ˜‘์—… ๋Šฅ๋ ฅ์„ ๊ธฐ๋ฅด๊ณ , ์†Œํ†ต์„ ๋ฐ”ํƒ•์œผ๋กœ ํ•จ๊ป˜ ๋” ๋‚˜์€ ๊ฒฐ๊ณผ๋ฅผ ๋งŒ๋“ค์–ด๋‚ด๋Š” ๊ฒฝํ—˜์„ ์Œ“๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

๊ธฐ์ˆ  ํ™œ์šฉ

  • ๋ฌธ์ œ์— ๋”ฐ๋ผ ์ ์ ˆํ•œ ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ์„ ํƒํ•˜๊ณ  ๋น ๋ฅด๊ฒŒ ํ•™์Šตํ•˜๋ฉฐ, ํ™œ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.


Skills

Backend

  • Java/Spring Boot, Python/FastAPI
  • REST API ์„ค๊ณ„, ํŠธ๋ Œ์ ์…˜ ๊ด€๋ฆฌ

AI / LLM Engineering

  • Python
  • LangChain, LangGraph
  • RAG(Chunking/Retrieval), Hybrid Search(BM25 + Dense)
  • LLM Evaluation(DeepEval, Langfuse, LLM-as-a-Judge)
  • PyTorch

Data / Infra / DevOps

  • MySQL, PostgreSQL/ParadeDB
  • Kafka, RabbitMQ
  • Docker
  • Kubernetes, AWS EKS
  • CI/CD (Github actions)
  • Grafana, Loki
  • Git, GitHub

Frontend

  • React

Algorithm

ProJects

AI ์ง€์‹ ํ๋ ˆ์ด์…˜ ํ”Œ๋žซํผ vantage

  • ๊ฐœ์ธ ํ”„๋กœ์ ํŠธ
  • ๊ธฐ๊ฐ„: 2026.05 ~ ์ง„ํ–‰์ค‘

ํ”„๋กœ์ ํŠธ ๊ฐœ์š”

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

๋‰ด์Šค ์ˆ˜์ง‘๋“ฑ์˜ ์ €์ž‘๊ถŒ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒ ๊ฐ€๋Šฅํ•˜์—ฌ ์ œํ•œ์  ๊ณต๊ฐœ(์ฝ”๋“œ a@11F13d8d61708e)

ํ”„๋กœ์ ํŠธ ๋ชฉํ‘œ

  • ๋‰ด์Šค, ๊ธฐ์ˆ  ๋ธ”๋กœ๊ทธ, PDF ๋“ฑ ๋‹ค์–‘ํ•œ ์ •๋ณด ์ˆ˜์ง‘ ๋ฐ ๋” ๋‹ค์–‘ํ•œ ์ •๋ณด์˜ ์ˆ˜์ง‘
  • ์ •๋ณด๋ฅผ ์‰ฝ๊ฒŒ ๋ณผ ์ˆ˜ ์žˆ๋„๋ก ์ •๋ณด ๊ฐ€๊ณต
  • ์—์ด์ „ํ‹ฑ RAG ์ฑ—๋ด‡์„ ๊ตฌ์ถ•ํ•˜์—ฌ ์›ํ•˜๋Š” ์ •๋ณด๋ฅผ ์‰ฝ๊ฒŒ ์ฐพ์„ ์ˆ˜ ์žˆ์Œ

์‚ฌ์šฉ ๊ธฐ์ˆ 

  • AI/LLM: LangChain, OpenAI API, MinerU, Chonkie, DeepEval
  • Backend: Java/Spring boot, Python/FastAPI
  • DataBase: ParadeDB, Redis
  • Frontend: TypeScript, NextJS
  • Observability: Grafana, Prometheus, Loki
  • Cloud & Infra: Oracle Cloud(ARM), GitHub Actions, Kubernetes(k3s), RabbitMQ
  • ๊ฐœ๋ฐœํ™˜๊ฒฝ: Claude Code, Codex, Antigravity IDE, uv, ty

์ฃผ์š” ๊ธฐ๋Šฅ

  • Agentic RAG ์ฑ—๋ด‡: ์ˆ˜์ง‘๋œ ์ •๋ณด๋“ค์„ ๊ธฐ๋ฐ˜์œผ๋กœ ์›ํ•˜๋Š” ์ •๋ณด๋ฅผ ์‰ฝ๊ฒŒ ์ฐพ์„ ์ˆ˜ ์žˆ์Œ
  • ์›น ํ”ผ๋“œ: AI ์š”์•ฝ์„ ๊ฑฐ์ณ ์งง์€ ๋‹จํŽธ ์ •๋ณด๋งŒ ์ œ๊ณตํ•˜๋ฉฐ ์›๋ฌธ ๋งํฌ๋ฅผ ์ œ๊ณต, ์•„ํ‹ฐํด ํด๋Ÿฌ์Šคํ„ฐ๋ง์„ ํ†ตํ•ด ์ค‘๋ณต ๊ธฐ์‚ฌ, ์—ฐ๊ด€๋œ ๊ธฐ์‚ฌ ๋“ฑ์„ ์—ฐ๊ฒฐ
  • PDF/๊ธฐ์‚ฌ ์ฒ˜๋ฆฌ ํŒŒ์ดํ”„๋ผ์ธ: ์ฃผ๋กœ ํ•ด์™ธ ๋‰ด์Šค, Hacker News, ๊ธฐ์—… ๊ธฐ์ˆ  ๋ธ”๋กœ๊ทธ, ์ตœ์‹  ๋…ผ๋ฌธ ๋“ฑ์„ ์ˆ˜์ง‘ ๋ฐ ์ฒ˜๋ฆฌํ•˜์—ฌ ํ™œ์šฉ ๊ฐ€๋Šฅํ•˜๊ฒŒ ๊ฐ€๊ณต.

์ฃผ์š” ํ™œ๋™ ๋ฐ ๋ฌธ์ œํ•ด๊ฒฐ ๋“ฑ

AI๋ฅผ ์œ„ํ•œ ๊ฐœ๋ฐœ ํ™˜๊ฒฝ ๊ตฌ์ถ•
  • ๋ฌธ์ œ: Claude Code์™€ Codex๋ฅผ ํ™œ์šฉํ•œ ๊ฐœ๋ฐœ ๊ณผ์ •์—์„œ ์„ธ์…˜ยท๋„๊ตฌ ์ „ํ™˜ ์‹œ ์ž‘์—… ๋ฌธ๋งฅ์ด ๋‹จ์ ˆ๋˜๊ณ , ์ด์ „ ๊ธฐ๋ก ํƒ์ƒ‰๊ณผ AI ์‚ฐ์ถœ๋ฌผ ๊ฒ€์ฆ์— ๋งŽ์€ ์‹œ๊ฐ„์ด ์†Œ์š”๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • ํ•ด๊ฒฐ: Notion ๊ธฐ๋ฐ˜ ์ž‘์—… ๊ธฐ๋ก Wiki๋ฅผ ๊ตฌ์ถ•ํ•ด ๋ฌธ๋งฅ์„ ๋ณต์›ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๊ณ , AGENTS.md์™€ Skills์— ๊ฐœ๋ฐœ ๊ทœ์น™์„ ์ •์˜ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ Playwright ๊ธฐ๋ฐ˜ E2E ๊ฒ€์ฆ ํ™˜๊ฒฝ์„ ๊ตฌ์„ฑํ•ด AI๊ฐ€ ์ง์ ‘ ์›น์„ ํ™•์ธํ•˜๊ณ  ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ๊ฒ€์ฆํ•˜๋„๋ก ํ–ˆ์Šต๋‹ˆ๋‹ค.
  • ๊ฒฐ๊ณผ: AI ๊ฐ„ ์ž‘์—… ๋ฌธ๋งฅ์˜ ์—ฐ์†์„ฑ์„ ํ™•๋ณดํ•˜๊ณ , ๊ฐœ๋ฐœ๋ถ€ํ„ฐ ๊ฒ€์ฆ๊นŒ์ง€ AI๊ฐ€ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ํ™˜๊ฒฝ์„ ๊ตฌ์ถ•ํ•ด ๋ฐ˜๋ณต์ ์ธ ๋ฌธ๋งฅ ์ „๋‹ฌ๊ณผ ์ˆ˜๋™ ๊ฒ€์ฆ ๋ถ€๋‹ด์„ ์ค„์˜€์Šต๋‹ˆ๋‹ค.
๋ฆฌํŠธ๋ฆฌ๋ฒ„ ๊ฐœ์„ 

๋ฐฑํ„ฐ, FTS(ts_rank), BM25, ํ•˜์ด๋ธŒ๋ฆฌ๋“œ ๋ฆฌํŠธ๋ฆฌ๋ฒ„๋ฅผ ๊ฐ๊ฐ ๋ฐ์ดํ„ฐ์…‹์„ ์‚ฌ์šฉํ•ด ์ •๋Ÿ‰์  ํ‰๊ฐ€๋ฅผ ์ง„ํ–‰. ํ•œ๊ตญ์–ด ํ˜•ํƒœ์†Œ ์ฒ˜๋ฆฌ๋ฅผ ์œ„ํ•ด Kiwi ์ ์šฉ. (143๋ฌธํ•ญ)

๊ตฌ์„ฑrecall@5recall@10recall@20MRR@5nDCG@5complete@5
๋ฒกํ„ฐ ๋‹จ๋…0.9160.9510.9690.8440.8570.909
FTS ๋‹จ๋…0.7900.8920.9090.6530.6780.762
BM25 ๋‹จ๋…0.9370.9440.9720.9060.9130.937
FTS hybrid 5:50.9480.9550.9690.8540.8740.937
BM25 hybrid 5:50.9790.9860.9860.9030.9210.979
RAG ์—์ด์ „ํŠธ ์„ฑ๋Šฅ ์ธก์ • ๋ฐ ๊ฐœ์„  (GPT-5.6 Terra)
  • ๋ฌธ์ œ: RAG ์—์ด์ „ํŠธ๊ฐ€ ๊ฒ€์ƒ‰์— ์‹คํŒจํ–ˆ์„ ๋•Œ ์œ ์‚ฌํ•˜๊ฑฐ๋‚˜ ๋ฌด๊ด€ํ•œ ์ •๋ณด์˜ ์ˆ˜์น˜๋ฅผ ์ธ์šฉํ•ด ๋‹ต๋ณ€ํ•˜๋Š” ํ™˜๊ฐ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค.
  • ํ•ด๊ฒฐ: Claude๋กœ ํ•ฉ์„ฑ ๋ฐ์ดํ„ฐ์…‹์„ ์ƒ์„ฑยท๊ฒ€์ˆ˜ํ•˜๊ณ , DeepEval ๊ธฐ๋ฐ˜ LLM-as-a-Judge ํ‰๊ฐ€ ํ™˜๊ฒฝ์„ ๊ตฌ์ถ•ํ–ˆ์Šต๋‹ˆ๋‹ค. ํ‰๊ฐ€ ๊ฒฐ๊ณผ๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ Sufficient Context Gate๋ฅผ ๋„์ž…ํ•ด ๋‹ต๋ณ€ ์ „ ๊ฒ€์ƒ‰ ๊ทผ๊ฑฐ์˜ ์ถฉ๋ถ„์„ฑ์„ ๊ฒ€์ฆํ•˜๋„๋ก ๊ฐœ์„ ํ–ˆ์Šต๋‹ˆ๋‹ค.
  • ๊ฒฐ๊ณผ: ์ •๋Ÿ‰์  ํ‰๊ฐ€ ์ฒด๊ณ„๋ฅผ ํ™•๋ณดํ•˜๊ณ , ๊ทผ๊ฑฐ๊ฐ€ ๋ถˆ์ถฉ๋ถ„ํ•œ ๊ฒฝ์šฐ ๋‹ต๋ณ€์„ ์ œํ•œํ•ด ํ™˜๊ฐ ๋ฐœ์ƒ์„ ์ค„์ด๊ณ  ์‘๋‹ต ์‹ ๋ขฐ์„ฑ์„ ๋†’์˜€์Šต๋‹ˆ๋‹ค.
Notion image
  • ์ด 47๋ฌธํ•ญ - 2ํšŒ ํ‰๊ท  - ์ง€ํ‘œ correctness (0.811 โ†’ 0.944)
Notion image
๊ธฐ์‚ฌ ํด๋Ÿฌ์Šคํ„ฐ ๊ธฐ๋ฐ˜ ๊ฒ€์ƒ‰ ๊ฒฐ๊ณผ ๊ฐœ์„ 
  • ๋ฌธ์ œ: ๋™์ผ ์‚ฌ๊ฑด์˜ ์œ ์‚ฌ ๊ธฐ์‚ฌ๋“ค์ด ๊ฒ€์ƒ‰ ๊ฒฐ๊ณผ Top-K๋ฅผ ์ ์œ ํ•˜๊ณ , ๋Œ€ํ‘œ ๊ธฐ์‚ฌ๋งŒ ์ œ๊ณตํ•  ๊ฒฝ์šฐ ์—์ด์ „ํŠธ๊ฐ€ ์—ฐ๊ด€ ๊ธฐ์‚ฌ๋ฅผ ํ™•์ธํ•˜์ง€ ์•Š์€ ์ฑ„ ๋‹ต๋ณ€ํ•˜๋Š” ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค.
  • ํ•ด๊ฒฐ: ํด๋Ÿฌ์Šคํ„ฐ๋ณ„ ๋Œ€ํ‘œ ๊ธฐ์‚ฌ๋งŒ ๊ฒ€์ƒ‰ ๊ฒฐ๊ณผ์— ๋…ธ์ถœํ•˜๊ณ , 1์ฐจ ๊ฒ€์ƒ‰ ๊ฒฐ๊ณผ๋ฅผ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๋กœ ์ œํ•œํ–ˆ์Šต๋‹ˆ๋‹ค. ์‹ค์ œ ๋‚ด์šฉ ํ™•์ธ ์‹œ ์—ฐ๊ด€ ๊ธฐ์‚ฌ ํ™•์žฅ ๋„๊ตฌ๋ฅผ ์‚ฌ์šฉํ•˜๋„๋ก ๊ฒ€์ƒ‰ ํ๋ฆ„์„ ๊ฐœ์„ ํ–ˆ์Šต๋‹ˆ๋‹ค.
  • ๊ฒฐ๊ณผ: ์ค‘๋ณต ๊ธฐ์‚ฌ๋กœ ์ธํ•œ ๊ฒ€์ƒ‰ ๊ฒฐ๊ณผ ํŽธ์ค‘์„ ์™„ํ™”ํ•˜๊ณ , ๋‹ค์–‘ํ•œ ์ •๋ณด ํƒ์ƒ‰์„ ์ง€์›ํ•˜๋ฉด์„œ ์ปจํ…์ŠคํŠธ ํ† ํฐ ์‚ฌ์šฉ๋Ÿ‰์„ ์ ˆ๊ฐํ–ˆ์Šต๋‹ˆ๋‹ค.
PDF ์ฒ˜๋ฆฌ ๋ฐ ๋ฆฌํŠธ๋ฆฌ๋ฒ„ ๊ตฌ์„ฑ
  • ๋ฌธ์ œ: ๊ธด PDF๋Š” ์ผ๋ถ€ ์ฒญํฌ๋งŒ์œผ๋กœ ์ „์ฒด ๋งฅ๋ฝ์„ ํŒŒ์•…ํ•˜๊ธฐ ์–ด๋ ต๊ณ , ์„ธ๋ถ€ ๋‚ด์šฉ ๊ฒ€์ƒ‰๊ณผ ๋ฌธ์„œ ์ „์ฒด ํƒ์ƒ‰์„ ๋™์‹œ์— ์ง€์›ํ•˜๊ธฐ ์–ด๋ ค์› ์Šต๋‹ˆ๋‹ค.
  • ํ•ด๊ฒฐ: Parent-Child ๊ตฌ์กฐ์™€ SlumberChunker ๊ธฐ๋ฐ˜ ์˜๋ฏธ ์ฒญํ‚น์„ ์ ์šฉํ•˜๊ณ , Map-Reduce ๋ฐฉ์‹์œผ๋กœ PDF ์ „์ฒด ์š”์•ฝ์„ ์ƒ์„ฑํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ธฐ์กด Parent-Child ๋ฆฌํŠธ๋ฆฌ๋ฒ„์— ๋”ํ•ด ์ „์ฒด ์š”์•ฝ๊ณผ Parent ๋‹จ์œ„ ์š”์•ฝ์„ ํ™œ์šฉํ•˜๋Š” Wikiํ˜• ๋ฆฌํŠธ๋ฆฌ๋ฒ„๋ฅผ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค.
  • ๊ฒฐ๊ณผ: ๋ฌธ์„œ ์ „์ฒด ๋งฅ๋ฝ์„ ํŒŒ์•…ํ•˜๋Š” ํƒ์ƒ‰ ๊ธฐ๋Šฅ๊ณผ ์„ธ๋ถ€ ๋‚ด์šฉ ๊ฒ€์ƒ‰ ๊ธฐ๋Šฅ์„ ํ•จ๊ป˜ ์ง€์›ํ•˜๋Š” ๊ณ„์ธต์  ๊ฒ€์ƒ‰ ๊ตฌ์กฐ๋ฅผ ๊ตฌ์ถ•ํ–ˆ์Šต๋‹ˆ๋‹ค.
RabbitMQ ๊ธฐ๋ฐ˜ ๋น„๋™๊ธฐ ์ž‘์—… ์ฒ˜๋ฆฌ ๋ฐ ๋ฐ์ดํ„ฐ ์ผ๊ด€์„ฑ ํ™•๋ณด
  • ๋ฌธ์ œ: PostgreSQL ๊ธฐ๋ฐ˜ ์ž‘์—… ํ์—์„œ ์ž‘์—… ์š”์ฒญ๊ณผ ์‹คํ–‰ ์ƒํƒœ ๊ด€๋ฆฌ๊ฐ€ ๊ฒฐํ•ฉ๋˜์–ด ์„œ๋น„์Šค ๊ฐ„ ์ฑ…์ž„๊ณผ ๊ฒฝ๊ณ„๊ฐ€ ๋ถˆ๋ช…ํ™•ํ•˜๊ณ , ์žฅ์•  ๋ณต๊ตฌ์— ํ•œ๊ณ„๊ฐ€ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.
  • ํ•ด๊ฒฐ: RabbitMQ ๊ธฐ๋ฐ˜ Command/Event ๊ตฌ์กฐ๋กœ ์ „ํ™˜ํ•˜๊ณ , Outbox/Inbox ํŒจํ„ด๊ณผ ๋ฉฑ๋“ฑ์„ฑ ํ‚ค๋ฅผ ์ ์šฉํ•ด ๋ฉ”์‹œ์ง€ ์œ ์‹ค ๋ฐ ์ค‘๋ณต ์ฒ˜๋ฆฌ ์œ„ํ—˜์„ ์ค„์˜€์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ ์ž‘์—… ์š”์ฒญ๊ณผ ์‹คํ–‰ ์ด๋ ฅ์„ ๋ถ„๋ฆฌํ•ด ์ด๋ฒคํŠธ ๊ธฐ๋ฐ˜ Read Model์„ ๊ตฌ์ถ•ํ–ˆ์Šต๋‹ˆ๋‹ค.
  • ๊ฒฐ๊ณผ: ์„œ๋น„์Šค๋ณ„ ์ฑ…์ž„๊ณผ ๊ฒฝ๊ณ„๋ฅผ ๋ช…ํ™•ํžˆ ํ•˜๊ณ , ์„œ๋น„์Šค ๊ฐ„ ๊ฒฐํ•ฉ๋„๋ฅผ ๋‚ฎ์ถ”๋ฉด์„œ ์žฅ์•  ๋ณต๊ตฌ ์•ˆ์ •์„ฑ๊ณผ ์ž‘์—… ์ถ”์ ์„ฑ์„ ๊ฐ•ํ™”ํ–ˆ์Šต๋‹ˆ๋‹ค.

Spring boot RAG ์—์ด์ „ํŠธ Github

  • ๊ธฐ๊ฐ„: 2025.12 - 2026.02
  • ๊ฐœ์ธ ํ”„๋กœ์ ํŠธ

ํ”„๋กœ์ ํŠธ ๊ฐœ์š”


ํ˜„์žฌ AI๋Š” Spring Boot 4.0.x๋ณด๋‹ค 3.5.x ๋ฒ„์ „์— ๋” ์ต์ˆ™ํ•œ ์ƒํƒœ์ž…๋‹ˆ๋‹ค. ๋ณธ ํ”„๋กœ์ ํŠธ๋Š” ์ด๋Ÿฌํ•œ AI์˜ ์ตœ์‹  ํ”„๋ ˆ์ž„์›Œํฌ ๋Œ€์‘ ๊ฒฉ์ฐจ๋ฅผ ํ•ด์†Œํ•˜๊ธฐ ์œ„ํ•ด ์‹œ์ž‘๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

LangChain ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์ตœ์‹  ๊ฐœ๋ฐœ ๋ฌธ์„œ์˜ ์ง€์‹์„ ์ •ํ™•ํ•˜๊ฒŒ ๊ฒ€์ƒ‰ํ•˜๊ณ  ์‘๋‹ตํ•˜๋Š” RAG ์—์ด์ „ํŠธ ๋ฐ ํŒŒ์ดํ”„๋ผ์ธ์„ ๊ตฌ์ถ•ํ•˜๋Š” ๊ฒƒ์„ ํ•ต์‹ฌ์œผ๋กœ ํ•ฉ๋‹ˆ๋‹ค.

Spring Boot, Spring Data Redis ๋“ฑ์˜ ๊ณต์‹ ๋ฌธ์„œ๋ฅผ ํฌ๋กค๋งํ•˜๊ณ  ํ•˜์ด๋ธŒ๋ฆฌ๋“œ ๊ฒ€์ƒ‰๊ณผ Reranker๋ฅผ ๊ฒฐํ•ฉํ•ด ๋†’์€ ๊ฒ€์ƒ‰ ์ •ํ™•๋„๋ฅผ ๋‹ฌ์„ฑํ–ˆ์Šต๋‹ˆ๋‹ค.

ํ”„๋กœ์ ํŠธ ๋ชฉํ‘œ


  • RAG ํŒŒ์ดํ”„๋ผ์ธ ๊ตฌ์ถ•: ๋‹จ์ˆœ DB ์ž„๋ฒ ๋”ฉ ๋ฐฉ์‹ ๋‹จ์ผ ๊ฒ€์ƒ‰์„ ๋„˜์–ด, ์˜๋ฏธ ๊ธฐ๋ฐ˜ ๊ฒ€์ƒ‰๊ณผ ํ‚ค์›Œ๋“œ ๊ธฐ๋ฐ˜ ๊ฒ€์ƒ‰์˜ ์ด์ ์„ ์‚ด๋ฆฐ ํ•˜์ด๋ธŒ๋ฆฌ๋“œ ๊ฒ€์ƒ‰ ๋ฐ ๋”ฅ๋Ÿฌ๋‹ ๊ธฐ๋ฐ˜ Reranking ์ฒ˜๋ฆฌ๋กœ ์‘๋‹ต์˜ ์ •ํ™•์„ฑ๊ณผ ์‹ ๋ขฐ์„ฑ ํ™•๋ณด.
  • RAG ์—์ด์ „ํŠธ ๊ตฌ์ถ•: Spring ๊ณต์‹ ๋ฌธ์„œ ๋“ฑ ๋ฐฉ๋Œ€ํ•œ ๊ธฐ์ˆ  ๋ฌธ์„œ๋ฅผ ํ•™์Šต(Indexing)ํ•˜์—ฌ, ํ• ๋ฃจ์‹œ๋„ค์ด์…˜์„ ์ตœ์†Œํ™”ํ•˜๊ณ  ์ตœ์‹  ์ •๋ณด์— ๊ธฐ๋ฐ˜ํ•œ ์ •ํ™•ํ•œ ๊ธฐ์ˆ  ๋‹ต๋ณ€์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค
  • MCP ์„œ๋ฒ„ ๊ตฌ์ถ•: MCP ์„œ๋ฒ„๋ฅผ ๊ตฌ์ถ•ํ•˜์—ฌ ์™ธ๋ถ€ AI ์–ด์‹œ์Šคํ„ดํŠธ ํ™˜๊ฒฝ์—์„œ๋„ RAG ํŒŒ์ดํ”„๋ผ์ธ์˜ ๊ฒ€์ƒ‰ ๊ฒฐ๊ณผ๋ฅผ ์‹ค์‹œ๊ฐ„ ๋„๊ตฌ๋กœ ์—ฐ๋™ํ•˜๊ณ  ํ™•์žฅํ•  ์ˆ˜ ์žˆ๋Š” ๋ฒ”์šฉ์ ์ธ ์•„ํ‚คํ…์ฒ˜ ๊ตฌํ˜„
  • RAG ์‹œ์Šคํ…œ ํ‰๊ฐ€ ๋„์ž… (LLM-as-a-Judge): LangSmith์™€ LLM์„ ํ†ตํ•ด RAG ํŒŒ์ดํ”„๋ผ์ธ์˜ ํ•ต์‹ฌ ์„ฑ๋Šฅ ์ง€ํ‘œ(์ •ํ™•์„ฑ, ๊ฒ€์ƒ‰ ๊ฒฐ๊ณผ ์ ํ•ฉ์„ฑ, ๊ทผ๊ฑฐ์„ฑ ๋“ฑ)๋ฅผ ์ •๋Ÿ‰์ /์ •์„ฑ์ ์œผ๋กœ ๋ชจ๋‹ˆํ„ฐ๋งํ•˜์—ฌ ํ‰๊ฐ€ ์ž๋™ํ™” ํ™˜๊ฒฝ ๊ตฌ์ถ•.

์‚ฌ์šฉ ๊ธฐ์ˆ 


  • AI & Frameworks : LangChain, LangGraph, OpenAI GPT-5-mini, Cohere Reranker API
  • Database: ChromaDB, Redis
  • Evaluation: LangSmith, openevals
  • Data Collection & Parsing: BeautifulSoup, markdownify
  • Data Visualization: Matplotlib

์ฃผ์š” ๊ธฐ๋Šฅ


  • RAG ๊ฒ€์ƒ‰ ์—”์ง„ ์„ค๊ณ„
    • Markdown ์ •๊ทœํ™” ๋ฐ ํ•˜์ด๋ธŒ๋ฆฌ๋“œ ์ฒญํ‚น ์ „๋žต: BeautifulSoup๊ณผ markdownify ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•ด ๋ณต์žกํ•œ HTML ๊ธฐ์ˆ  ๋ฌธ์„œ๋ฅผ Semantic Markdown ๊ตฌ์กฐ๋กœ ๋ฐ์ดํ„ฐ ์ •์ œ.
    • ํ•˜์ด๋ธŒ๋ฆฌ๋“œ ๊ฒ€์ƒ‰ (Hybrid Search): ์˜๋ฏธ๋ก ์  ๊ฒ€์ƒ‰์ธ Dense ๊ฒ€์ƒ‰(ChromaDB, ๊ฐ€์ค‘์น˜ 0.7)๊ณผ ํ‚ค์›Œ๋“œ ๊ธฐ๋ฐ˜์ธ Sparse ๊ฒ€์ƒ‰(BM25, ๊ฐ€์ค‘์น˜ 0.3) ๋ฐฉ์‹์„ RRF ์•Œ๊ณ ๋ฆฌ์ฆ˜์œผ๋กœ ๊ฒฐํ•ฉ์‹œ์ผœ 1์ฐจ ํ›„๋ณด๊ตฐ ๋ฐ์ดํ„ฐ ๋„“๊ฒŒ ํ™•๋ณด.
    • Cohere Reranker ํ†ตํ•ฉ: ์ดˆ๊ธฐ ์ถ”์ถœ๋œ ํ›„๋ณด๊ตฐ ๋ฌธ์„œ๋ฅผ Cohere Reranker ๋”ฅ๋Ÿฌ๋‹ ๊ธฐ๋ฐ˜ ์žฌ๋ฐฐ์—ด ์ฒ˜๋ฆฌ ๋ชจ๋“ˆ์— ํ†ต๊ณผ์‹œ์ผœ ์ตœ์ข… ์šฐ์„ ์ˆœ์œ„๋ฅผ ์ •๋ฐ€ํ•˜๊ฒŒ ์žฌ๋ฐฐ์น˜ํ•ด ๋„์ถœ, Top-1 / Top-5 ๊ฒ€์ƒ‰ ์ ์ค‘๋ฅ  ๋Œ€ํญ ๊ฐœ์„ .
  • ์‹œ์Šคํ…œ ์ž๋™ ์„ฑ๋Šฅ ํ‰๊ฐ€
    • LangSmith ์—ฐ๋™: ํ‰๊ฐ€๊ด€ LLM์„ ํ™œ์šฉํ•œ LLM-as-a-Judge ๋„์ž…. ์ •ํ™•์„ฑ(Correctness), ์‚ฌ์‹ค ๊ทผ๊ฑฐ ์ผ์น˜์„ฑ(Groundedness), ์งˆ์˜์™€ ๊ฒ€์ƒ‰ ๋ฌธ์„œ ์—ฐ๊ด€์„ฑ(Retrieval relevance) ์— ๋Œ€ํ•ด ์ •๋Ÿ‰/์ •์„ฑ ํ‰๊ฐ€ ์ง„ํ–‰ ํ›„ LangSmith ๋Œ€์‹œ๋ณด๋“œ๋ฅผ ํ†ตํ•ด ์‹ค์‹œ๊ฐ„ ํŠธ๋ž˜ํ‚น ๋ชจ๋‹ˆํ„ฐ๋ง.
    • Retriever ์ž์ฒด ๋ฒค์น˜๋งˆํ‚น: Top-1/5/10 Hit Rate, MRR, Redundancy ์™€ ๊ฐ™์€ ํ•ต์‹ฌ ์„ฑ๋Šฅ ํ‰๊ฐ€ ์ง€ํ‘œ๋ฅผ ๋กœ์ปฌ์—์„œ ์ž๋™ ์‚ฐ์ถœ.
  • ์—์ด์ „ํŠธ ์›Œํฌํ”Œ๋กœ์šฐ
    • ๋‹จ์ˆœ ๊ฒ€์ƒ‰์ด ์•„๋‹Œ ์‚ฌ์šฉ์ž์˜ ์งˆ๋ฌธ ์˜๋„๋ฅผ ํŒŒ์•…ํ•˜๊ณ , ํ•„์š”์‹œ ์ฟผ๋ฆฌ๋ฅผ ์žฌ์ž‘์„ฑ ํ•˜๊ฑฐ๋‚˜ ๋„๊ตฌ๋ฅผ ์„ ํƒํ•˜์—ฌ ๋‹ต๋ณ€์„ ์ƒ์„ฑํ•˜๋Š” ์—์ด์ „ํŠธ ๋กœ์ง์„ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค.
    • MCP ์„œ๋ฒ„๋ฅผ ํ†ตํ•ด ์™ธ๋ถ€ ๋„๊ตฌ์™€์˜ ์—ฐ๋™ ๊ฐ€๋Šฅ์„ฑ์„ ์—ด์–ด๋‘์—ˆ์Šต๋‹ˆ๋‹ค.
  • Semantic Caching
    • ์‚ฌ์šฉ์ž์˜ ์งˆ๋ฌธ์— ๋Œ€ํ•œ ๋‹ต๋ณ€์„ ์บ์‹ฑํ•˜์—ฌ ๋น„์Šทํ•œ ์งˆ๋ฌธ์— ๋Œ€ํ•ด ์บ์‹ฑ๋œ ๋‹ต๋ณ€์„ ์‚ฌ์šฉํ•˜์—ฌ ์‘๋‹ต ์†๋„ ํ–ฅ์ƒ ๋ฐ API ๋น„์šฉ ์ ˆ๊ฐ(Reranker API, GPT API ํ˜ธ์ถœ ์Šคํ‚ต).

ํ”„๋กœ์ ํŠธ์˜ ์„ฑ๊ณผ ๋ฐ ์ธ์‚ฌ์ดํŠธ


  • ๊ณ ๋„ํ™”๋œ ํ•˜์ด๋ธŒ๋ฆฌ๋“œ ๊ฒ€์ƒ‰ ๊ธฐ๋ฐ˜ ๋ฐ ์„ฑ๋Šฅ ๋ฒค์น˜๋งˆํ‚น ์‹คํ—˜์„ ํ†ตํ•ด ๋‹จ์ˆœ Vector ์ž„๋ฒ ๋”ฉ ๊ฒ€์ƒ‰ ๊ตฌ์กฐ๊ฐ€ ๊ฐ–๋Š” ์ „๋ฌธ ์šฉ์–ด ๋ฐ ํŠน์ • ๊ธฐ์ˆ  ์ฝ”๋“œ ๊ฒ€์ƒ‰์— ๋Œ€ํ•œ ํ•œ๊ณ„์ ์„ ๊ฒ€์ฆํ•  ์ˆ˜ ์žˆ์—ˆ์œผ๋ฉฐ, ์ด๋ฅผ Reranker ๋ชจ๋ธ ํˆฌ์ž… ๊ณผ์ •์œผ๋กœ ๋ณด์™„ํ•จ์œผ๋กœ์จ ์•ˆ์ •์„ฑ ๋†’์€ ์ž์ฒด ๊ฒ€์ƒ‰ ์—”์ง„ ํŠœ๋‹ ๊ฒฝํ—˜์„ ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค.
  • LangSmith์™€ ์ž๋™ํ™”๋œ ์Šคํฌ๋ฆฝํŠธ ์‹œ์Šคํ…œ ํŒŒ์ดํ”„๋ผ์ธ์„ ๊ตฌ์ถ•ํ•ด ์‹œ์Šคํ…œ ํ’ˆ์งˆ์„ ๋ช…ํ™•ํ•œ ์ง€ํ‘œ(Hit Rate, MRR, Correctness ๋“ฑ)๋กœ ๊ฐ€์‹œํ™”ํ•˜์—ฌ ํ”„๋กœ์ ํŠธ ๊ฒฐ๊ณผ๋ฅผ ๋ช…๋ฃŒํ•˜๊ฒŒ ์ฆ๋น™ํ•˜๊ณ , ํ’ˆ์งˆ ํ†ต์ œ๋ฅผ ๊ฐœ๋ฐœํ•˜๋Š” ์—ญ๋Ÿ‰์„ ํฌ๊ฒŒ ํ‚ค์šธ ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

RAG ์„ฑ๋Šฅ ํ‰๊ฐ€


ํ‰๊ฐ€ ์…‹

  • Dev 182 / Test 77

ํ‰๊ฐ€ ๋ฐฉ๋ฒ•(์š”์•ฝ)

  • ๋ฒกํ„ฐ์Šคํ† ์–ด์—์„œ ์ž„์˜์˜ ์ฒญํฌ๋ฅผ ์ƒ˜ํ”Œ๋งํ•œ ๋’ค, LLM์œผ๋กœ ํ•ด๋‹น ์ฒญํฌ ๊ธฐ๋ฐ˜ ์งˆ๋ฌธ์„ ์ƒ์„ฑ
    • ์ผ๋ฐ˜์ ์ธ ์งˆ๋ฌธ์ด ์•„๋‹Œ Hit Rate ๋ฅผ ๋‚ฎ์ถ”๊ธฐ ์œ„ํ•ด ํ‚ค์›Œ๋“œ ์ œํ•œ, ๋‹ค๋ฅธ ์˜๋ฏธ์˜ ๋‹จ์–ด๋ฅผ ์‚ฌ์šฉํ•˜์˜€์Œ
  • Retriever๊ฐ€ ์งˆ๋ฌธ์— ๋Œ€ํ•ด ์›๋ณธ ์ฒญํฌ๋ฅผ Top-k๋กœ ํšŒ์ˆ˜ํ•˜๋Š”์ง€๋กœ ํ‰๊ฐ€
  • Metrics: Recall@1/5/10, MRR

๋น„๊ต ์‹คํ—˜

  • Dense
  • Hybrid (Dense + BM25, ๊ฐ€์ค‘์น˜ ์Šค์œ•: 0.7/0.3, 0.5/0.5, 0.3/0.7)
  • Hybrid (0.7/0.3) + Reranker

Notion image

๊ด€์ฐฐ ๋ฐ ํ•ด์„

  • BM25 ๊ฐ€์ค‘์น˜๊ฐ€ ์ฆ๊ฐ€ํ• ์ˆ˜๋ก Recall@1(Top-1) ์„ฑ๋Šฅ์€ ์ƒ์Šน, Recall@5 ์ด์ƒ ๊ตฌ๊ฐ„์—์„œ๋Š” ์„ฑ๋Šฅ ๊ฐ์†Œ ๊ฒฝํ–ฅ
    • ํ‚ค์›Œ๋“œ ๋งค์นญ(BM25)์ด ์ตœ์ƒ์œ„ 1๊ฐœ๋ฅผ ์ •ํ™•ํžˆ ์˜ฌ๋ฆฌ๋Š” ๋ฐ ์œ ๋ฆฌํ•œ ๋ฐ˜๋ฉด, Dense ๊ธฐ์—ฌ๋„๊ฐ€ ์ค„์–ด ์ƒ์œ„ ํ›„๋ณด๊ตฐ ๋‹ค์–‘์„ฑ์ด ๊ฐ์†Œํ•œ ๊ฒƒ์œผ๋กœ ํ•ด์„
  • LangSmith(LLM-as-a-Judge) ๊ธฐ๋ฐ˜ ํ‰๊ฐ€๋Š” ์งˆ๋ฌธ ๋‚œ์ด๋„ ์˜ํ–ฅ์œผ๋กœ ์ „๋ฐ˜์ ์œผ๋กœ ๊ณ ๋“์ (0.9+)์ด ๋งŽ์•˜์œผ๋‚˜, ์ €๋“์  ์ผ€์ด์Šค๋Š” ๋ฆฌํŠธ๋ฆฌ๋ฒ„ ์ ์ˆ˜๊ฐ€ ๋‚ฎ์€ ์ผ€์ด์Šค์™€ ๋Œ€๋ถ€๋ถ„ ๊ฒน์ณค์Œ
    • ์ ˆ๋Œ€ ์ ์ˆ˜๋ณด๋‹ค ์ €๋“์  ์ผ€์ด์Šค ๋ถ„์„ ์ค‘์‹ฌ์œผ๋กœ ํ•ด์„ํ–ˆ์œผ๋ฉฐ, ์ตœ์ข… ์‘๋‹ต ํ’ˆ์งˆ์˜ ๋ณ‘๋ชฉ์ด retrieval ํ’ˆ์งˆ์— ํฌ๊ฒŒ ์ขŒ์šฐ๋จ์„ ํ™•์ธ
  • LLM์„ ๊ฒ€์ƒ‰ ๋„๊ตฌ(tool)์™€ ์—ฐ๊ฒฐํ•ด Query Rewrite๋ฅผ ์ œํ•œ ์—†์ด ์ ์šฉํ–ˆ์„ ๋•Œ, ์›๋ฌธ ์งˆ์˜ ๊ทธ๋Œ€๋กœ ๊ฒ€์ƒ‰ํ•˜๋Š” ๋ฐฉ์‹ ๋Œ€๋น„ ๊ฒ€์ƒ‰ ์ •ํ™•๋„ ์ €ํ•˜์™€ ์ง€์—ฐ ์‹œ๊ฐ„ ์ฆ๊ฐ€๋ฅผ ํ™•์ธ
    • ๋”ฐ๋ผ์„œ ์šด์˜/ํ‰๊ฐ€ ํŒŒ์ดํ”„๋ผ์ธ์—์„œ๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ rewrite๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ๋ฐฉํ–ฅ์œผ๋กœ ์„ค๊ณ„

MMR ์‹คํ—˜ (Dense vs Dense+MMR)

Notion image
  • Spring Boot ๊ณต์‹ ๋ฌธ์„œ๋Š” ๊ธฐ๋Šฅ ๋‹จ์œ„๋กœ ๋‚ด์šฉ์ด ๋ถ„๋ฆฌ๋˜์–ด ๋ฌธ์„œ ๊ฐ„ ์˜๋ฏธ์  ์ค‘๋ณต๋„๊ฐ€ ์ƒ๋Œ€์ ์œผ๋กœ ๋‚ฎ์Œ
  • ๋”ฐ๋ผ์„œ ๋‹ค์–‘์„ฑ ํ™•๋ณด ๋ชฉ์ ์˜ MMR ํšจ๊ณผ๊ฐ€ ์ œํ•œ์ ์œผ๋กœ ๋‚˜ํƒ€๋‚œ ๊ฒƒ์œผ๋กœ ํ•ด์„

RAG ์—์ด์ „ํŠธ ์‹คํ—˜ (query rewrite)

  • ํ‰๊ฐ€ ๋ฐฉ๋ฒ•: LLM-as-a-judge (openevals, LangSmith)
  • ๋ฐ์ดํ„ฐ์…‹: ์ž„์˜์˜ ์ฒญํฌ ์ถ”์ถœ ๋ฐ LLM ์งˆ๋‹ต ์ƒ์„ฑ
Notion image
  • A: ์ฒญ๋ก B: ๋ถ„ํ™ C: ํŒŒ๋ž‘
  • A: ๊ธฐ๋ณธ ์ž…๋ ฅ ์‚ฌ์šฉํ›„ ํ•„์š”์‹œ 1ํšŒ ์žฌ์ž‘์„ฑ B: ๊ธฐ๋ณธ ์ž…๋ ฅ ์‚ฌ์šฉ C: ๋งค๋ฒˆ ์žฌ์ž‘์„ฑ
correctnessgroundednessretrieval relevance
A ํ•„์š”์‹œ ์žฌ์ž‘์„ฑ0.860.930.93
B ๊ธฐ๋ณธ ์งˆ์˜ ์‚ฌ์šฉ0.810.950.91
C ํ•ญ์ƒ ์žฌ์ž‘์„ฑ0.730.950.85

๊ฒฐ๊ณผ ํ•ด์„

A. ๊ธฐ๋ณธ ๊ฒ€์ƒ‰ ํ›„ ํ•„์š” ์‹œ ์ฟผ๋ฆฌ ์žฌ์ž‘์„ฑ

  • ๋จผ์ € ์›๋ฌธ ์งˆ์˜๋กœ ๊ฒ€์ƒ‰์„ ์ˆ˜ํ–‰ํ•œ ๋’ค, ๊ฒ€์ƒ‰ ๊ฒฐ๊ณผ๊ฐ€ ๋ถ€์กฑํ•  ๊ฒฝ์šฐ์—๋งŒ ์งˆ์˜๋ฅผ ๋ณด์™„ํ•˜๋Š” ๋ฐฉ์‹.
    • ์„ธ ๊ฐ€์ง€ ๋ฐฉ๋ฒ• ์ค‘ ๋น„๊ต์  ๋†’์€ ์ •ํ™•๋„์™€ ๊ฒ€์ƒ‰ ๊ด€๋ จ์„ฑ์„ ๋ณด์˜€์ง€๋งŒ, ์ง€์—ฐ์‹œ๊ฐ„๊ณผ ํ† ํฐ ์‚ฌ์šฉ๋Ÿ‰์ด ์ฆ๊ฐ€ํ•˜๋Š” trade-off๊ฐ€ ํ™•์ธ.

B. ๊ธฐ๋ณธ ์ž…๋ ฅ ์‚ฌ์šฉ

  • ์‚ฌ์šฉ์ž ์งˆ์˜๋ฅผ ๊ทธ๋Œ€๋กœ ๊ฒ€์ƒ‰์— ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ์‹.
    • ์„ฑ๋Šฅ์€ A๋ณด๋‹ค ์•ฝ๊ฐ„ ๋‚ฎ์•˜์ง€๋งŒ ์ง€์—ฐ์‹œ๊ฐ„๊ณผ ํ† ํฐ ์‚ฌ์šฉ๋Ÿ‰ ์ธก๋ฉด์—์„œ ๊ฐ€์žฅ ํšจ์œจ์ ์ธ ๊ฒฐ๊ณผ๋ฅผ ๋ณด์ž„.

C. ์ฒ˜์Œ๋ถ€ํ„ฐ ์ฟผ๋ฆฌ ์žฌ์ž‘์„ฑ

  • ๊ฒ€์ƒ‰ ์ „์— ์งˆ์˜๋ฅผ LLM์œผ๋กœ ์žฌ์ž‘์„ฑํ•œ ๋’ค ๊ฒ€์ƒ‰ํ•˜๋Š” ๋ฐฉ์‹.
    • ์งˆ์˜์˜ ์ผ๋ถ€ ๊ธฐ์ˆ  ์šฉ์–ด๊ฐ€ ๋ณ€ํ˜•๋˜๋ฉด์„œ ๊ฒ€์ƒ‰ ๊ด€๋ จ์„ฑ๊ณผ ์ •ํ™•๋„๊ฐ€ ์ƒ๋Œ€์ ์œผ๋กœ ๋‚ฎ๊ฒŒ ๋‚˜ํƒ€๋‚œ๊ฑธ๋กœ ์ถ”์ •.

๊ฒฐ๋ก 

  • ํ•„์š”์‹œ ์งˆ์˜ ์žฌ์ž‘์„ฑ์„ ์ ์šฉํ•˜๋Š” ๋ฐฉ์‹์ด ๊ฐ€์žฅ ๋†’์€ ์ •ํ™•๋„๋ฅผ ๋ณด์˜€์œผ๋‚˜, ์ง€์—ฐ ์‹œ๊ฐ„๊ณผ ํ† ํฐ ์‚ฌ์šฉ๋Ÿ‰ ์ธก๋ฉด์—์„œ์˜ trade-off๊ฐ€ ํ™•์ธ๋˜์—ˆ๋‹ค.
  • ๊ธฐ๋ณธ ์งˆ์˜๋ฅผ ๊ทธ๋Œ€๋กœ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ์‹๋„ ์ค€์ˆ˜ํ•œ ์ •ํ™•๋„๋ฅผ ๋ณด์˜€์ง€๋งŒ, ์‚ฌ์šฉ์ž์˜ ์งˆ๋ฌธ์ด ๋ชจํ˜ธํ•˜๊ฑฐ๋‚˜ ํ’ˆ์งˆ์ด ๋‚ฎ์•„์งˆ์ˆ˜๋ก ๋‘ ๋ฐฉ์‹ ๊ฐ„ ์ •ํ™•๋„ ์ฐจ์ด๊ฐ€ ์ปค์งˆ ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ์„ ๊ฒƒ์œผ๋กœ ํŒ๋‹จ๋œ๋‹ค.

๋น„์ „ AI ๊ธฐ๋ฐ˜ ์™„์„ฑ์ฐจ ๊ฒ€์‚ฌ ํ”Œ๋žซํผ checkcar

  • ๋น„์ „ AI ๊ฒ€์‚ฌ ๊ฒฐ๊ณผ๋ฅผ ์›น์œผ๋กœ ์š”์ฒญ/์ฒ˜๋ฆฌ/๋ชจ๋‹ˆํ„ฐ๋งํ•˜๋Š” ์„œ๋น„์Šคํ˜• ํ’ˆ์งˆ ๊ฒ€์‚ฌ ํ”Œ๋žซํผ
  • ๋งก์€ ์—ญํ• 
    • AWS EKS ๊ธฐ๋ฐ˜ ์ปจํ…Œ์ด๋„ˆ ๋ฐฐํฌ ๋ฐ Jenkins CI/CD ๊ตฌ์ถ•, Istio IngressยทGrafana ๋ชจ๋‹ˆํ„ฐ๋ง ๊ตฌ์„ฑ
    • JWT ๊ธฐ๋ฐ˜ ์ธ์ฆ/์ธ๊ฐ€ ๋ฐ ๋ฐฑ์—”๋“œ ๊ธฐ๋Šฅ ๊ตฌํ˜„/์•ˆ์ •ํ™”, Kafka ๊ธฐ๋ฐ˜ ๋น„๋™๊ธฐ ์ฒ˜๋ฆฌ
    • ViViT ๊ธฐ๋ฐ˜ ์™€์ดํผ ๋™์ž‘ ๋ถ„๋ฅ˜ ๋ชจ๋ธ ํ•™์ŠตยทํŠœ๋‹ ๋ฐ ์„ฑ๋Šฅ ๊ฐœ์„ (70%๋Œ€ โ†’ 80%๋Œ€)
  • ๊ธฐ๊ฐ„: 2025.07 โ€“ 2025.09
  • ์ฐธ์—ฌ ์ธ์›: 7๋ช…
  • ์—ญํ• : AI ๋ชจ๋ธ๋ง, ๋ฐฑ์—”๋“œ(BE), ํ”„๋ก ํŠธ์—”๋“œ(FE), ํด๋ผ์šฐ๋“œ ๋ฐฐํฌ

ํ”„๋กœ์ ํŠธ ๊ฐœ์š”


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

์ฃผ์š” ๋ชฉํ‘œ


  • ํ’ˆ์งˆ ๋ฐ ์•ˆ์ •์„ฑ ํ–ฅ์ƒ: ๋ถˆ๋Ÿ‰๋ฅ  ๊ฐ์†Œ ๋ฐ ์ผ๊ด€๋œ ํ’ˆ์งˆ ๊ธฐ์ค€ ์œ ์ง€
  • ์ ‘๊ทผ์„ฑ ๋ฐ ํšจ์œจ์„ฑ ์ฆ๋Œ€: ์›น ๊ธฐ๋ฐ˜์œผ๋กœ ์–ธ์ œ ์–ด๋””์„œ๋‚˜ ๊ฒ€์‚ฌ ์š”์ฒญ ๋ฐ ์‹ค์‹œ๊ฐ„ ๋ชจ๋‹ˆํ„ฐ๋ง ๊ฐ€๋Šฅ
  • ์ •ํ™•๋„ ๋ฐ ์‹ ๋ขฐ์„ฑ ํ™•๋ณด: ๊ฒฐํ•จ ๊ฒ€์ถœ ์ •ํ™•๋„ 80% ์ด์ƒ ๋‹ฌ์„ฑ ๋ชฉํ‘œ ๋ฐ ๊ฒ€์‚ฌ ์‹œ๊ฐ„ ๋‹จ์ถ•

์‚ฌ์šฉ ๊ธฐ์ˆ  ๋ฐ ๋„๊ตฌ


  • AI: YOLOv8n, ViViT, OpenAI API, RAG, PyTorch
  • Backend: Java, Spring Boot,, FastAPI, Python
  • Frontend: JavaScript, React
  • Database: MySQL
  • Cloud & Infra: AWS, Amazon EKS, Istio, Docker, Kafka, Amazon RDS, Amazon S3

์ฃผ์š” ๊ธฐ๋Šฅ


  • AI ๋ชจ๋ธ
    • ๋„์žฅ๋ฉด ๊ฒฐํ•จ ํƒ์ง€: ์ด๋ฏธ์ง€ ๋ถ„์„์„ ํ†ตํ•ด ์Šคํฌ๋ž˜์น˜, ์ฐŒ๊ทธ๋Ÿฌ์ง ๋“ฑ ๊ฒฐํ•จ ์‹๋ณ„
    • ๋žจํ”„ ๋ฐ๊ธฐ ๊ฒ€์‚ฌ: ๋žจํ”„์˜ ON/OFF ์ƒํƒœ ๋ฐ ๋ฐ๊ธฐ ๊ท ์ผ๋„๋ฅผ ์ •๋Ÿ‰์ ์œผ๋กœ ์ธก์ •ํ•˜์—ฌ ๊ฒฐํ•จ ํƒ์ง€
    • ์›Œ์…”์•ก ๋ถ„์‚ฌ ๊ฐ์ง€: ๋ถ„์ถœ ์˜์ƒ์„ ํ”„๋ ˆ์ž„ ๋‹จ์œ„๋กœ ๋ถ„์„ํ•˜์—ฌ ๋ถ„์‚ฌ ๊ฐ๋„, ๋ถ„ํฌ ๋“ฑ์„ ๊ณ„์‚ฐํ•˜๊ณ  ๊ฒฐํ•จ ํŒ๋‹จ
    • ์™€์ดํผ ์ด์ƒ ๋™์ž‘ ์ธ์‹: Blender์™€ Unreal ์—”์ง„์œผ๋กœ ๋ฐ์ดํ„ฐ์…‹์„ ๊ตฌ์ถ•ํ•˜๊ณ , ViViT ๋ชจ๋ธ์„ ํ™œ์šฉํ•ด 7๊ฐ€์ง€ ๋™์ž‘ ํด๋ž˜์Šค ๋ถ„๋ฅ˜
    • RAG ๊ธฐ๋ฐ˜ ์กฐ์น˜ ์ œ์•ˆ: ๊ฒฐํ•จ ์œ ํ˜•์— ๋”ฐ๋ผ ๋งž์ถคํ˜• ์ˆ˜๋ฆฌ ๊ฐ€์ด๋“œ ๋ฐ ์ž‘์—… ๋ณด๊ณ ์„œ ์ž๋™ ์ƒ์„ฑ
  • ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜
    • ๊ด€๋ฆฌ์ž์™€ ์ž‘์—…์ž ๊ถŒํ•œ์„ ๋ถ„๋ฆฌํ•œ ์ฒด๊ณ„์ ์ธ ์ ‘๊ทผ ์ œ์–ด ๊ตฌํ˜„
    • ๊ด€๋ฆฌ์ž ๋Œ€์‹œ๋ณด๋“œ์—์„œ ์ „์ฒด ๊ฒ€์‚ฌ ํ˜„ํ™ฉ ๋ชจ๋‹ˆํ„ฐ๋ง ๋ฐ ํ†ต๊ณ„ ์กฐํšŒ ๊ฐ€๋Šฅ
    • ์ž‘์—…์ž๋Š” ํ• ๋‹น๋œ ๊ฒ€์‚ฌ ์—…๋ฌด ์ˆ˜ํ–‰ ๋ฐ ๊ฒฐ๊ณผ ๋ณด๊ณ ์„œ ์ž‘์„ฑ
    • Kafka๋ฅผ ํ™œ์šฉํ•œ ๋น„๋™๊ธฐ ๋ฉ”์‹œ์ง• ์‹œ์Šคํ…œ์œผ๋กœ ๋‹ค์ˆ˜์˜ ์ฐจ๋Ÿ‰ ๋™์‹œ ๊ฒ€์‚ฌ ์ฒ˜๋ฆฌ

์ฃผ์š” ๊ธฐ์—ฌ ๋ฐ ๋‹ด๋‹น ์—…๋ฌด


์ œ๊ฐ€ ๋‹ด๋‹นํ•œ ์ฃผ์š” ์—ญํ• ์€ AI ๋ชจ๋ธ๋ง, DevOps ๊ตฌ์ถ•, ๊ทธ๋ฆฌ๊ณ  ๊ฐœ๋ฐœ์˜ ํ•ต์‹ฌ์ ์ธ ๋ถ€๋ถ„์„ ์™„์„ฑํ•˜๋Š” ๊ฒƒ์ด์—ˆ์Šต๋‹ˆ๋‹ค.

  • ํด๋ผ์šฐ๋“œ ๋ฐฐํฌ ๋ฐ CI/CD ํ™˜๊ฒฝ ๊ตฌ์ถ• (DevOps)
    • ํ”„๋กœ์ ํŠธ์˜ ๋ชจ๋“  ์„œ๋น„์Šค๋ฅผ Docker ์ปจํ…Œ์ด๋„ˆํ™”ํ•˜์—ฌ AWS EKS ํ™˜๊ฒฝ์— ์„ฑ๊ณต์ ์œผ๋กœ ๋ฐฐํฌํ–ˆ์Šต๋‹ˆ๋‹ค.
    • Jenkins๋ฅผ ํ™œ์šฉํ•œ CI/CD ํŒŒ์ดํ”„๋ผ์ธ์„ ๊ตฌ์ถ•ํ•˜์—ฌ ์ฝ”๋“œ ๋ณ€๊ฒฝ ์‹œ ์ž๋™์œผ๋กœ ๋นŒ๋“œ ๋ฐ ๋ฐฐํฌ๊ฐ€ ์ด๋ฃจ์–ด์ง€๋„๋ก ํ”„๋กœ์„ธ์Šค๋ฅผ ์ž๋™ํ™”ํ–ˆ์Šต๋‹ˆ๋‹ค.
    • Istio ingress gateway๋ฅผ ํ†ตํ•œ ํ”„๋ก ํŠธ/๋ฐฑ์—”๋“œ API ๊ฒŒ์ดํŠธ์›จ์ด ๋ถ„๊ธฐ, Grafana ๊ธฐ๋ฐ˜ ๋ชจ๋‹ˆํ„ฐ๋ง ํ™˜๊ฒฝ์„ ๊ตฌ์ถ•ํ–ˆ์Šต๋‹ˆ๋‹ค.
    • ๊ฐ„ํ—์ ์œผ๋กœ ๋…ธ๋“œ ์ „์ฒด๊ฐ€ ๋‹ค์šด๋˜๋Š” ๋ฌธ์ œ๋ฅผ ํ™•์ธํ•˜์—ฌ AI ์„œ๋น™ ์„œ๋ฒ„๋ฅผ ๋‹ค๋ฅธ ๋…ธ๋“œ ๊ทธ๋ฃน์œผ๋กœ ๊ตฌ์„ฑํ•˜์—ฌ ๋ฆฌ์†Œ์Šค ๋ฌธ์ œ๋กœ ๋…ธ๋“œ๊ฐ€ ์—ฐ์‡„์ ์œผ๋กœ ์ฃฝ๋Š” ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜์˜€์Šต๋‹ˆ๋‹ค.
  • AI ๋ชจ๋ธ ๊ฐœ๋ฐœ ๋ฐ ๋ฐ์ดํ„ฐ ์—”์ง€๋‹ˆ์–ด๋ง
    • ์™€์ดํผ ๊ณ ์žฅ ์‹œ๋‚˜๋ฆฌ์˜ค์˜ ๋ฐ์ดํ„ฐ์…‹ ๊ตฌ์ถ•์ด ์–ด๋ ต๋‹ค๋Š” ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด, Unreal ์—”์ง„ 5, blender๋ฅผ ํ†ตํ•ด ๊ธฐ์กด ์ฐจ๋Ÿ‰ ์ƒ˜ํ”Œ์„ ์‚ฌ์šฉํ•ด ํ•ด๋‹น ์‹œ๋‚˜๋ฆฌ์˜ค์˜ ๋ฐ์ดํ„ฐ์…‹์„ ๊ตฌ์ถ•ํ•˜์˜€์œผ๋ฉฐ, ๋ฐ์ดํ„ฐ ์ „์ฒ˜๋ฆฌ ํŒŒ์ดํ”„๋ผ์ธ์„ ๊ตฌ์ถ•ํ•˜์˜€์Šต๋‹ˆ๋‹ค.
    • ViViT ๋ชจ๋ธ์˜ ํ•™์Šต ๋ฐ ์ „์ฒ˜๋ฆฌ ์กฐ์ •์„ ํ†ตํ•ด ์™€์ดํผ ์ด์ƒ ๋™์ž‘ ์ธ์‹ ์ •ํ™•๋„๋ฅผ ์ดˆ๊ธฐ 70%๋Œ€ โ†’ 80%๋Œ€๋กœ ๋†’์˜€์Šต๋‹ˆ๋‹ค.
  • ๊ฐœ๋ฐœ ๋ฐ ์‹œ์Šคํ…œ ์•ˆ์ •ํ™”
    • ๋ฐฑ์—”๋“œ: ๋กœ๊ทธ์ธ, ํšŒ์›๊ฐ€์ž…(JWT) ๊ธฐ๋Šฅ๊ณผ API ๊ฒŒ์ดํŠธ์›จ์ด๋ฅผ ๊ตฌํ˜„ํ•˜์˜€์œผ๋ฉฐ, ๋‹ค๋ฅธ ํŒ€์›์˜ ๊ฒŒ์‹œํŒ ๊ธฐ๋Šฅ ๊ตฌํ˜„์„ ์ด์–ด๋ฐ›์•„ ์ตœ์ข…์ ์œผ๋กœ ์™„์„ฑํ•˜๊ณ , ๊ฒ€ํ†  ๋ฐ ์ˆ˜์ •ํ•˜์—ฌ ์•ˆ์ •์„ฑ์„ ํ™•๋ณดํ–ˆ์Šต๋‹ˆ๋‹ค.
    • ํ”„๋ก ํŠธ์—”๋“œ: ๋ฐฑ์—”๋“œ์™€ ์—ฐ๋™๋˜๋Š” ํšŒ์›๊ฐ€์ž… ๋ฐ ๋กœ๊ทธ์ธ ํŽ˜์ด์ง€๋ฅผ ๊ตฌํ˜„ํ–ˆ์œผ๋ฉฐ, Redux ์ƒํƒœ ๊ด€๋ฆฌ๋ฅผ ํ†ตํ•ด ์‚ฌ์šฉ์ž์˜ ์—ญํ• ์— ๋”ฐ๋ฅธ UI ์ ‘๊ทผ ์ œํ•œ ๊ธฐ๋Šฅ์„ ๊ฐœ๋ฐœํ–ˆ์Šต๋‹ˆ๋‹ค.
    • ์ฝ”๋“œ ๋ฆฌ๋ทฐ ๋ฐ ๋””๋ฒ„๊น…: ํ”„๋กœ์ ํŠธ ์ฝ”๋“œ ํ’ˆ์งˆ์„ ๋†’์ด๊ธฐ ์œ„ํ•ด ๋‹ค๋ฅธ ํŽ˜์ด์ง€๋“ค ์ „๋ฐ˜์˜ ์ฝ”๋“œ๋ฅผ ๊ฒ€ํ†  ๋ฐ ์ˆ˜์ •ํ•˜๊ณ , ๋ฐœ์ƒํ•œ ๋ฒ„๊ทธ๋“ค์„ ํ•ด๊ฒฐํ•˜์—ฌ ์‹œ์Šคํ…œ ์ „๋ฐ˜์˜ ์•ˆ์ •ํ™”์— ๊ธฐ์—ฌํ–ˆ์Šต๋‹ˆ๋‹ค.

ViViT ํ•™์Šต ๊ฒฐ๊ณผ (์™€์ดํผ ์ด์ƒ ๋™์ž‘ ์ธ์‹)


  • ์„ ์ • ๋ชจ๋ธ: Epoch 4 (Val F1 ๊ธฐ์ค€)
  • Validation ์„ฑ๋Šฅ (Epoch 4)
    • Loss: 0.5057
    • Accuracy: 0.8352
    • Macro F1: 0.8325
  • Test ์„ฑ๋Šฅ
    • Loss: 0.7276
    • Accuracy: 0.8276
    • Macro F1: 0.8220

Notion image

AI ๊ธฐ๋ฐ˜ ์ฃผ์‹ ํˆฌ์ž ๋ถ„์„ ํ”Œ๋žซํผ investica

  • ์ฃผ์‹ ๋ฐ์ดํ„ฐ/๋ฆฌํฌํŠธ๋ฅผ ์ˆ˜์ง‘ยท๋ถ„์„ํ•ด LLM ์—์ด์ „ํŠธ์™€ UI๋กœ ์ œ๊ณตํ•˜๋Š” ๋ฐ๋ชจ ํ”Œ๋žซํผ
  • ๋‚ด ์—ญํ• (๋ฐฑ์—”๋“œ ์ค‘์‹ฌ)
    • PDF ๋ฆฌํฌํŠธ ์ˆ˜์ง‘ โ†’ ํŒŒ์‹ฑ โ†’ ๋ถ„๋ฅ˜/์š”์•ฝ โ†’ ๊ฒฐ๊ณผ ์ €์žฅ โ†’ ์กฐํšŒ API ์ œ๊ณต๊นŒ์ง€ ํŒŒ์ดํ”„๋ผ์ธ ์„ค๊ณ„ยท๊ตฌํ˜„
    • NestJS + Nestia ๊ธฐ๋ฐ˜์œผ๋กœ ํƒ€์ž…/์Šคํ‚ค๋งˆ ์ค‘์‹ฌ์˜ REST API ๊ณ„์•ฝ ์„ค๊ณ„ ๋ฐ ์—”๋“œํฌ์ธํŠธ ๊ตฌํ˜„
    • ํ”„๋ก ํŠธ UI(๋ณด๊ณ ์„œ ์กฐํšŒ)๊นŒ์ง€ ์—ฐ๊ฒฐํ•ด end-to-end ๊ธฐ๋Šฅ ์™„์„ฑ
  • ๊ธฐ๊ฐ„: 2025.07 โ€“ 2025.11
  • ์ฐธ์—ฌ ์ธ์›: 5๋ช…
  • ์—ญํ• : ๋ฐฑ์—”๋“œ(BE), ํ”„๋ก ํŠธ์—”๋“œ(FE)

ํ”„๋กœ์ ํŠธ ๊ฐœ์š”


Agentica ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ํ™œ์šฉํ•œ AI ๊ธฐ๋ฐ˜ ์ฃผ์‹ ํˆฌ์ž ๋ถ„์„ ๋ฐ ์ž๋™ํ™” ๋ฐ๋ชจ ํ”Œ๋žซํผ

2025 ์˜คํ”ˆ์†Œ์Šค ๊ฐœ๋ฐœ์ž๋Œ€ํšŒ ์ถœํ’ˆ์ž‘์œผ๋กœ, LLM ๊ธฐ๋ฐ˜ ์—์ด์ „ํŠธ ํ”„๋ ˆ์ž„์›Œํฌ์ธ 'Agentica'์˜ ์‹ค์งˆ์ ์ด๊ณ  ๊ธ์ •์ ์ธ ํ™œ์šฉ ์‚ฌ๋ก€๋ฅผ ์ฆ๋ช…ํ•˜๊ธฐ ์œ„ํ•ด ๊ฐœ๋ฐœ๋จ.

์ฃผ์š” ๋ชฉํ‘œ


  • Agentica ํ”„๋ ˆ์ž„์›Œํฌ์˜ ํšจ์šฉ์„ฑ ์ž…์ฆ
    • ์ž˜ ์ •์˜๋œ API์™€ AI ์—์ด์ „ํŠธ(Agentica)๋ฅผ ๊ฒฐํ•ฉํ•˜์—ฌ, ์–ผ๋งˆ๋‚˜ ๋น ๋ฅด๊ณ  ์™„์„ฑ๋„ ๋†’์€ ์ฑ—๋ด‡ ์„œ๋น„์Šค๋ฅผ ๊ตฌ์ถ•ํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ๋ณด์—ฌ์ฃผ๋Š” ๊ธฐ์ˆ ์  ๋ฐ๋ชจ ์—ญํ• ์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.
  • ๋””์ง€ํ„ธ ์†Œ์™ธ ๊ณ„์ธต์˜ ํˆฌ์ž ์žฅ๋ฒฝ ์ œ๊ฑฐ
    • ๊ธฐ์กด HTS/MTS์˜ ๋ณต์žกํ•œ UI์™€ ์–ด๋ ค์šด ๊ธˆ์œต ์šฉ์–ด๋กœ ์ธํ•ด ํˆฌ์ž๋ฅผ ์–ด๋ ค์›Œํ•˜๋Š” ๊ณ ๋ น์ธต ๋ฐ ์ดˆ๋ณด์ž๋“ค์˜ ์ง„์ž… ์žฅ๋ฒฝ์„ ๋‚ฎ์ถฅ๋‹ˆ๋‹ค.
    • ์ •๋ณด์˜ ๋น„๋Œ€์นญ์„ฑ์„ ํ•ด์†Œํ•˜๊ณ  ๋ˆ„๊ตฌ๋‚˜ ์‰ฝ๊ฒŒ ๊ธˆ์œต ์‹œ์žฅ ๋ฐ์ดํ„ฐ์— ์ ‘๊ทผํ•˜๋„๋ก ๋•์Šต๋‹ˆ๋‹ค.

์‚ฌ์šฉ ๊ธฐ์ˆ  ๋ฐ ๋„๊ตฌ


  • AI: ChatGPT, Gemini
  • Backend: TypeScript, NestJS, Agentica
  • Frontend: TypeScript, React, Vite
  • ๊ธฐํƒ€: pnpm, KIS (ํ•œ๊ตญํˆฌ์ž์ฆ๊ถŒ) API, Naver News API

์ฃผ์š” ๊ธฐ๋Šฅ


  • AI ํˆฌ์ž ์ƒ๋‹ด: ์‹ค์‹œ๊ฐ„ ์—์ด์ „ํŠธ ์ƒํ˜ธ์ž‘์šฉ
  • ์ฃผ์‹ ๋ฐ์ดํ„ฐ: ์‹ค์‹œ๊ฐ„ ์‹œ์„ธ, ์ฐจํŠธ, ๋‰ด์Šค ๋ถ„์„
  • ํฌํŠธํด๋ฆฌ์˜ค: ๋ณด์œ  ์ฃผ์‹ ๋ฐ ์ˆ˜์ต๋ฅ  ์ถ”์ 
  • ๋ชจ์˜๊ฑฐ๋ž˜: KIS API ์—ฐ๋™ (์‹ค์ œ ๊ฑฐ๋ž˜ ๋ฏธ์ง€์›)
  • AI ๋ถ„์„: ๋ฏธ๋ž˜์—์…‹ ๋ณด๊ณ ์„œ ๊ธฐ๋ฐ˜ AI ๋ณด๊ณ ์„œ ์ œ๊ณต

์ฃผ์š” ๊ธฐ์—ฌ ๋ฐ ๋‹ด๋‹น ์—…๋ฌด


LLM๋ฅผ ํ™œ์šฉํ•ด ์›์‹œ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€๊ณตํ•˜๊ณ , ์‚ฌ์šฉ์ž์—๊ฒŒ ์ „๋‹ฌํ•˜๋Š” ํ•ต์‹ฌ ๊ธฐ๋Šฅ์„ ์„ค๊ณ„ํ•˜๊ณ  ๊ฐœ๋ฐœํ–ˆ์Šต๋‹ˆ๋‹ค.

  • ๊ธฐ์กด ๋‹จ์ˆœํžˆ ๋ณด๊ณ ์„œ๋ฅผ ์ˆ˜์ง‘ํ•˜๋Š” ํ˜•ํƒœ์—์„œ ๋ณด๊ณ ์„œ๋ฅผ ๋ถ„๋ฅ˜ ๋ฐ ๋ถ„์„ํ•˜์—ฌ ์ œ๊ณตํ•˜๋Š” ์•„์ด๋””์–ด ์ œ์‹œ
  • AI ๋ถ„์„ ๋ฐ ๋ณด๊ณ ์„œ ์ƒ์„ฑ ํŒŒ์ดํ”„๋ผ์ธ ๊ตฌ์ถ•
    • ๋ฐ์ดํ„ฐ ์ˆ˜์ง‘ ๋ฐ ํŒŒ์‹ฑ: ์ฆ๊ถŒ์‚ฌ ๋ฆฌํฌํŠธ(PDF) ๋ฐ์ดํ„ฐ๋ฅผ ์ˆ˜์ง‘ํ•˜๊ณ  ํ…์ŠคํŠธ, ๊ทธ๋ž˜ํ”„, ํ‘œ ๋“ฑ์˜ ๋น„์ •ํ˜• ๋ฐ์ดํ„ฐ๋ฅผ LLM์„ ์‚ฌ์šฉํ•ด ํŒŒ์‹ฑํ•˜๋Š” ๊ธฐ๋Šฅ์„ ๊ฐœ๋ฐœํ–ˆ์Šต๋‹ˆ๋‹ค.
    • LLM ๊ธฐ๋ฐ˜ ๋ถ„์„/์š”์•ฝ ๋กœ์ง ๊ตฌํ˜„: LLM์„ ํ™œ์šฉํ•˜์—ฌ ์ˆ˜์ง‘๋œ ๋ฐ์ดํ„ฐ๋ฅผ ๋ถ„์„ํ•˜๊ณ , ํ•ต์‹ฌ ๋‚ด์šฉ์„ ์š”์•ฝํ•˜์—ฌ ์‚ฐ์—… ํ‰๊ฐ€, ์ข…๋ชฉ ๋ถ„์„ ๋“ฑ์˜ ๋‚ด์šฉ์„ ๋‹ด์€ ๋ณด๊ณ ์„œ๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๋กœ์ง์„ ๊ตฌํ˜„ํ–ˆ์Šต๋‹ˆ๋‹ค.
    • API ์„ค๊ณ„ ๋ฐ ๊ฐœ๋ฐœ: ์ƒ์„ฑ๋œ ๋ณด๊ณ ์„œ ๋ฐ์ดํ„ฐ๋ฅผ ํ”„๋ก ํŠธ์—”๋“œ ๋ฐ ์—์ด์ „ํŠธ์— ์ œ๊ณตํ•˜๊ธฐ ์œ„ํ•œ RESTful API๋ฅผ NestJS์™€ Nestia๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์„ค๊ณ„ํ•˜๊ณ  ๊ตฌํ˜„ํ–ˆ์Šต๋‹ˆ๋‹ค.
    • ๋ณด๊ณ ์„œ ์กฐํšŒ ํ”„๋ก ํŠธ์—”๋“œ ๊ตฌํ˜„: ๋ฐฑ์—”๋“œ API์™€ ์—ฐ๋™ํ•˜์—ฌ AI ๋ณด๊ณ ์„œ UI๋ฅผ React๋กœ ๊ตฌํ˜„ํ–ˆ์Šต๋‹ˆ๋‹ค.

Certifications

  • AICE associate 2025.04.26
  • ์ •๋ณด์ฒ˜๋ฆฌ๊ธฐ์‚ฌ 2025.12.24

Awards

  • 2025 ์˜คํ”ˆ์†Œ์Šค ๊ฐœ๋ฐœ์ž ๋Œ€ํšŒ 2025.12.05 - ๋™์ƒ(๋คผํŠผํ…Œํฌ๋†€๋Ÿฌ์ง€์Šค ๋Œ€ํ‘œ์ƒ) ์ˆ˜์ƒ

Active

KT AIVLE School 2025.03.25 - 2025.09.09

  • ๋น„์ „ AI๊ธฐ๋ฐ˜ ์™„์„ฑ์ฐจ ๊ฒ€์‚ฌ ํ”Œ๋žซํผ: Checkar ๊ฐœ๋ฐœ

2025 ์˜คํ”ˆ์†Œ์Šค ๊ฐœ๋ฐœ์ž ๋Œ€ํšŒ 2025.07.04 - 2025.12.05

  • ์ฃผ์‹ ํˆฌ์ž ๋ถ„์„ ์—์ด์ „ํŠธ ํ”Œ๋žซํผ: investica ๊ฐœ๋ฐœ