Skip to content

medi4me/backend_medi

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

295 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

mediforme - Backend

๐Ÿฅ• ์˜์•ฝํ’ˆ ์ •๋ณด ์ฑ—๋ด‡ยท๊ฒ€์ƒ‰ ์„œ๋น„์Šค์˜ Spring Boot ์„œ๋ฒ„์ž…๋‹ˆ๋‹ค.

์‚ฌ์šฉ์ž๊ฐ€ ์•ฝ์„ ๊ฒ€์ƒ‰ยท์ดฌ์˜ํ•ด ์ •๋ณด๋ฅผ ํ™•์ธํ•˜๊ณ , ์ฑ—๋ด‡์œผ๋กœ ๋ณต์•ฝ ๊ด€๋ จ ์งˆ์˜์‘๋‹ต, ๋ณต์•ฝ ๋งž์ถค ๊ด€๋ฆฌ ์„œ๋น„์Šค ๋ฉ”๋””ํฌ๋ฏธ์˜ ๋ฐฑ์—”๋“œ์ž…๋‹ˆ๋‹ค. ์‹์•ฝ์ฒ˜ยทopenFDA ๋“ฑ ๊ณต๊ณต ๋ผ๋ฒจ ๋ฐ์ดํ„ฐ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•˜๋ฉฐ, ์ฑ—๋ด‡์€ OpenAI ์œ„์— RAG๋ฅผ ์–น์–ด ํ™˜์ž ์•ˆ์ „ ๊ด€์ ์˜ ๋‹ต๋ณ€ ํ’ˆ์งˆ์„ ๋†’์˜€์Šต๋‹ˆ๋‹ค.

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

  • ์‚ฌ์šฉ์ž ์ธ์ฆ โ€” JWT ๋ฐœ๊ธ‰ยท์žฌ๋ฐœ๊ธ‰(Redis ํ† ํฐ ์ €์žฅ), SMS ๋ณธ์ธ ์ธ์ฆ(CoolSMS)
  • ์˜์•ฝํ’ˆ ๊ฒ€์ƒ‰ โ€” ์‹์•ฝ์ฒ˜(e์•ฝ์€์š”)ยทopenFDAยทRxNorm ๋‹ค์ค‘ ์†Œ์Šค ํ†ตํ•ฉ ๊ฒ€์ƒ‰
  • ์˜์•ฝํ’ˆ ์นด๋ฉ”๋ผ ์ธ์‹ โ€” Google Cloud Vision OCR ๋กœ ์•ฝ ์ด๋ฏธ์ง€์—์„œ ์ •๋ณด ์ถ”์ถœ
  • ์•ฝ๋ฌผ ์ƒํ˜ธ์ž‘์šฉ ์•ˆ๋‚ด โ€” ํ•จ๊ป˜ ๋ณต์šฉ ์‹œ ์ฃผ์˜ ์ •๋ณด ์ œ๊ณต
  • ์ฑ—๋ด‡ Q&A โ€” OpenAI ๊ธฐ๋ฐ˜ ์งˆ์˜์‘๋‹ต์— RAG ๋ผ๋ฒจ ์ปจํ…์ŠคํŠธ๋ฅผ ์ฃผ์ž…(๊ฒ€์ƒ‰ ์‹คํŒจ ์‹œ ์•ฝ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ ์•ต์ปค๋ง์œผ๋กœ ํด๋ฐฑ)
  • ์šด์˜ ๊ด€์ธก โ€” Actuator + Micrometer(Prometheus) ํ—ฌ์Šคยท๋ฉ”ํŠธ๋ฆญ

๊ธฐ์ˆ  ์Šคํƒ

  • ์–ธ์–ดยทํ”„๋ ˆ์ž„์›Œํฌ โ€” Java 17, Spring Boot 3.3.2 (Web, Security, Data JPA, Validation)
  • ๋ฐ์ดํ„ฐ โ€” MySQL 8 (JPA/Hibernate), Redis
  • ๋นŒ๋“œ โ€” Gradle ๋ฉ€ํ‹ฐ๋ชจ๋“ˆ
  • ๋ฌธ์„œ โ€” OpenAPI(Swagger) ์–ด๋…ธํ…Œ์ด์…˜ ๊ธฐ๋ฐ˜ API ๋ฌธ์„œ
  • ์™ธ๋ถ€ ์—ฐ๋™ โ€” OpenAI, Google Cloud Vision, ์‹์•ฝ์ฒ˜ e์•ฝ์€์š”, openFDA, RxNorm, CoolSMS, RAG ๊ฒ€์ƒ‰ ์„œ๋น„์Šค(mediforme-chatbot-rag)

๋ชจ๋“ˆ ๊ตฌ์กฐ

๋ชจ๋“ˆ ์„ค๋ช…
app ๋ถ€ํŠธ ์—”ํŠธ๋ฆฌ(MediformeApplication), ์„ค์ •ยทํ”„๋กœํŒŒ์ผ ๋ณ‘ํ•ฉ
api ์›น ์ปจํŠธ๋กค๋Ÿฌ + ๋„๋ฉ”์ธ ๋กœ์ง
common ๊ณตํ†ต ์‘๋‹ตยท์˜ˆ์™ธ ๋“ฑ
lib:redis Redis ์„ค์ • ๋ชจ๋“ˆ

api ๋„๋ฉ”์ธ ํŒจํ‚ค์ง€: user(์ธ์ฆ) ยท medicine(๊ฒ€์ƒ‰ยทOCRยท์ƒํ˜ธ์ž‘์šฉ) ยท search ยท chatbot(RAG) ยท admin ยท status ยท check ยท global(๋ณด์•ˆยท๊ณตํ†ต ์„ค์ •)

๋””๋ ‰ํ„ฐ๋ฆฌ

๊ฒฝ๋กœ ์„ค๋ช…
database/ ์Šคํ‚ค๋งˆยท์‹œ๋“œ SQL
http/ IntelliJ HTTP Client ์š”์ฒญ ํŒŒ์ผ(์ˆ˜๋™ API ํ…Œ์ŠคํŠธ)
eval/chatbot-rag/ ์ฑ—๋ด‡ RAG ํ‰๊ฐ€ ํ•˜๋„ค์Šค(Python) โ€” Version A/B/C ๋น„๊ต ์ธก์ •

์‹คํ–‰

์‚ฌ์ „ ์ค€๋น„: MySQL 8, Redis, ์•„๋ž˜ ํ™˜๊ฒฝ๋ณ€์ˆ˜

./gradlew :app:bootRun

๊ธฐ๋ณธ ํ™œ์„ฑ ํ”„๋กœํŒŒ์ผ์€ local, redis ์ž…๋‹ˆ๋‹ค(local / dev / prod ์ค‘ ์„ ํƒ). ํ…Œ์ŠคํŠธ๋Š” ./gradlew test.

ํ™˜๊ฒฝ๋ณ€์ˆ˜

๋ณ€์ˆ˜ ์šฉ๋„
DB_LOCAL_URL / DB_LOCAL_USERNAME / DB_LOCAL_PASSWORD MySQL ์ ‘์† (devยทprod ๋Š” DB_DEV_* / DB_PROD_*)
REDIS_HOST / REDIS_PORT Redis ์ ‘์†
JWT_SECRET_KEY / JWT_ACCESS_EXPIRATION / JWT_REFRESH_EXPIRATION JWT ์„œ๋ช…ยท๋งŒ๋ฃŒ
MFDS_API_KEY ์‹์•ฝ์ฒ˜ e์•ฝ์€์š” API ํ‚ค
GOOGLE_APPLICATION_CREDENTIALS Google Vision ์„œ๋น„์Šค ๊ณ„์ • ํ‚ค ๊ฒฝ๋กœ
COOLSMS_API_KEY / COOLSMS_API_SECRET / COOLSMS_API_SENDER SMS ์ธ์ฆ
RAG_SERVICE_URL RAG ๊ฒ€์ƒ‰ ์„œ๋น„์Šค ์ฃผ์†Œ (๊ธฐ๋ณธ http://localhost:8000)

์ฑ—๋ด‡ RAG

์ฑ—๋ด‡์€ ์‚ฌ์šฉ์ž ์งˆ๋ฌธ๊ณผ ์•ฝ ์‹๋ณ„์ž๋ฅผ RAG ๊ฒ€์ƒ‰ ์„œ๋น„์Šค(mediforme-chatbot-rag, FastAPI + BGE-M3 + FAISS)์˜ /retrieve ๋กœ ๋ณด๋‚ด, ์‹ค์ œ ์˜์•ฝํ’ˆ ๋ผ๋ฒจ ์ฒญํฌ๋ฅผ ์ปจํ…์ŠคํŠธ๋กœ ๋ฐ›์•„ ๋‹ต๋ณ€์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. ๊ฒ€์ƒ‰์ด ๋น„๊ฑฐ๋‚˜ ์„œ๋น„์Šค ์žฅ์•  ์‹œ์—๋Š” ์•ฝ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ ์•ต์ปค๋ง์œผ๋กœ ํด๋ฐฑํ•˜๋ฏ€๋กœ ๊ธฐ์กด ๋™์ž‘ ์ดํ•˜๋กœ ๋–จ์–ด์ง€์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๋„์ž… ๊ทผ๊ฑฐ๋Š” ๋™์ผ ๊ณจ๋“ ์…‹ยทjudge ๋กœ ์ธก์ •ํ•œ A/B/C ๋น„๊ต์— ์žˆ์Šต๋‹ˆ๋‹ค โ€” hallucination 65.9%(A ๋ฒ ์ด์Šค๋ผ์ธ) โ†’ 59.8%(B ์•ต์ปค๋ง) โ†’ 52.4%(C RAG), ํŠนํžˆ ์–ด๋ ค์šด ์งˆ๋ฌธ์—์„œ ์ •ํ™•๋„๊ฐ€ ํฌ๊ฒŒ ๊ฐœ์„ ๋ฉ๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ eval/chatbot-rag/reports/2026-05-21-A-vs-B-vs-C.md ๋ฅผ ์ฐธ๊ณ ํ•˜์„ธ์š”.

About

๐Ÿฅ• mediforme Spring boot Server ๐Ÿฅ•

Resources

Stars

Watchers

Forks

Packages

 
 
 

Contributors