Skip to content

Latest commit

ย 

History

History
137 lines (91 loc) ยท 8.71 KB

File metadata and controls

137 lines (91 loc) ยท 8.71 KB

๐Ÿ‘“ E.D.I.T.H.

Thumbnail

๐Ÿ—“๏ธ ํ”„๋กœ์ ํŠธ ๊ฐœ์š”

์ง„ํ–‰ ๊ธฐ๊ฐ„

  • 2024.10.14 ~ 2024.11.19 (6์ฃผ)

ํŒ€ ๊ตฌ์„ฑ

์ด์ƒ๋ฏผ ์ด์ค‘ํ˜„ ๊น€๋ฏผ์ฃผ ์œ ์žฌ๊ด‘ ์‹ ๋ฏผ๊ฒฝ ์ฃผํ˜„๋ฏผ
Leader, BE BE Infra, BE BE FE AI

๐Ÿ“ข ์„œ๋น„์Šค ์†Œ๊ฐœ

"E.D.I.T.H" ๋Š” ๊ฐœ๋ฐœ์ž๋“ค์ด GitLab์„ ํ™œ์šฉํ•œ ํ˜‘์—… ๊ณผ์ •์—์„œ ๋ฐœ์ƒํ•˜๋Š” ์ฝ”๋“œ๋ฆฌ๋ทฐ์˜ ๋ถ€๋‹ด์„ ์ค„์ด๊ณ , ๊ฐ ๊ธฐ์—ฌ์ž๊ฐ€ ๋ฌด์—‡์„ ์–ด๋–ป๊ฒŒ ๊ธฐ์—ฌํ–ˆ๋Š”์ง€๋ฅผ ๋ช…ํ™•ํ•˜๊ฒŒ ์ •๋ฆฌํ•ด์ฃผ๋Š” ํฌํŠธํด๋ฆฌ์˜ค๋ฅผ ์ž๋™์œผ๋กœ ์ƒ์„ฑํ•˜๋Š” ๊ฒƒ์„ ๋ชฉํ‘œ๋กœ ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ ์›น์บ ์„ ํ™œ์šฉํ•œ ์–ผ๊ตด์ธ์‹ ๊ธฐ๋Šฅ์„ ํ†ตํ•ด ํŒ€ ๋‚ด ์ž‘์—…์ž๋“ค์ด ๋น„๋ฐ€๋ฒˆํ˜ธ ์—†์ด ์•ˆ์ „ํ•˜๊ฒŒ ๋กœ๊ทธ์ธํ•˜๊ณ  ํ”„๋กœ์ ํŠธ์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค.

๐Ÿฅณ ์„œ๋น„์Šค ์„ค๊ณ„

๊ธฐ์ˆ  ์Šคํƒ

Front Back AI
Language JavaScript(ES6+), TypeScript Java17 python
IDE Visual Studio Code IntelliJ Pycharm
Framework React, Vite Spring Boot Pytorch, Tensorflow fastAPI, flask
Library zustand, gitgraph, tailwind transformers, langchain, treesitter, openai
DB Infra Monitoring Tools
MySQL, Redis, Qdrant, ChromaDB EKS, ECR, Jenkins, ArgoCD, Nginx, Docker, Mattermost Grafana, Grafana-Loki, promtail GitLab, Jira, Notion, MatterMost

ERD

ERD

Wireframe

๐Ÿ“Ž Figma Link

ํ™”๋ฉด์„ค๊ณ„

Architecture

์•„ํ‚คํ…์ณ ๊ตฌ์„ฑ๋„

Docs

๐Ÿ“Ž API
๐Ÿ“Ž ๊ธฐ๋Šฅ ์ •์˜์„œ

๐Ÿค— ๊ธฐ๋Šฅ ์†Œ๊ฐœ

1. ๋ฉ”์ธ ํ™”๋ฉด

  • ํšŒ์›๊ฐ€์ž…, ๋กœ๊ทธ์ธ ์ œ๊ณต
    • ์ด๋ฉ”์ผ ๋กœ๊ทธ์ธ, ์–ผ๊ตด์ธ์‹ ๋กœ๊ทธ์ธ ์„ ํƒ

main.png

2. ํšŒ์› ๊ฐ€์ž…

  • ์ด๋ฉ”์ผ, ๋น„๋ฐ€๋ฒˆํ˜ธ, Git Personal Access Token ์ž…๋ ฅ

signup.png signup.png

4. ์‚ฌ์šฉ์ž ํ™”๋ฉด ์ž…์žฅ

  • ์‚ฌ์šฉ์ž์˜ ํ”„๋กœ์ ํŠธ, ์‚ฌ์šฉ์ž ๋‹น์ผ ์ปค๋ฐ‹ ์ˆ˜, ์‚ฌ์šฉ์ž ๋‹น์ผ MR ์š”์ฒญ ์ˆ˜ ์ œ๊ณต

signup_success.png

5. ํ”„๋กœ์ ํŠธ ๋“ฑ๋ก

  • GitLab repository์˜ project ID, ํ”„๋กœ์ ํŠธ ์ด๋ฆ„, ์ฝ”๋“œ๋ฆฌ๋ทฐ ๋Œ€์ƒ branch, ์„ค๋ช…์„ ์ž…๋ ฅํ•˜์—ฌ ์ง„ํ–‰์ค‘์ธ ํ”„๋กœ์ ํŠธ๋ฅผ ๋“ฑ๋ก

project_register.png project_register_success.png

  • ๋“ฑ๋ก์— ์„ฑ๊ณตํ•  ๊ฒฝ์šฐ ํ•ด๋‹น gitlab repository์— webhook ์ž๋™ ์ƒ์„ฑ

webhook.png

6. ์ฝ”๋“œ๋ฆฌ๋ทฐ

  • ํ”„๋กœ์ ํŠธ๋ฅผ ์ง„ํ–‰ํ•˜๋ฉฐ MR ๋“ฑ๋ก์„ ํ–ˆ์„ ๋•Œ, ์ผ์ • ์‹œ๊ฐ„ ํ›„ AI ์ฝ”๋“œ๋ฆฌ๋ทฐ ๋“ฑ๋ก

mr.png code_review.png

7. ํ”„๋กœ์ ํŠธ ๋Œ€์‹œ๋ณด๋“œ ํ™•์ธ

  • ํ”„๋กœ์ ํŠธ์— ๋Œ€ํ•œ ์ „์ฒด์ ์ธ ์ •๋ณด ์ œ๊ณต

project_info.png

8. ๊ฐœ์ธ ํฌํŠธํด๋ฆฌ์˜ค ์ƒ์„ฑ

  • ๋‚˜์˜ ํฌํŠธํด๋ฆฌ์˜ค ์ƒ์„ฑ ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅผ ๊ฒฝ์šฐ ๋‹ค์Œ๊ณผ ๊ฐ™์€ AI ๊ธฐ๋ฐ˜์˜ ๊ฐœ์ธ ๋งž์ถคํ˜• ํฌํŠธํด๋ฆฌ์˜ค ์ œ๊ณต

portfolio.png

๐Ÿšฉํ•ต์‹ฌ ๊ธฐ๋Šฅ

1. RAG๋ฅผ ํ™œ์šฉํ•œ LLM ๊ธฐ๋ฐ˜ ์ž๋™ ์ฝ”๋“œ๋ฆฌ๋ทฐ

  • ๊ธฐ๋Šฅ ์„ค๋ช…:
    • GitLab ์ปค๋ฐ‹ ๊ฐ์ง€: GitLab API๋ฅผ ํ†ตํ•ด ์ƒˆ ์ปค๋ฐ‹์ด (์›น ํ›…์œผ๋กœ ๊ฐ์ง€)๋ฐœ์ƒํ•  ๋•Œ๋งˆ๋‹ค LLM์ด ํ•ด๋‹น ์ปค๋ฐ‹์˜ ์ฝ”๋“œ๋ฅผ ์ž๋™์œผ๋กœ ๋ถ„์„ํ•ฉ๋‹ˆ๋‹ค. ์ปค๋ฐ‹ ๋ฉ”์‹œ์ง€์™€ ํ•จ๊ป˜ ๋ณ€๊ฒฝ๋œ ํŒŒ์ผ ๋ชฉ๋ก์„ ํ™•์ธํ•˜๊ณ , ๋ณ€๊ฒฝ๋œ ์ฝ”๋“œ์— ๋Œ€ํ•œ ๋ฆฌ๋ทฐ๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.
    • RAG ํ™œ์šฉ: ํ”„๋กœ์ ํŠธ ์ „์ฒด ์ฝ”๋“œ๋ฅผ ๋ฉ”์†Œ๋“œ ๋ณ„๋กœ chunking ํ•˜๊ณ , CodeGraphBert ๋ชจ๋ธ๋กœ ์ž„๋ฒ ๋”ฉํ•˜์—ฌ vector DB์— ์ €์žฅํ•ฉ๋‹ˆ๋‹ค. LLM์€ vector ํ˜•ํƒœ๋กœ ์ €์žฅ๋œ ์ฝ”๋“œ๋ฅผ ๋ฆฌ๋ทฐ ๋Œ€์ƒ ์ฝ”๋“œ์™€์˜ ์—ฐ๊ด€์„ฑ์„ ํŒ๋‹จํ•˜๋Š”๋ฐ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
    • LLM ๋ถ„์„: ์ฝ”๋“œ ์Šคํƒ€์ผ, ์˜ค๋ฅ˜ ๊ฐ€๋Šฅ์„ฑ, ์„ฑ๋Šฅ ๊ฐœ์„  ๊ฐ€๋Šฅ์„ฑ ๋“ฑ์„ ๋ถ„์„ํ•˜๋Š” AI ๋ชจ๋ธ์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ฆฌ๋ทฐ๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ์ž˜๋ชป๋œ ๋ณ€์ˆ˜๋ช…, ๋ถˆํ•„์š”ํ•œ ๋ณต์žก์„ฑ, ์„ฑ๋Šฅ ์ €ํ•˜ ๊ฐ€๋Šฅ์„ฑ ๋“ฑ์ด ๊ฐ์ง€๋˜๋ฉด ์ž๋™์œผ๋กœ ์ˆ˜์ • ์ œ์•ˆ์„ ํฌํ•จํ•œ ๋ฆฌ๋ทฐ๋ฅผ ์ž‘์„ฑํ•ฉ๋‹ˆ๋‹ค.
    • ์ฝ”๋“œ ๋ฆฌ๋ทฐ ์ƒ์„ฑ: LLM์€ ์ปค๋ฐ‹๋œ ์ฝ”๋“œ๋ฅผ ๋ถ„์„ํ•œ ํ›„ ํ•ด๋‹น ์ฝ”๋“œ์— ๋Œ€ํ•ด ๊ฐœ์„  ์‚ฌํ•ญ์ด๋‚˜ ๊ถŒ์žฅ ์‚ฌํ•ญ์„ ์ž‘์„ฑํ•ฉ๋‹ˆ๋‹ค. ๋ฆฌ๋ทฐ ๋‚ด์šฉ์€ ๋ณ€๊ฒฝ๋œ ์ฝ”๋“œ ๋ธ”๋ก๊ณผ ํ•จ๊ป˜ ํ‘œ์‹œ๋˜์–ด, ์ฝ”๋“œ ๋ฆฌ๋ทฐ๊ฐ€ ๋ช…ํ™•ํ•˜๊ฒŒ ์ด๋ฃจ์–ด์งˆ ์ˆ˜ ์žˆ๋„๋ก ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.

2. ํฌํŠธํด๋ฆฌ์˜ค ์ƒ์„ฑ

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

3. ์–ผ๊ตด ์ธ์‹ ๋กœ๊ทธ์ธ

  • ๋ณด์•ˆ: ์–ผ๊ตด ์ธ์‹ ๋ฐ์ดํ„ฐ๋Š” ์•ˆ์ „ํ•˜๊ฒŒ ์ฒ˜๋ฆฌ๋˜๊ณ  ์ €์žฅ๋ฉ๋‹ˆ๋‹ค. ์‹ค์‹œ๊ฐ„์œผ๋กœ ์ธ์‹์„ ์ˆ˜ํ–‰ํ•˜์—ฌ ํŽธ๋ฆฌํ•˜๋ฉด์„œ๋„ ๋ณด์•ˆ์„ฑ์ด ๋†’์€ ํ™˜๊ฒฝ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์–ผ๊ตด ๋ฒกํ„ฐ ๋ฐ์ดํ„ฐ๋Š” Qdrant๋ฅผ ํ™œ์šฉํ•ด ์œ ์‚ฌ๋„๋ฅผ ๊ณ„์‚ฐํ•˜๊ณ , Anti-Spoofing ๊ธฐ์ˆ ์„ ์ ์šฉํ•˜์—ฌ ๋ณด์•ˆ์„ฑ์„ ๊ฐ•ํ™”ํ–ˆ์Šต๋‹ˆ๋‹ค.

  • ๊ธฐ๋Šฅ ์„ค๋ช…: ์›น์บ ์„ ์ด์šฉํ•œ ์–ผ๊ตด ์ธ์‹ ์‹œ์Šคํ…œ์„ ํ†ตํ•ด ์‚ฌ์šฉ์ž๋“ค์ด ๋น„๋ฐ€๋ฒˆํ˜ธ ์—†์ด ์•ˆ์ „ํ•˜๊ฒŒ ํ”„๋กœ์ ํŠธ ์‹œ์Šคํ…œ์— ๋กœ๊ทธ์ธ/๋กœ๊ทธ์•„์›ƒ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

    • ์–ผ๊ตด ๋ฐ์ดํ„ฐ ์ „์ฒ˜๋ฆฌ ์‚ฌ์šฉ์ž๊ฐ€ ์ž…๋ ฅํ•œ ์–ผ๊ตด ์ด๋ฏธ์ง€๋ฅผ ํด๋ผ์ด์–ธํŠธ(React)์—์„œ ์ „์ฒ˜๋ฆฌ ํ›„, ๋ฒกํ„ฐ ๋ฐ์ดํ„ฐ๋กœ ๋ณ€ํ™˜. ๋ณ€ํ™˜๋œ ๋ฒกํ„ฐ ๋ฐ์ดํ„ฐ๋งŒ ์„œ๋ฒ„๋กœ ์ „์†กํ•˜์—ฌ ๊ฐœ์ธ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณดํ˜ธ.
    • Anti-Spoofing ๊ธฐ์ˆ  ์ ์šฉ ์‚ฌ์šฉ์ž๊ฐ€ ์—…๋กœ๋“œํ•œ ์–ผ๊ตด ์ด๋ฏธ์ง€๋ฅผ ๋ถ„์„ํ•ด ์‹ค์ œ ์‚ฌ์šฉ์ž์™€์˜ ์ผ์น˜ ์—ฌ๋ถ€๋ฅผ ํŒ๋‹จ. ์‚ฌ์ง„์ด๋‚˜ ๋™์˜์ƒ ๋“ฑ์œผ๋กœ ๋กœ๊ทธ์ธ ์‹œ๋„๋ฅผ ๋ฐฉ์ง€ํ•˜์—ฌ ๋ณด์•ˆ ๊ฐ•ํ™”.
    • ๋ฒกํ„ฐ ๋ฐ์ดํ„ฐ ๋น„๊ต (Qdrant ์‚ฌ์šฉ) Qdrant์˜ ๋ฒกํ„ฐ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์‚ฌ์šฉ์ž์˜ ์–ผ๊ตด ๋ฒกํ„ฐ์™€ ๊ธฐ์กด ๋ฐ์ดํ„ฐ ๊ฐ„ ์œ ์‚ฌ๋„๋ฅผ ๊ณ„์‚ฐ. ์œ ํด๋ฆฌ๋“œ ๊ฑฐ๋ฆฌ ๊ณ„์‚ฐ(Euclidean Distance) ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ฒกํ„ฐ ๊ฐ„์˜ ๊ฑฐ๋ฆฌ๋ฅผ ์ธก์ •ํ•˜๊ณ , ์‚ฌ์ „ ์ •์˜๋œ ์ž„๊ณ„๊ฐ’์„ ๊ธฐ์ค€์œผ๋กœ ์ธ์ฆ ์—ฌ๋ถ€ ๊ฒฐ์ •.