8000 ohdyo (ohdyo) ยท GitHub
[go: up one dir, main page]

Skip to content
View ohdyo's full-sized avatar

Highlights

  • Pro

Block or report ohdyo

Block user

Prevent this user from interacting with your repositories and sending you notifications. Learn more about blocking users.

You must be logged in to block users.

Content in all repositories owned by your account will be closed.
Maximum 250 characters. Please donโ€™t include any personal information such as legal names or email addresses. This note will only be visible to you.
Report abuse

Contact GitHub support about this userโ€™s behavior. Learn more about reporting abuse.

Report abuse
ohdyo/README.md
Jaehyeok Lee

์•ˆ๋…•ํ•˜์„ธ์š”, ๋ฌธ์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค๋ฃจ๋Š” AI ์„œ๋น„์Šค ๊ฐœ๋ฐœ์ž ์ด์žฌํ˜์ž…๋‹ˆ๋‹ค

Document AI ยท RAG ยท LangGraph Agent ยท vLLM Serving ยท LoRA Fine-tuning

Gmail ๋Œ€ํ‘œ ํ”„๋กœ์ ํŠธ kor_doc_parser

๐Ÿ‘‹ About Me

๋ฌธ์„œ๋ฅผ ์ •ํ™•ํžˆ ์ฝ๋Š” ๋ฐ์„œ ์‹œ์ž‘ํ•ด ๊ฒ€์ƒ‰ยท์ƒ์„ฑยท์„œ๋น™๊นŒ์ง€, AI ๊ธฐ๋Šฅ์„ ์‹ค์ œ๋กœ ๋Œ์•„๊ฐ€๋Š” ํ™˜๊ฒฝ์— ์˜ฌ๋ฆฌ๊ณ  ๊ฒฐ๊ณผ๋ฅผ ์ˆซ์ž๋กœ ํ™•์ธํ•˜๋Š” ๊ฐœ๋ฐœ์ž์ž…๋‹ˆ๋‹ค.

๋‘ ํšŒ์‚ฌ์—์„œ 1๋…„ ๋™์•ˆ AI ์†”๋ฃจ์…˜์„ ๊ณ ๊ฐ์‚ฌ ํ์‡„๋ง๊ณผ ์‚ฌ๋‚ด ์‹œ์Šคํ…œ์— ์˜ฌ๋ ธ์Šต๋‹ˆ๋‹ค. ์‚ฌ๋‚ด RAG ์ฑ—๋ด‡์„ ๋งŒ๋“ค๋ฉฐ ์ฒด๊ฐํ•œ "RAG ๋‹ต๋ณ€ ํ’ˆ์งˆ์€ ์›๋ณธ ๋ฌธ์„œ๋ฅผ ์–ผ๋งˆ๋‚˜ ์ •ํ™•ํžˆ ์ฝ์–ด ๋‚ด๋А๋ƒ์— ๋‹ฌ๋ ค ์žˆ๋‹ค"๋Š” ๋ฌธ์ œ์˜์‹์„ 1์ธ ํ”„๋กœ์ ํŠธ๋กœ ์ด์–ด, ํ•œ๊ตญ์–ด ๊ณต๊ณต ๋ฌธ์„œ PDF๋ฅผ RAG์šฉ ๋ฐ์ดํ„ฐ๋กœ ๋ฐ”๊พธ๋Š” ํ•œ๊ตญ์–ด ๋ฌธ์„œ ํŒŒ์„œ๋ฅผ ๋งŒ๋“ค๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

  • ์‹ค์ œ ํ™˜๊ฒฝ์— ์˜ฌ๋ ค์„œ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค โ€” ์‚ฌ๋‚ด ์ฑ—๋ด‡์˜ LangGraph ์—์ด์ „ํŠธ๋ฅผ 2026.06๋ถ€ํ„ฐ ๊ธฐ๋ณธ ์ฑ„ํŒ… ์—”์ง„์œผ๋กœ ์˜ฌ๋ ธ๊ณ , ์˜์ƒ ๋น„์‹๋ณ„ํ™” ์†”๋ฃจ์…˜์„ ์ธํ„ฐ๋„ท์ด ๋ง‰ํžŒ ๊ณ ๊ฐ์‚ฌ ํ์‡„๋ง์— ๋„์ปค๋กœ ๊ตฌ์ถ•ํ–ˆ์Šต๋‹ˆ๋‹ค.
  • ์›์ธ์„ ์ฐพ๊ณ  ์ˆซ์ž๋กœ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค โ€” GPU ํ•˜๋‚˜๋ฅผ ๋ฌธ์„œ ์ธ์‹๊ณผ LLM์ด ๋‚˜๋ˆ  ์“ฐ๋ฉฐ ์ดˆ๋‹น 3ํ† ํฐ๊นŒ์ง€ ๋–จ์–ด์ง€๋˜ LLM ์ƒ์„ฑ์„, ์ง์ ‘ ์žฌ์„œ ์›์ธ์„ ์ฐพ๊ณ  CUDA MPS๋กœ ๋ฌธ์„œ ์ธ์‹ ๋ชซ์„ 30%๋กœ ๋ฌถ์–ด 367~727ํ† ํฐ์œผ๋กœ ๋˜์‚ด๋ ธ์Šต๋‹ˆ๋‹ค.
  • ๊ฒฐ์ •๊ณผ ๊ฒฐ๊ณผ๋ฅผ ๊ธฐ๋กํ•ฉ๋‹ˆ๋‹ค โ€” ๋ชจ๋ธ ์„ ์ •๋ถ€ํ„ฐ ํŠœ๋‹๊นŒ์ง€ ๊ฒฐ์ •๋งˆ๋‹ค ๊ทผ๊ฑฐ์™€ ๋ฒ„๋ฆฐ ๋Œ€์•ˆ์„ ๋‚จ๊ธฐ๊ณ , ๋ฏธ๋ฆฌ ์ •ํ•œ ํ†ต๊ณผ ๊ธฐ์ค€์— ๋ชป ๋ฏธ์นœ ๊ฒฐ๊ณผ๋„ ๊ธฐ์ค€์„ ๋ฐ”๊พธ์ง€ ์•Š๊ณ  ๊ทธ๋Œ€๋กœ ๊ธฐ๋กํ•ฉ๋‹ˆ๋‹ค.
  • ๋ฐ์ดํ„ฐ์™€ ๊ถŒํ•œ์˜ ๊ฒฝ๊ณ„๋ฅผ ๋จผ์ € ์ •ํ•ฉ๋‹ˆ๋‹ค โ€” GPU ์„œ๋ฒ„๋Š” ๋ฌธ์„œ๋ฅผ ๋ฐ›์•„ ๊ณ„์‚ฐ๋งŒ ํ•˜๊ณ  ์›๋ณธ ์ €์žฅ์†ŒยทDB์—๋Š” ์ ‘๊ทผํ•˜์ง€ ์•Š๋„๋ก ์—ญํ• ์„ ๋‚˜๋ˆด์Šต๋‹ˆ๋‹ค.

๐Ÿ’ผ Experience & Education

๊ธฐ๊ฐ„ ๋‚ด์šฉ
2026.01 ~ 2026.08 ์ปด์•คํœด๋จผ ยท ์—ฐ๊ตฌ์› โ€” ์‚ฌ๋‚ด RAG ์ฑ—๋ด‡ LLM ์„œ๋ฒ„(FastAPI) ยท RAG ๋ฌธ์„œ ์ ์žฌ ํŒŒ์ดํ”„๋ผ์ธ
2025.09 ~ 2025.12 ๋””๋น„์—”ํ… ยท ์—ฐ๊ตฌ์› โ€” ์˜์ƒ AI ๋น„์‹๋ณ„ํ™” ์†”๋ฃจ์…˜ ๊ณ ๋„ํ™”
2024.12 ~ 2025.06 SK๋„คํŠธ์›์Šค Family AI ์บ ํ”„ 9๊ธฐ ์ˆ˜๋ฃŒ โ€” ML ยท DL ยท LLM ยท Fine-Tuning ยท RAG ยท Agent
2024.03 ~ 2024.06 ๋ฐฑ์—”๋“œ SW ๊ฐœ๋ฐœ์ž ๊ณผ์ • ์ˆ˜๋ฃŒ(์‚ผ์œก๋Œ€ํ•™๊ต) โ€” Java ยท Spring Boot ยท JPA ยท MySQL ยท React
2018.03 ~ 2025.07 ์‚ผ์œก๋Œ€ํ•™๊ต ์ปดํ“จํ„ฐ๊ณตํ•™๋ถ€(์†Œํ”„ํŠธ์›จ์–ด์ „๊ณต) ์กธ์—…

๐Ÿš€ Projects

ํšŒ์‚ฌ ํ”„๋กœ์ ํŠธ

ํšŒ์‚ฌ ์ฝ”๋“œ๋Š” ๋น„๊ณต๊ฐœ๋ผ, ๋งก์€ ์—…๋ฌด์™€ ๋ฌธ์ œ ํ•ด๊ฒฐ ๊ณผ์ •์„ ์ •๋ฆฌํ–ˆ์Šต๋‹ˆ๋‹ค.

์‚ฌ๋‚ด RAG ๋ฉ€ํ‹ฐ์—์ด์ „ํŠธ ์ฑ—๋ด‡ ์ปด์•คํœด๋จผ ยท 2026.01 ~ 2026.08

์‚ฌ๋‚ด ๋ฌธ์„œ ๊ฒ€์ƒ‰ยท์š”์•ฝยท๋ฌธ์„œ ์ƒ์„ฑ์„ ์ž์—ฐ์–ด ํ•œ ๋ฒˆ์œผ๋กœ ์ฒ˜๋ฆฌํ•˜๊ณ , ์ฃผ์š” ๋ถ„๊ธฐ๋งˆ๋‹ค ์‚ฌ์šฉ์ž ์Šน์ธ์„ ๋ฐ›๋Š” ์ฑ—๋ด‡์ž…๋‹ˆ๋‹ค. ๊ทธ์ค‘ LLM ์„œ๋ฒ„(FastAPI)๋ฅผ ๋งก์•˜์Šต๋‹ˆ๋‹ค.

  • LangChain ์ฒด์ธ์„ LangGraph ์—์ด์ „ํŠธ๋กœ ๋ฐ”๊ฟ” 2026.06๋ถ€ํ„ฐ ๊ธฐ๋ณธ ์ฑ„ํŒ… ์—”์ง„์œผ๋กœ ์ ์šฉ
  • ๊ถŒํ•œ๋ณ„ ๊ฒ€์ƒ‰ ์‹คํŒจ์˜ ์›์ธ(์ˆœ์ฐจ ์Šค์บ”)์„ ์ฐพ์•„ ํ•ด๊ฒฐ
๋งก์€ ์—…๋ฌด ยท ๋ฌธ์ œ ํ•ด๊ฒฐ ์ž์„ธํžˆ

๋งก์€ ์—…๋ฌด (Spring ์ค‘๊ณ„ ์„œ๋ฒ„ยท์›น ํ™”๋ฉด์€ ๋‹ค๋ฅธ ํŒ€์› ๋‹ด๋‹น)

  • LangGraph ์—์ด์ „ํŠธ โ€” ํ•œ ๋ฐฉํ–ฅ์œผ๋กœ๋งŒ ํ๋ฅด๋˜ LangChain ์ฒด์ธ์„ LangGraph StateGraph๋กœ ๋ฐ”๊ฟจ์Šต๋‹ˆ๋‹ค. ์˜๋„ ๋ถ„๋ฅ˜(์ž๋ฃŒ ๊ฒ€์ƒ‰ยท์š”์•ฝยทPPT ์ƒ์„ฑยท์ž…์ฐฐ ์กฐํšŒ) โ†’ ๊ฐˆ๋ž˜๋ณ„ ์ฒ˜๋ฆฌ โ†’ ์ฃผ์š” ๋ถ„๊ธฐ๋งˆ๋‹ค ์‚ฌ์šฉ์ž ์Šน์ธ ๊ฒŒ์ดํŠธ(PPT ์ƒ์„ฑยท์›น ๊ฒ€์ƒ‰ยท๋“œ๋ผ์ด๋ธŒ ์ €์žฅ)๋กœ ์ด์–ด์ง€๊ณ , ๊ฒŒ์ดํŠธ์—์„œ ๋ฉˆ์ถ˜ ๊ทธ๋ž˜ํ”„ ์ƒํƒœ๋Š” ์‘๋‹ต์œผ๋กœ ๋‚ด๋ณด๋ƒˆ๋‹ค๊ฐ€ ๋‹ค์Œ ์š”์ฒญ์—์„œ ๋Œ๋ ค๋ฐ›์•„ ์ด์–ด ๊ฐ‘๋‹ˆ๋‹ค.
  • LLM ๊ณต๊ธ‰์žยท๊ฒ€์ƒ‰ ์ „ํ™˜ ์Šค์œ„์น˜ โ€” ์ฑ„ํŒ…ยทPPT ์œค๊ณฝ์„ (OpenAI โ†” vLLM), ์›น ๊ฒ€์ƒ‰(Claude โ†” OpenAI), ์‚ฌ๋‚ด ๊ฒ€์ƒ‰(pgvector โ†” LightRAG)์„ ๊ธฐ๋Šฅ๋ณ„ ์„ค์ •๊ฐ’ ํ•˜๋‚˜๋กœ ๋ฐ”๊พธ๊ฒŒ ํ–ˆ์Šต๋‹ˆ๋‹ค. ์›น ๊ฒ€์ƒ‰์€ ๊ฐ™์€ ์งˆ์˜๋กœ ์ง์ ‘ ์žฌ์„œ(Claude 6.5์ดˆ, OpenAI 18.6์ดˆ) ๋น ๋ฅธ ์ชฝ์„ ๊ธฐ๋ณธ๊ฐ’์œผ๋กœ ์ •ํ–ˆ์Šต๋‹ˆ๋‹ค.
  • ๋ฌธ์„œ ํŒŒ์‹ฑ ํŒŒ์ดํ”„๋ผ์ธ(ํŒ€ ๊ณต๋™) โ€” ํ™•์žฅ์ž ๋ผ์šฐํ„ฐยท์ถ”์ถœ ํ”„๋ ˆ์ž„์›Œํฌ, Office(DOCXยทPPTXยทXLSX) ํ…์ŠคํŠธยท์ด๋ฏธ์ง€ยทํ‘œ ์ถ”์ถœ๊ธฐ, PDF โ†’ ๋งˆํฌ๋‹ค์šด ๋ณ€ํ™˜(Marker)์„ ๋งก์•˜์Šต๋‹ˆ๋‹ค.
  • ๋“œ๋ผ์ด๋ธŒ AI ๊ฒ€์ƒ‰ยทPPT ์ž๋™ ์ƒ์„ฑ โ€” ์งˆ๋ฌธ์„ ์ž„๋ฒ ๋”ฉ(bge-m3)ํ•ด ์‚ฌ์šฉ์ž ๊ถŒํ•œ ํด๋” ์•ˆ์—์„œ๋งŒ pgvector๋กœ ์ฐพ๋Š” ๊ฒ€์ƒ‰ API์™€, ํ”„๋กฌํ”„ํŠธ โ†’ ์œค๊ณฝ์„ (JSON ์ƒ์„ฑยท๊ฒ€์ฆ, ์‹คํŒจ ์‹œ ์žฌ์‹œ๋„) โ†’ PPTX(Claude Agent Skills)๋กœ ์ด์–ด์ง€๋Š” PPT ์ƒ์„ฑ์„ ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค.
  • MCP ๋„๊ตฌ ์—ฐ๋™ โ€” WordยทPowerPointยทHWPXยทPDFยท์›น ๊ฒ€์ƒ‰ MCP ์„œ๋ฒ„๋ฅผ ์—ฐ๊ฒฐํ•˜๊ณ , ๊ณต๊ณต๋ฐ์ดํ„ฐ MCP ์„œ๋ฒ„(๋‚˜๋ผ์žฅํ„ฐยท๊ตญํšŒ๋„์„œ๊ด€ยท๊ตญ๊ฐ€๋ฒ•๋ น API)๋ฅผ ์ง์ ‘ ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค.
  • ๋ฐฐํฌ โ€” LLM ์„œ๋ฒ„ยทSpringยทNext.js ์ €์žฅ์†Œ์˜ GitHub Actions ๋ฐฐํฌ ์›Œํฌํ”Œ๋กœ๋ฅผ ์ฒ˜์Œ ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค.

๋ฌธ์ œ ํ•ด๊ฒฐ โ€” ํŠน์ • ๊ถŒํ•œ ๊ณ„์ •์—์„œ๋งŒ ๊ฒ€์ƒ‰ ๊ฒฐ๊ณผ๊ฐ€ ๋น„๊ณ  ๋Šฆ์Œ

  • ๋ฌธ์ œ ๋“œ๋ผ์ด๋ธŒ AI ๊ฒ€์ƒ‰์—์„œ ๊ถŒํ•œ์ด ๊ฑธ๋ฆฐ ํด๋”์˜ ๋ฌธ์„œ๊ฐ€ ์ ์€ ๊ณ„์ •์œผ๋กœ ๋ฌผ์œผ๋ฉด, pgvector ๊ฒ€์ƒ‰ ๊ฒฐ๊ณผ๊ฐ€ ๋Œ์•„์˜ค์ง€ ์•Š๊ฑฐ๋‚˜ ๋Šฆ์—ˆ์Šต๋‹ˆ๋‹ค.
  • ์›์ธ DB๊ฐ€ ๋ฒกํ„ฐ ์ธ๋ฑ์Šค ๋Œ€์‹  ์ „์ฒด ํ–‰์„ ์ฐจ๋ก€๋กœ ํ›‘๋Š” ์ˆœ์ฐจ ์Šค์บ”์„ ๊ณจ๋ผ ์‹œ๊ฐ„ ์ดˆ๊ณผ๊ฐ€ ๋‚ฌ์Šต๋‹ˆ๋‹ค.
  • ํ•ด๊ฒฐ ์งˆ์˜๋ฅผ ์ฐจ์›์„ ๋ช…์‹œํ•œ IVFFlat ํ‘œํ˜„์‹ ์ธ๋ฑ์Šค์— ๋งž๊ฒŒ ๊ณ ์น˜๊ณ , ๋ฐ˜๋ณต ํƒ์ƒ‰ ์ƒํ•œ(max_probes)์„ ์ •ํ•˜๊ณ  ์ˆœ์ฐจ ์Šค์บ”์„ ๊บผ(enable_seqscan=off) ์ธ๋ฑ์Šค ํƒ์ƒ‰์„ ๊ฐ•์ œํ–ˆ์Šต๋‹ˆ๋‹ค.

FastAPI LangGraph vLLM OpenAI ยท Anthropic API PostgreSQL ยท pgvector MCP GitHub Actions

RAG-Anything ๋ฌธ์„œ ์ ์žฌ ํŒŒ์ดํ”„๋ผ์ธ ์—…๋ฌด ํ”„๋กœ์ ํŠธ ยท 1์ธ ์„ค๊ณ„ยท๊ตฌ์ถ•

PDFยทOfficeยทํ•œ๊ธ€(HWP) ์—…๋ฌด ๋ฌธ์„œ๋ฅผ ํ‘œยท์ด๋ฏธ์ง€๊นŒ์ง€ ์ฝ์–ด, ์ฑ—๋ด‡์ด ๋‹ต์˜ ๊ทผ๊ฑฐ๋กœ ์ฐพ์•„ ์“ธ ๋ฒกํ„ฐยท์ง€์‹๊ทธ๋ž˜ํ”„๋กœ ์Œ“๋Š” ํŒŒ์ดํ”„๋ผ์ธ์ž…๋‹ˆ๋‹ค.

  • GPU ๊ฒฝํ•ฉ์œผ๋กœ ์ดˆ๋‹น 3ํ† ํฐ๊นŒ์ง€ ๋–จ์–ด์ง€๋˜ LLM ์ƒ์„ฑ์„ CUDA MPS(GPU ํ•˜๋‚˜๋ฅผ ์—ฌ๋Ÿฌ ํ”„๋กœ๊ทธ๋žจ์ด ๋‚˜๋ˆ  ์“ฐ๋Š” ๊ธฐ๋Šฅ)๋กœ 367~727ํ† ํฐ๊นŒ์ง€ ํšŒ๋ณต
  • GPU ์„œ๋ฒ„๊นŒ์ง€ ์ „๋‹ฌ๋œ ํ•œ๊ธ€(HWP 5.0) ๋ฌธ์„œ 80๊ฑด ์ค‘ 79๊ฑด ์ ์žฌ
๋งก์€ ์—…๋ฌด ยท ๋ฌธ์ œ ํ•ด๊ฒฐ ์ž์„ธํžˆ

๋งก์€ ์—…๋ฌด โ€” ๋„์ž… ๊ฒ€ํ† ๋ถ€ํ„ฐ ์ ์žฌ ์„œ๋ฒ„ยทGPU ๊ฒŒ์ดํŠธ์›จ์ดยท์ €์žฅ์†Œ ๊ตฌ์„ฑ, ์ฑ—๋ด‡ ๊ฒ€์ƒ‰ ์—ฐ๊ณ„๊นŒ์ง€ ํ˜ผ์ž ๋งก์•˜์Šต๋‹ˆ๋‹ค(HWPโ†’HWPX ๋ณ€ํ™˜๊ธฐ๋งŒ ์˜คํ”ˆ์†Œ์Šค๋ฅผ ๊ฐ€์ ธ๋‹ค ์”€).

  • ํ•œ๊ธ€ ๋ฌธ์„œ ์ฒ˜๋ฆฌ ๊ฒฝ๋กœ โ€” RAG-Anything์ด ์ง€์›ํ•˜์ง€ ์•Š๋Š” ํ•œ๊ธ€ ๋ฌธ์„œ๋Š” .hwp๋ฅผ HWPX๋กœ ๋ฐ”๊พผ ๋’ค, ๊ทธ XML์—์„œ ๋ณธ๋ฌธยทํ‘œยท์ด๋ฏธ์ง€๋ฅผ ๋ฐ”๋กœ ๊บผ๋‚ด ์ ์žฌํ•ฉ๋‹ˆ๋‹ค. OCR์„ ๊ฑฐ์น˜์ง€ ์•Š์•„ ์›๋ฌธ์ด ๊ทธ๋Œ€๋กœ ๋‚จ์Šต๋‹ˆ๋‹ค.
  • GPU ๊ฒŒ์ดํŠธ์›จ์ด โ€” ํŒŒ์‹ฑยท์ž„๋ฒ ๋”ฉยทLLM์„ GPU ์„œ๋ฒ„์˜ ์ฃผ์†Œ ํ•˜๋‚˜(๊ฒŒ์ดํŠธ์›จ์ด)๋กœ ๋ฌถ์–ด, ํŒŒ์ผ์„ ๋ณด๋‚ด ๊ฒฐ๊ณผ๋งŒ ๋ฐ›๊ฒŒ ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ž„๋Œ€ GPU ์ฃผ์†Œ๊ฐ€ ์ดํ‹€ ์ƒˆ ๋‹ค์„ฏ ๋ฒˆ ๋ฐ”๋€Œ์–ด๋„ ์„ค์ • ํ•œ ์ค„๋งŒ ๊ณ ์ณค์Šต๋‹ˆ๋‹ค.
  • ์ €์žฅ์†Œ๋ฅผ ํ•œ ๊ณณ์— โ€” ๋ฒกํ„ฐยท์ง€์‹๊ทธ๋ž˜ํ”„ ์ €์žฅ์†Œ๋ฅผ PostgreSQL ํ•˜๋‚˜(pgvector + Apache AGE)๋กœ ๋ชจ์œผ๊ณ , ์ฑ—๋ด‡ ์‚ฌ๋‚ด ๊ฒ€์ƒ‰์— pgvector โ†” LightRAG(GraphRAG) ์ „ํ™˜ ์Šค์œ„์น˜๋ฅผ ๋ถ™์˜€์Šต๋‹ˆ๋‹ค(๊ถŒํ•œ ํ•„ํ„ฐ๋ฅผ ๋ถ™์ด๊ธฐ ์ „์ด๋ผ ์ „๋ฉด ์ „ํ™˜์€ ์•„์ง).

์™œ pgvector + Apache AGE โ€” ์ด๋ฏธ bge-m3 ๋ฒกํ„ฐ๋ฅผ pgvector๋กœ ์šด์˜ํ•˜๊ณ  ์žˆ์–ด, ๊ทธ๋ž˜ํ”„๊นŒ์ง€ ๊ฐ™์€ DB์— ๋‹ด์•„ ๋ฐฑ์—…ยท์šด์˜์„ ํ•œ ๊ณณ์œผ๋กœ ๋ชจ์•˜์Šต๋‹ˆ๋‹ค(๋ฒ„๋ฆฐ ์•ˆ: ๊ทธ๋ž˜ํ”„๋งŒ NetworkX ํŒŒ์ผ โ€” ๊ทœ๋ชจ ํ•œ๊ณ„, Neo4j โ€” ์ปจํ…Œ์ด๋„ˆ ์ถ”๊ฐ€).

๋ฌธ์ œ ํ•ด๊ฒฐ โ€” GPU ํ•œ ์žฅ์„ ๋ฌธ์„œ ์ธ์‹๊ณผ LLM์ด ๋‚˜๋ˆ  ์“ฐ๋‹ค ์—”ํ‹ฐํ‹ฐ(๊ฐœ์ฒด) ์ถ”์ถœ ์š”์ฒญ์ด ํƒ€์ž„์•„์›ƒ

๋ฐฉ๋ฒ• LLM ์ƒ์„ฑ(์ดˆ๋‹น ํ† ํฐ) ๊ฒฐ๊ณผ
๊ฒฝํ•ฉ ์—†์„ ๋•Œ(๊ธฐ์ค€) 525 โ€”
๊ฐ™์€ GPU์—์„œ ์ œํ•œ ์—†์ด 3๊นŒ์ง€ ๋–จ์–ด์ง ์ถ”์ถœ ํ˜ธ์ถœ ํƒ€์ž„์•„์›ƒ
๋ฌธ์„œ ์ธ์‹(MinerU)์„ CPU๋กœ ๊ฒฝํ•ฉ ์‚ฌ๋ผ์ง 6๋ถ„ ๋„˜๊ฒŒ ๋ฌธ์„œ 1๊ฑด๋„ ๋ชป ๋๋ƒ„
GPU + CUDA MPS๋กœ ๋ฌธ์„œ ์ธ์‹์˜ GPU ์—ฐ์‚ฐ ๋ชซ์„ 30%๋กœ ์ œํ•œ 367~727 ์˜ค๋ฅ˜ 0๊ฑด

๋ฌธ์ œ ํ•ด๊ฒฐ โ€” ํŒŒ์„œ ๋ฌธ์ œ์ฒ˜๋Ÿผ ๋ณด์ธ ์ ์žฌ ์‹คํŒจ โ€” ํ˜•์‹ ๋ฌธ์ œ์ฒ˜๋Ÿผ ๋ณด์ด๋˜ ์ ์žฌ ์‹คํŒจ๋ฅผ ์›์ธ๋ณ„๋กœ ๋‹ค์‹œ ์„ธ์–ด, 99.4%๊ฐ€ ํŒŒ์„œ๊ฐ€ ์•„๋‹Œ GPU ์—ฐ๊ฒฐ ๋Š๊น€์ž„์„ ์ฐพ์•˜์Šต๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ํŒŒ์„œ๋ณด๋‹ค ์ธํ”„๋ผ ์‹คํŒจ ์ฒ˜๋ฆฌ๋ฅผ ๋จผ์ € ๊ณ ์น  ์ผ๋กœ ์ •ํ–ˆ์Šต๋‹ˆ๋‹ค.

RAG-Anything LightRAG MinerU vLLM Qwen2.5-VL-7B bge-m3 FastAPI PostgreSQL pgvector Apache AGE CUDA MPS

์˜์ƒ ๋น„์‹๋ณ„ํ™” ์†”๋ฃจ์…˜ ๋””๋น„์—”ํ… ยท 2025.09 ~ 2025.12

์˜์ƒยท์‚ฌ์ง„ ์† ์–ผ๊ตดยท๋ฒˆํ˜ธํŒ์„ AI๋กœ ์ฐพ์•„ ๊ฐ€์ƒ ์ด๋ฏธ์ง€๋กœ ๋ฐ”๊พธ๋Š” ์†”๋ฃจ์…˜(VisionON TAL)์˜ ๊ณ ๋„ํ™”์™€ ์ธํ”„๋ผ ๊ตฌ์ถ•์„ ๋งก์•˜์Šต๋‹ˆ๋‹ค.

  • ํŠธ๋ž˜ํ‚น์„ ๊ฑท์–ด ๋‚ด๊ณ  ํ”„๋ ˆ์ž„ ๋‹จ์œ„ ํƒ์ง€๋กœ ๋ฐ”๊ฟ” ์ž”์ƒ ์˜คํƒ์ง€ ํ•ด๊ฒฐ
  • ์ธํ„ฐ๋„ท์ด ๋ง‰ํžŒ ๊ณ ๊ฐ์‚ฌ ํ์‡„๋ง์— ๋„์ปค๋กœ ๊ตฌ์ถ•
๋งก์€ ์—…๋ฌด ยท ๋ฌธ์ œ ํ•ด๊ฒฐ ์ž์„ธํžˆ

๋งก์€ ์—…๋ฌด

  • ํ์‡„๋ง ์ธํ”„๋ผ โ€” ์™ธ๋ถ€ ์ธํ„ฐ๋„ท์ด ๋ง‰ํžŒ ๊ณ ๊ฐ์‚ฌ ๋‚ด๋ถ€๋ง(On-Premise)์—์„œ๋„ ์†”๋ฃจ์…˜์ด ๋Œ๋„๋ก ์•„ํ‚คํ…์ฒ˜๋ฅผ ์„ค๊ณ„ํ•˜๊ณ  ํ™˜๊ฒฝ์„ ์„ค์ •ํ–ˆ์Šต๋‹ˆ๋‹ค.
  • ๋„์ปค ์ปจํ…Œ์ด๋„ˆํ™” โ€” OSยทํ•˜๋“œ์›จ์–ด(CPU/GPU ๋“œ๋ผ์ด๋ฒ„ ๋“ฑ)์— ๋งค์ด์ง€ ์•Š๊ณ  ์–ด๋””์„œ๋‚˜ ๋ฐ”๋กœ ๋Œ๋„๋ก ์ „์ฒด ์‹œ์Šคํ…œ์„ ๋„์ปค ์ปจํ…Œ์ด๋„ˆ๋กœ ๋ฌถ์—ˆ์Šต๋‹ˆ๋‹ค.
  • GUIยทCLI ์ด์›ํ™” โ€” ์›นยท๋ฐ์Šคํฌํ†ฑ ํ™”๋ฉด์— ๋”ํ•ด, ์„œ๋ฒ„์—์„œ ๋Œ€๋Ÿ‰ ๋ฐ์ดํ„ฐ๋ฅผ ์ž๋™ ์ฒ˜๋ฆฌํ•˜๋Š” CLI ํ™˜๊ฒฝ์„ ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค.

๋ฌธ์ œ ํ•ด๊ฒฐ

  • ์ž”์ƒ ์˜คํƒ์ง€ โ€” ์ง€๋‚˜๊ฐ„ ๊ฐ์ฒด๊ฐ€ ๋‹ค์Œ ํ”„๋ ˆ์ž„์— ์ž”์ƒ์ฒ˜๋Ÿผ ๋‚จ๋Š” ์›์ธ์ด ๊ธฐ์กด ๋ฉ€ํ‹ฐ ๊ฐ์ฒด ํŠธ๋ž˜ํ‚น์˜ ํ•œ๊ณ„์ž„์„ ์ฐพ์•˜์Šต๋‹ˆ๋‹ค. ๋น„์‹๋ณ„ํ™”๋Š” ์—ฐ์† ์ถ”์ ๋ณด๋‹ค ๋งค ์ˆœ๊ฐ„์˜ ์ •ํ™•ํ•œ ๊ฐ€๋ฆผ์ด ์ค‘์š”ํ•˜๋‹ค๋Š” ์ ์— ๋งž์ถฐ, ํŠธ๋ž˜ํ‚น์„ ๊ฑท์–ด ๋‚ด๊ณ  ํ”„๋ ˆ์ž„ ๋‹จ์œ„ ํƒ์ง€๋กœ ๊ตฌ์กฐ๋ฅผ ๋ฐ”๊ฟจ์Šต๋‹ˆ๋‹ค.
  • ์ค‘๋ณต ํƒ์ง€ โ€” ๊ฐ™์€ ๊ฐ์ฒด๋ฅผ ์—ฌ๋Ÿฌ ๋ฒˆ ์žก์€ ๋ฐ•์Šค๋ฅผ, ๊ฒน์นœ ๋น„์œจ(IoU)์ด ์ž„๊ณ„๊ฐ’์„ ๋„˜์œผ๋ฉด ์ง€์šฐ๋„๋ก NMS(๊ฒน์นœ ๋ฐ•์Šค ์ •๋ฆฌ)๋ฅผ ๊ณ ์ณ ๋Œ€์ƒ ๊ฐ์ฒด๋งŒ ์žก๊ฒŒ ํ–ˆ์Šต๋‹ˆ๋‹ค.

Docker ๊ฐ์ฒด ํƒ์ง€ ํ›„์ฒ˜๋ฆฌ(IoUยทNMS) CLI

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

ํ•œ๊ตญ์–ด ๋ฌธ์„œ ํŒŒ์„œ 1์ธ ยท ์ง„ํ–‰ ์ค‘

๊ณต๋ฌธ์„œยท๋ณด๋„์ž๋ฃŒ ๊ฐ™์€ ํ•œ๊ตญ์–ด PDF๋ฅผ RAG์— ๋ฐ”๋กœ ์“ฐ๋Š” JSONยท๋งˆํฌ๋‹ค์šด์œผ๋กœ ๋ฐ”๊พธ๋Š” ํŒŒ์„œ์™€, ๊ทธ๋ฆผ ํ•ด์„ ๋ชจ๋ธ ํŠœ๋‹์ž…๋‹ˆ๋‹ค.

  • ๊ณต๊ฐœ ๋ฌธ์„œ 2๊ฑด์—์„œ ํ‘œ ๋จธ๋ฆฌํ–‰(ํ—ค๋” ํ–‰) 16/16 โ€” docling 9/16 (๊ณ ์นœ ๋’ค ์žฐ ๊ฐ’)
  • ๊ทธ๋ž˜ํ”„ ํ•ด์„ ์ •๋‹ต๋ฅ  57% โ†’ 81% (LoRA ํŠœ๋‹, ํ†ต๊ณผ ๊ธฐ์ค€ ๋ฏธ๋‹ฌ)
๋งก์€ ์ผ ยท ๊ฒฐ๊ณผ ์ž์„ธํžˆ

๋จธ๋ฆฌ๋งยท์ชฝ๋ฒˆํ˜ธยท๋กœ๊ณ  ๊ฐ™์€ ์žก์š”์†Œ๋ฅผ ๊ฑฐ๋ฅด๊ณ , ํ‘œยท์ œ๋ชฉยทํ•ญ๋ชฉ ๊ณ„์ธตยท๊ทธ๋ฆผ ์† ๊ธ€์ž๊นŒ์ง€ ๊ตฌ์กฐ๋ฅผ ์‚ด๋ฆฝ๋‹ˆ๋‹ค.

๋งก์€ ์ผ

  • ํ•™์Šต ์—†์ด ๊ทœ์น™์œผ๋กœ โ€” ๋ฌธ์„œ ์ธ์‹ ๋ชจ๋ธ์€ ๊ทธ๋Œ€๋กœ ๋‘” ์ฑ„ PDF ๊ธ€์ž์ธต(ํ…์ŠคํŠธ ๋ ˆ์ด์–ด)ยทPaddleX ๋‚ด๋ถ€๋ฅผ ๊ฐ์‹ธ๋Š” ํ›… 4๊ฐœยทํ•œ๊ตญ์–ด ๋ฌธ์„œ ๊ทœ์น™(โ–กยทโ—‹ยท- ๊ฐœ์กฐ์‹, '๋ถ™์ž„' ์ œ๋ชฉ)์„ ๋”ํ–ˆ์Šต๋‹ˆ๋‹ค.
  • ๋น„๊ต๊ตฐ ์…‹๊ณผ ๋‚˜๋ž€ํžˆ โ€” ๊ณ ์ • ์ •๋‹ต์œผ๋กœ ํ…์ŠคํŠธ ๋ ˆ์ด์–ด๋งŒ ๋ฝ‘์€ ๋ฐ”๋‹ฅ์„ ยทdoclingยท๊ฐ™์€ ๋ชจ๋ธ ๊ธฐ๋ณธ ์„ค์ •๊ณผ ๊ฐ™์€ ์ง€ํ‘œ๋กœ ์žฌ๊ณ , docling๋ณด๋‹ค ๋‚ฎ์€ ์ง€ํ‘œ๋Š” ์›์ธ์„ ๊ณ ์ณ ๋‹ค์‹œ ์Ÿ€์Šต๋‹ˆ๋‹ค.
  • ๊ทธ๋ฆผ ํ•ด์„ ํŠœ๋‹ โ€” ์ •๋‹ต์„ ์ฝ”๋“œ๊ฐ€ ๊ณ„์‚ฐํ•˜๋Š” ํ•ฉ์„ฑ ๊ทธ๋ฆผ 3,000์žฅ๊ณผ, AI ๋ผ๋ฒจ๋Ÿฌ ๋‘˜์ด ๋”ฐ๋กœ ๋งค๊ฒจ ํ•ฉ์˜ํ•œ ์‹ค์ œ ๊ทธ๋ฆผ ์ •๋‹ต 745๊ฐœ(ํ•™์Šต 605 ยท ์‹œํ—˜ 140, ์‚ฌ๋žŒ ํ™•์ธ ์ „)๋กœ ํ•™์Šตยท์‹œํ—˜ ์ž๋ฃŒ๋ฅผ ๋งŒ๋“ค์–ด, ๊ตญ๋‚ด ์‹œ๊ฐ ์–ธ์–ด ๋ชจ๋ธ(A.X-4.0-VL-Light)์„ A40 ํ•œ ์žฅ์—์„œ LoRA ํŠœ๋‹ํ–ˆ์Šต๋‹ˆ๋‹ค.
  • ์šด์˜ โ€” ํด๋ผ์šฐ๋“œ GPU(A40)์— vLLM์œผ๋กœ ๋ชจ๋ธ์„ ๋„์›Œ ํŽ˜์ด์ง€๋‹น 2~3์ดˆ์— ํŒŒ์‹ฑํ•˜๊ณ , ์ผค ๋•Œ๋งˆ๋‹ค ์ดˆ๊ธฐํ™”๋˜๋Š” ์„œ๋ฒ„์˜ ์„ค์น˜ยท์„œ๋น™ยทํ•™์Šตยทํ‰๊ฐ€๋ฅผ ์Šคํฌ๋ฆฝํŠธ๋กœ ๋ฌถ์—ˆ์Šต๋‹ˆ๋‹ค.

์™œ PaddleOCR-VL-1.6 โ€” ํ›„๋ณด ์•ฝ 30๊ฐœ๋ฅผ ํ•œ๊ตญ์–ด ์„ฑ๋Šฅ(๊ฐ€์ค‘์น˜ 35%)ยท์†๋„ ๋“ฑ ๋‹ค์„ฏ ๊ธฐ์ค€๊ณผ ๋ผ์ด์„ ์Šค๋กœ ๊ฒฌ์ค˜, ํƒˆ๋ฝ ์‚ฌ์œ ๊ฐ€ ์—†๋˜ ์œ ์ผํ•œ ํ›„๋ณด์˜€์Šต๋‹ˆ๋‹ค(๋ฌธ์„œ ์ธ์‹ ๋ฒค์น˜๋งˆํฌ MDPBench ํ•œ๊ตญ์–ด 86.3, Apache-2.0).

๊ฒฐ๊ณผ โ€” ๊ณต๊ฐœ ์ •๋ถ€ ๋ฌธ์„œ 2๊ฑด ํ•ฉ๊ณ„์ด๋ฉฐ, ์ฒ˜์Œ ์žฐ ๋’ค ์ฐพ์€ ๋ฌธ์ œ๋ฅผ ๊ณ ์ณ ๋‹ค์‹œ ์žฐ ๊ฐ’์ž…๋‹ˆ๋‹ค. ํ…์ŠคํŠธ ๋ ˆ์ด์–ด ๋ฐ”๋‹ฅ์„ ์€ ๊ตฌ์กฐ๋ฅผ ๋‚ด์ง€ ์•Š์•„(๋ชจ๋‘ 0) ํ‘œ์—์„œ ๋บ์Šต๋‹ˆ๋‹ค.

์ง€ํ‘œ ์ด ํŒŒ์„œ docling PaddleOCR-VL ๊ธฐ๋ณธ
ํ‘œ ๋จธ๋ฆฌํ–‰(ํ—ค๋” ํ–‰) ์ผ์น˜ 16/16 9/16 2/16
์ œ๋ชฉ ์ฐพ์Œ 29/30 27/30 15/30
ํ•ญ๋ชฉ ์ˆ˜์ค€ ์ผ์น˜ 41/41 34/41 0/41
์žก์š”์†Œ ์ œ๊ฑฐ(๋จธ๋ฆฌ๋งยท๋กœ๊ณ ยท์ชฝ๋ฒˆํ˜ธ) 50/50 24/50 47/50
๊ทธ๋ฆผ ์ œ๋ชฉ ์—ฐ๊ฒฐ 12/12 7/12 0/12

๊ทธ๋ฆผ ํ•ด์„ LoRA ํŠœ๋‹์œผ๋กœ ์‹ค์ œ ๋ฌธ์„œ ๊ทธ๋ž˜ํ”„ ํ•ด์„ ์ •๋‹ต๋ฅ ์ด 57%์—์„œ 81%๋กœ ์˜ฌ๋ž์ง€๋งŒ(๋ฌผ์Œ 167๊ฐœ), ์ง€๋„ ๋ฐฉ์œ„๋Š” 19% ๊ทธ๋Œ€๋กœ์˜€์Šต๋‹ˆ๋‹ค. ํŒ์ •์šฉ ๊ฐœ๋ฐœ ๋ฌผ์Œ 25๊ฐœ์—์„œ๋Š” ์–ด๋–ค ํ™•์‹  ๋ฌธํ„ฑ์„ ์žก์•„๋„ ๋‹ตํ•œ ๊ฒƒ์˜ ์ •๋‹ต๋ฅ ์ด ๋ฏธ๋ฆฌ ์ •ํ•œ ๊ธฐ์ค€(90%)์— ๋‹ฟ์ง€ ์•Š์•„(๊ทธ๋ž˜ํ”„๋งŒ ๋ด๋„ ์ตœ๊ณ  67%) ํ†ต๊ณผํ•˜์ง€ ๋ชปํ–ˆ๊ณ , ๊ฒฐ๊ณผ๋ฅผ ๋ณธ ๋’ค์—๋„ ๊ธฐ์ค€์„ ๋ฐ”๊พธ์ง€ ์•Š๊ณ  ๊ทธ๋Œ€๋กœ ๊ธฐ๋กํ–ˆ์Šต๋‹ˆ๋‹ค.

Python PaddleOCR-VL-1.6 vLLM pypdfium2 transformers peft(LoRA) NVIDIA A40

์š”๊นƒ๊ฑฐ๋ฆฌ ๊ณต๋ชจ์ „ ํŒ€ ยท ๋ฐฑ์—”๋“œ ยท 2026.06 ~ 2026.09

๊ด€๊ด‘์ง€๋ฅผ ๊ณจ๋ผ ์ฃผ๊ณ  ๋ฐฉ๋ฌธ ๊ธฐ๋กยท์—ฌํ–‰ ์˜์ƒ์œผ๋กœ ๋‚จ๊ฒจ ์ฃผ๋Š” ์›น ์„œ๋น„์Šค์ž…๋‹ˆ๋‹ค. ๊ทธ์ค‘ ์—ฌํ–‰ ์˜์ƒ ์ œ์ž‘ยท๋ฐฉ๋ฌธ ๊ธฐ๋กยท์‚ฌ์ง„/์˜์ƒ ์ €์žฅ ๋ฐฑ์—”๋“œ๋ฅผ ๋งก์•˜์Šต๋‹ˆ๋‹ค.

  • ์šด์˜ VM ์ธ์ฝ”๋”ฉ ์‹œ๊ฐ„์„ ๋จผ์ € ์žฌ์–ด(์ถœ๋ ฅ 1์ดˆ๋‹น ์•ฝ 0.6~1์ดˆ) ์˜์ƒ ํ•ฉ์„ฑ์„ ๋น„๋™๊ธฐ ๊ตฌ์กฐ๋กœ ์„ค๊ณ„
  • ์—ฌํ–‰ ์˜์ƒ ๋‹จ์œ„ ํ…Œ์ŠคํŠธ 47๊ฑด
๋งก์€ ์ผ ยท ๋ฌธ์ œ ํ•ด๊ฒฐ ์ž์„ธํžˆ

2026 ๊ด€๊ด‘๋ฐ์ดํ„ฐ ํ™œ์šฉ ๊ณต๋ชจ์ „ ์›นยท์•ฑ ๊ฐœ๋ฐœ ๋ถ€๋ฌธ ์ถœํ’ˆ์ž‘์ž…๋‹ˆ๋‹ค. ๊ฐœ๋ฐœ 4๋ช…(๋ฐฑ์—”๋“œ 3 ยท ํ”„๋ก ํŠธ์—”๋“œ 1)๊ณผ ๋””์ž์ธ ๋‹ด๋‹น์ด ํ•จ๊ป˜ํ–ˆ๊ณ , ์ถ”์ฒœยท๋„์ฐฉ ์ธ์ฆยท์Šคํ† ๋ฆฌยทํ€ด์ฆˆยท์•Œ๋ฆผยท๋กœ๊ทธ์ธ, ๋ฐฉ๋ฌธ ๊ธฐ๋ก ์ž๋™ ์ƒ์„ฑยท์ง€์—ญ๋ณ„ ๋ชฉ๋ก, ํ™”๋ฉด์€ ํŒ€์› ๋ชซ์ž…๋‹ˆ๋‹ค.

๋งก์€ ์ผ

  • ์—ฌํ–‰ ์˜์ƒ ์ œ์ž‘ โ€” ๋ฐฉ๋ฌธํ•œ ์ง€์—ญ์˜ ์‚ฌ์ง„ยท์˜์ƒ(1~20๊ฐœ)์„ ๊ณ ๋ฅด๋ฉด ์ง€์—ญ๋ช…์ด ๋“ค์–ด๊ฐ„ ์„ธ๋กœ ์˜์ƒ(1080ร—1920, ์ตœ๋Œ€ 90์ดˆ)์„ FFmpeg๋กœ ํ•ฉ์„ฑํ•ด ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.
  • ์‚ฌ์ง„ยท์˜์ƒ ์ผ๊ด„ ์—…๋กœ๋“œ โ€” ํŒŒ์ผ๋งˆ๋‹ค ๋”ฐ๋กœ ๊ฒ€์ฆยท์ €์žฅํ•ด ํ•˜๋‚˜๊ฐ€ ์ž˜๋ชป๋ผ๋„ ๋‚˜๋จธ์ง€๋Š” ์ €์žฅ๋˜๊ณ , MIMEยทํ™•์žฅ์ž ๊ต์ฐจ ๊ฒ€์ฆ๊ณผ ์ €์žฅ ๊ฒฝ๋กœ ์ดํƒˆ ์ฐจ๋‹จ์„ ๋‘์—ˆ์Šต๋‹ˆ๋‹ค.
  • ์ €์žฅ์†Œ ์ „ํ™˜ โ€” ์„ค์ •๊ฐ’ ํ•˜๋‚˜๋กœ ๋กœ์ปฌ โ†” Cloud Storage๋ฅผ ๋ฐ”๊พธ๊ฒŒ ํ•ด, ๋ฐฉ๋ฌธ ๊ธฐ๋ก ์ฝ”๋“œ๋ฅผ ํ•œ ์ค„๋„ ๋ฐ”๊พธ์ง€ ์•Š๊ณ  ์˜ฎ๊ฒผ์Šต๋‹ˆ๋‹ค.

์™œ FFmpeg ์ง์ ‘ ํ˜ธ์ถœ โ€” ๋ž˜ํผ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” JDK 21 ์ง€์›์ด ๋ถˆํ™•์‹คํ•ด, ์…ธ ์—†์ด ProcessBuilder๋กœ ์ง์ ‘ ๋ถ€๋ฅด๊ณ  ๋ช…๋ น์€ ์ˆœ์ˆ˜ Java๋กœ ์กฐ๋ฆฝํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ํ•„ํ„ฐ ๊ทธ๋ž˜ํ”„๋ฅผ ๋‹จ์œ„ ํ…Œ์ŠคํŠธ๋กœ ๊ฒ€์ฆํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ฌธ์ œ ํ•ด๊ฒฐ โ€” VM ํ•œ ๋Œ€์—์„œ ์ˆ˜์‹ญ ์ดˆ์งœ๋ฆฌ ์˜์ƒ ํ•ฉ์„ฑ์„ API์™€ ํ•จ๊ป˜ ๋Œ๋ ค์•ผ ํ•จ

  • ๋งŒ๋“ค๊ธฐ ์ „์— ์šด์˜ VM(4 vCPU)์—์„œ ์ธ์ฝ”๋”ฉ ์‹œ๊ฐ„์„ ์ง์ ‘ ์žฌ์–ด(์ถœ๋ ฅ 1์ดˆ๋‹น ์•ฝ 0.6~1์ดˆ), ์š”์ฒญ์€ ๊ฒ€์ฆ๊นŒ์ง€๋งŒ ํ•˜๊ณ  202(์ ‘์ˆ˜)๋กœ ๋ฐ”๋กœ ๋Œ๋ ค์ฃผ๋Š” ๋น„๋™๊ธฐ ๊ตฌ์กฐ๋กœ ์„ค๊ณ„ํ–ˆ์Šต๋‹ˆ๋‹ค.
  • ํ•ฉ์„ฑ์€ ์ „์šฉ ์›Œ์ปค 1๊ฐœ(๋Œ€๊ธฐ์—ด 20, ๋„˜์น˜๋ฉด 429)๊ฐ€ ์ธ์ฝ”๋” ์Šค๋ ˆ๋“œ 3๊ฐœ๋กœ ์ฒ˜๋ฆฌํ•ด ์ฝ”์–ด ํ•˜๋‚˜๋Š” API ๋ชซ์œผ๋กœ ๋‚จ๊ธฐ๋„๋ก ํ–ˆ๊ณ , ์šด์˜ VM์—์„œ ์‚ฌ์ง„ 20์žฅ โ†’ 63์ดˆ ์˜์ƒ์„ 60์ดˆ์— ์ธ์ฝ”๋”ฉํ–ˆ์Šต๋‹ˆ๋‹ค(๋‹น์‹œ ์—ฐ์ถœ: ์‚ฌ์ง„ 3์ดˆ + ์—”๋”ฉ ์นด๋“œ 3์ดˆ).

๋ฌธ์ œ ํ•ด๊ฒฐ โ€” ์ธ์ฝ”๋”ฉ ์ค‘ ํšŒ์›์ด ํƒˆํ‡ดํ•˜๋ฉด ์˜์ƒ์ด ๋‚จ์„ ์ˆ˜ ์žˆ์Œ โ€” ์—…๋กœ๋“œ ์ง์ „์— ์ž‘์—… ๊ธฐ๋ก์„ ๋‹ค์‹œ ํ™•์ธํ•ด ๋ฉˆ์ถ”๊ณ , ์—…๋กœ๋“œ ๋’ค ์ €์žฅ์ด ์‹คํŒจํ•˜๋ฉด ์˜ฌ๋ฆฐ ์˜์ƒ์„ ๋˜๋Œ๋ ค ์ง€์šฐ๋„๋ก(๋ณด์ƒ ์‚ญ์ œ) ์›Œ์ปค ํ…Œ์ŠคํŠธ๋กœ ๊ณ ์ •ํ–ˆ์Šต๋‹ˆ๋‹ค.

Java 21 Spring Boot 4 JPA MySQL 8 Google Cloud Storage FFmpeg JUnit 6 Mockito GCP

์›Œ๋ผ๋ฒจ ๋ฉ”์ดํŠธ AI ์บ ํ”„ ยท ํŒ€ 5๋ช… ยท 2025.04 ~ 2025.06

ํšŒ์˜๋กยท๋ฌธ์„œ ์งˆ์˜ยท๋ฏผ์› ๋‹ต๋ณ€ยท์ƒ๋‹ด ๋…น์ทจ ๋ถ„์„์„ LLM์œผ๋กœ ๋•๋Š” ์›น ์„œ๋น„์Šค์ž…๋‹ˆ๋‹ค. ์ƒ๋‹ด ๋…น์ทจ ๋ถ„์„(CallMate)์˜ ํ™”๋ฉดยทLLM ํ”ผ๋“œ๋ฐฑยท์ €์žฅ API, DB API ์„œ๋ฒ„, ๋ฐฐํฌ๋ฅผ ๋งก์•˜์Šต๋‹ˆ๋‹ค.

  • ์„œ๋ฒ„ 3๊ฐœ๋ฅผ nginx ํ•œ ์ฃผ์†Œ๋กœ ๋ฌถ์–ด AWS EC2ยทRunPod์— ๋ฐฐํฌ
  • DB API ์—”๋“œํฌ์ธํŠธ 17๊ฐœ ์ค‘ 10๊ฐœ ์ง์ ‘ ๊ตฌํ˜„
๋งก์€ ์ผ ยท ๋ฌธ์ œ ํ•ด๊ฒฐ ์ž์„ธํžˆ
WLB MATE ๋กœ๊ณ 

SK๋„คํŠธ์›์Šค Family AI ์บ ํ”„ 9๊ธฐ ์ตœ์ข… ํ”„๋กœ์ ํŠธ์ž…๋‹ˆ๋‹ค. ์Œ์„ฑ ์ธ์‹ยทQ&A ์ถ”์ถœยท๊ทผ๊ฑฐ ๊ฒ€์ƒ‰, ํšŒ์˜๋ก ์š”์•ฝยท๋ฌธ์„œ ์งˆ์˜ยท๋ฏผ์› ์ž๋™ ๋‹ต๋ณ€์€ ํŒ€์› ๋ชซ์ž…๋‹ˆ๋‹ค.

๋งก์€ ์ผ

  • CallMate ํ”ผ๋“œ๋ฐฑยท์ €์žฅ โ€” LangChain์œผ๋กœ Qwen2.5๋ฅผ ๋ถˆ๋Ÿฌ ๋‹ต๋ณ€๋งˆ๋‹ค ํ”ผ๋“œ๋ฐฑ์„ ๋งŒ๋“ค๊ณ , ํ†ตํ™” 1๊ฑด๊ณผ Q&A ์—ฌ๋Ÿฌ ๊ฑด์„ ํ•œ ํŠธ๋žœ์žญ์…˜์œผ๋กœ ์ €์žฅํ–ˆ์Šต๋‹ˆ๋‹ค.
  • DB API ์„œ๋ฒ„ โ€” FastAPI๋กœ controllersยทservicesยทmodels 3์ธต ๊ตฌ์กฐ๋ฅผ ์ฒ˜์Œ ๋งŒ๋“ค๊ณ , ์„ธ์…˜ ๋กœ๊ทธ์ธ์„ ํฌํ•จํ•œ ์—”๋“œํฌ์ธํŠธ 17๊ฐœ ์ค‘ 10๊ฐœ๋ฅผ ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค.
  • ๋ฐฐํฌ โ€” Dockerfile 4๊ฐœ์™€ ์„ค์น˜ ์Šคํฌ๋ฆฝํŠธ๋กœ ํ”„๋ก ํŠธยทDB API๋Š” AWS EC2์—, GPU๊ฐ€ ํ•„์š”ํ•œ ๋ชจ๋ธ ์„œ๋ฒ„๋Š” RunPod์— ์˜ฌ๋ ธ์Šต๋‹ˆ๋‹ค.
  • ๊ทธ ๋ฐ–์— โ€” ๋ชจ๋ธ ์„œ๋ฒ„์˜ ์ฒซ ๊ตฌ์กฐ์™€ Ollama ์„œ๋น™, LangGraph ๋Œ€ํ™” ๊ธฐ์–ต ์‹œ์ œํ’ˆ์„ ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค.

๋ฌธ์ œ ํ•ด๊ฒฐ

  • LLM ํ”ผ๋“œ๋ฐฑ์ด Q&A์™€ ์–ด๊ธ‹๋‚จ โ€” ์ถœ๋ ฅ ํ˜•์‹์ด ๋งค๋ฒˆ ๋‹ฌ๋ผ ๊ฐœ์ˆ˜ยท์ˆœ์„œ๊ฐ€ ๋งž์ง€ ์•Š๋˜ ๊ฒƒ์„, ํ•œ ๋ฒˆ ํ˜ธ์ถœ + ์ถœ๋ ฅ ์˜ˆ์‹œ๋กœ ํ˜•์‹ ๊ณ ์ • + ํ›„์ฒ˜๋ฆฌ๋กœ ํ’€์–ด Q&A ์ˆœ์„œ๋Œ€๋กœ ๋ถ™์˜€์Šต๋‹ˆ๋‹ค(Q&A ์ˆ˜๋งŒํผ ํ•˜๋˜ LLM ํ˜ธ์ถœ์„ 1ํšŒ๋กœ ์ค„์ž„).
  • ๋ฐฐํฌ ๋’ค CORS ์˜ค๋ฅ˜ โ€” nginx๊ฐ€ ๊ฒฝ๋กœ(/api, /model)๋ณ„๋กœ ๊ฐ ์„œ๋ฒ„์— ๋„˜๊ธฐ๊ฒŒ ํ•˜๊ณ , ์ œ๊ฐ€ ๋งก์€ ํ™”๋ฉด์˜ ํ˜ธ์ถœ์„ ์ƒ๋Œ€๊ฒฝ๋กœ๋กœ ๋ฐ”๊ฟจ์Šต๋‹ˆ๋‹ค(๋‹ค๋ฅธ ํ™”๋ฉด์€ ํŒ€์›๋“ค์ด ๊ฐ™์€ ๋ฐฉ์‹์œผ๋กœ).

Python FastAPI React MySQL Ollama(Qwen2.5) LangChain Docker nginx AWS EC2 RunPod

RAG ๊ตฌ์ถ•๊ณผ ๊ฒ€์ฆ (LightRAG) 1์ธ ยท ํ•œ๊ตญ์–ด ๋ฌธ์„œ ํŒŒ์„œ ํ›„์† ยท ์ง„ํ–‰ ์ค‘

์ง์ ‘ ๋งŒ๋“  ํŒŒ์„œ์˜ ์ถœ๋ ฅ์œผ๋กœ LightRAG๋ฅผ ์„ธ์šฐ๊ณ , LightRAG ยท Naive RAG ยท RAG ์—†์Œ ์„ธ ๊ฐ€์ง€ ๋‹ต์„ ์ •๋‹ต๊ณผ ๋Œ€์กฐํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

  • ๋‹ต์ด ์žˆ๋Š” ์งˆ๋ฌธ 42๊ฐœ ์ค‘ ๋งžํžˆ๊ฑฐ๋‚˜ ์ผ๋ถ€ ๋งžํžŒ ๋‹ต: RAG ์—†์Œ 3 โ†’ Naive RAG 33 ยท LightRAG 32 (๋‘ ๋ฐฉ์‹ ์ฐจ์ด ์—†์Œ)

๐Ÿ›  Tech Stack

๋ถ„์•ผ ๊ธฐ์ˆ 
LLMย ยทย Agent LangGraph LangChain vLLM Ollama OpenAI API Anthropic API MCP
Documentย AIย ยทย ML PaddleOCR-VL Hugging Face PyTorch NVIDIA CUDA
RAGย ยทย DB PostgreSQL ยท pgvector Apache AGE LightRAG ยท RAG-Anything MySQL
Backend Python FastAPI Java Spring Boot JPA JUnit
Frontend React JavaScript
Infraย ยทย DevOps Docker NGINX GitHub Actions AWS EC2 Google Cloud Linux Git

๐Ÿ“ซ Contact

์ฑ„์šฉยทํ˜‘์—… ๋ฌธ์˜๋Š” ๋ฉ”์ผ๋กœ ์—ฐ๋ฝ ์ฃผ์„ธ์š” โ€” leejh100984@gmail.com

Pinned Loading

  1. WLB_MATE WLB_MATE Public

    Forked from SKNETWORKS-FAMILY-AICAMP/SKN09-FINAL-1Team

    Jupyter Notebook

0