AI Wiki - 100-hours-a-week/KTB4-13th-wiki GitHub Wiki
๋ด๋น์: Sevan, Jimmy ยท ์ํ: ๐ง ์์ฑ์ค ยท ์ต์ข ์์ : 2026-09-17
AI ํํธ๋ ์์ฐ์ด ๋์ ๊ฒ์, ์ค๋ช ๊ฐ๋ฅํ AI ๋์ ์ถ์ฒ, ์ฌ์ง์ผ๋ก ์ฑ ์ฐพ๊ธฐ(VLM) ๋ฅผ ๋ด๋นํฉ๋๋ค.
| ๊ธฐ๊ฐ | ์ฃผ์ ์์ |
|---|---|
| MM/DD ~ | ์์ ๋ด์ฉ |
| ๊ธฐ๋ฅ | ๋ฒ์ | ์ค๋ช |
|---|---|---|
| ์์ฐ์ด ๋์ ๊ฒ์ | V1 | ํค์๋ + ๋ฒกํฐ ํ์ด๋ธ๋ฆฌ๋ ๊ฒ์ (LLM ๋ฏธ์ฌ์ฉ) |
| AI ๋์ ์ถ์ฒ | V1 | ๋ํํ ๋จ์ผํด ์ถ์ฒ, ์ถ์ฒ ์ด์ ์ ๊ณต |
| ์ฌ์ง์ผ๋ก ์ฑ ์ฐพ๊ธฐ | V1 | ํ์ง ์ด๋ฏธ์ง๋ฅผ VLM์ผ๋ก ์ธ์ํด ์นดํ๋ก๊ทธ ๋งค์นญ |
| ๊ฐ์ธํ ์ถ์ฒ ยท ์ฌ๋ญํน | V2 | ์ฌ์ฉ์ ํ๋ ๊ธฐ๋ฐ ์ถ์ฒ, ์ทจํฅ ๊ธฐ์ต |
| ์ผํ ์์ด์ ํธ | V2 | ๋ํ ์ค ๋ด๊ธฐยท์กฐํ ๋ฑ tool ์คํ |
(์ด๋ฏธ์ง ๋๋ ๋์ ์ฒจ๋ถ)
- ๊ฒ์ ์๋ฒ: FastAPI. ๊ท์น ํ์ โ ํค์๋ + ๋ฒกํฐ ํ์ด๋ธ๋ฆฌ๋ โ ๋ญํน. LLM ๋น์์กด.
- ์ถ์ฒ ์๋ฒ: ์ ๋ ฅ ํด์ โ ํ๋ณด ๊ฒ์ โ ์ถ์ฒ ์ด์ ์์ฑ. ์ธ๋ถ LLM API ์ฌ์ฉ.
-
๋ฐ์ดํฐ ๊ณ์ธต: AI ์ ์ฉ PostgreSQL + pgvector. ๋ฐฑ์๋์ ๊ณต์ ํ์ง ์๋๋ค. ์ปค๋จธ์ค ๋ฐ์ดํฐ๋ BE MySQL โ AI Postgres ๋จ๋ฐฉํฅ ๋ณต์ ๋ก๋ง ๋ค์ด์ค๊ณ (
v_*์ฌ๋ณธ, ์ฝ๊ธฐ ์ ์ฉ), AI๊ฐ ์ฐ๋ ๊ฒ์book_embeddingsยทtaste_profileยทidempotency_records์ ๋ฟ์ด๋ค. - ์์ธ: ์๋น์ค ์ํคํ ์ฒ ๋ชจ๋ํ
| ๋ถ๋ฅ | ๊ธฐ์ |
|---|---|
| ์ธ์ด | Python 3.12 (uv๋ก ๊ด๋ฆฌ) |
| ์๋น | FastAPI + uvicorn |
| ์๋ฒ ๋ฉ | multilingual-e5-small (384์ฐจ์), ์์ฒด ์๋น ยท CPU |
| LLM ยท VLM | ์ธ๋ถ API (๊ฒ์ดํธ์จ์ด ์ด๋ํฐ ๋ค) |
| ๋ฒกํฐ ๊ฒ์ | PostgreSQL 17 + pgvector (HNSW) |
| ํค์๋ ๊ฒ์ | tsvector + pg_trgm |
| ์นดํ๋ก๊ทธ ๋ฐ์ดํฐ | ๊ตญ๋ฆฝ์ค์๋์๊ด ์์ง API + ๋์๊ด์ ๋ณด๋๋ฃจ |
| ๋ฌธ์ | ์ธ์ ๋ณด๋ |
|---|---|
| ๋ก์ปฌ ๊ฐ๋ฐ ํ๊ฒฝ ์ธํ | ํฉ๋ฅํ ๋ ํ ๋ฒ. ๋ฐ๋ผ ํ๋ฉด /health๊น์ง ๋ฌ๋ค |
| ๊ฐ๋ฐ ์ํฌํ๋ก | ๋งค์ผ. ๋ธ๋์นยท์ปค๋ฐยทPRยท๋ฆฌ๋ทฐยท๋จธ์ง ์ค์ ์์ |
๋ธ๋์นยท์ปค๋ฐยทPRยท๋จธ์ง ๊ท์น์ ํ ๊ณตํต ๋ฌธ์๋ฅผ ๋ฐ๋ฅธ๋ค.
โ ํ ์ปจ๋ฒค์
์์ฝํ๋ฉด ์ด๋ ๋ค.
| ํญ๋ชฉ | ๊ท์น |
|---|---|
| ๋ธ๋์น | `feature |
| ์ปค๋ฐ |
<type>: <summary> ยท ๋ง์นจํ ์์ ยท ์ ์ฅ์ ์ด๋ฆ์ scope๋ก ์ฐ์ง ์์ |
| PR | ์น์ธ 1๋ช ํ์ ยท ์๊ฐ ์น์ธ ๋ถ๊ฐ ยท 400์ค ๊ถ์ฅ |
| ๋จธ์ง | Squash Merge๋ง ยท main ์ง์ push ๊ธ์ง |
ํ ๊ณตํต ๋ฌธ์์๋ JavaยทJS ๊ท์น๋ง ์์ด AI ํํธ ๊ท์น์ ์ฌ๊ธฐ์ ๋๋ค.
| ๋์ | ๊ท์น | ์์ |
|---|---|---|
| ํจ์ยท๋ณ์ | snake_case | check_database |
| ํด๋์ค | PascalCase | Settings |
| ์์ | UPPER_SNAKE_CASE | MAX_BATCH_SIZE |
| ๋ชจ๋ยทํ์ผ | snake_case | book_embedding.py |
| ๋ด๋ถ ์ ์ฉ | ์์ _
|
_pool |
-
ํฌ๋งคํฐยท๋ฆฐํฐ๋
ruff๋ฅผ ๊ธฐ์ค์ผ๋ก ํ๋ค. CI์ Lint ๋จ๊ณ๊ฐ ์ด๊ฒ์ผ๋ก ํ์ ํ๋ค - ํจ์ ์๊ทธ๋์ฒ์ ํ์
ํํธ๋ฅผ ๋ถ์ธ๋ค.
pydantic์ ์ด ํ์ ์ผ๋ก ์ค์ ๊ฒ์ฆ์ ์ํํ๋ค - ์ธ๋ถ I/O(DBยทHTTP)๋ฅผ ํ๋ ํจ์๋
async def๋ก ์ด๋ค - ์๊ฐ์ ํญ์ aware datetime์ ์ด๋ค.
datetime.now()(naive)๋ ์ฐ์ง ์๋๋ค
- ๋ชจ๋ธยทํ๋กฌํํธ๋ฅผ ๋ฐ๊พธ๋ PR์๋ Provider, Model ID, Prompt Version, ๊ณ ์ Dataset ๊ฒ์ฆ ๊ฒฐ๊ณผ, ์๋ต ์๊ฐยท๋น์ฉ ๋ณํ๋ฅผ ์ ๋๋ค
-
๋ฒกํฐ ์ฐจ์์ด ๋ฐ๋๋ ๋ณ๊ฒฝ์
book_embeddingsยทtaste_profile์ ๋ ์ฌ์์ฑ์ด ํ์ํ๋ฏ๋ก ๋จ๋ ๋ฐฐํฌ๋ก ๋ถ๋ฆฌํ๋ค - ์คํค๋ง ๋ณ๊ฒฝ์ ๋ฐ๋์
db/migrations/ํ์ผ๋ก ๋จ๊ธด๋ค. ์ด์ DB ์๋ DDL ๊ธ์ง
์ค์ ๋ก ๋งํ๋ค๊ฐ ํผ ๊ธฐ๋ก. ๋ ์ง๋ณ๋ก ์๋๋ค.
- ๊ฒช์ ์๋ฌ๋ AI ์ ์ฅ์
docs/trouble/YYYY-MM-DD.md์ ์ ๋ฆฌํ๋ค - ํ ์ ์ฒด๊ฐ ์์์ผ ํ ๊ฒ๋ง ์ฌ๊ธฐ๋ก ์ฌ๋ฆฐ๋ค