๐ ์ ๋ฌด ์ผ์ง
ํ ์ผ์ ๊ธฐ๋กํ๊ณ ๊ด๋ฆฌํ์ธ์.
## Console Observe Recored ํ๋ก๊ทธ๋จ - ๊ฐ๋ฐ์ ํ๋ ๊ด์ธก, ๊ธฐ๋ก cli tool ## llm model -
Observer bot ํ๋กํ ํ์ ์์ฑ ## Local CLI Tool ์ค๊ณ **๊ธฐ์ ์คํ:** * **CLI UI Library:** `InquirerPy` (ํ์ ์ฌ์ฉ - Checkbox, List, Confirm ๊ธฐ๋ฅ ํ์ฉ) * **LLM Client:** `ollama` (Local API ํต์ ) * **Git Hook:** `.git/hooks/pre-push`์์ Python ์คํฌ๋ฆฝํธ ์คํ (Interactive Mode ์ง์ ํ์) * **Jinja:** prompt ํ ํ๋ฆฟํ
## ๊ธ ์์ธ, ์์ค ์กฐํ ๊ถํ ๋ณ๊ฒฝ(์ํค ๋ฐํ๊ธ ์ผ ๊ฒฝ์ฐ ๊ณต๊ฐ์กฐ์น) - ๊ธฐ์กด : user.is_authenticated ์กฐํ ์กฐ๊ฑด๋ง ์ ์ง - ๋ณ๊ฒฝ : user.is_authenticated ๋ฐ is_wiki ์ฌ๋ถ ์ถ๊ฐ
- ์๋ฏธ๊ธฐ๋ฐ ๊ฒ์ ํ๋กํ ํ์ ๊ตฌํ local ํ๊ฒฝ : geforce 2080 super LLM ๋ชจ๋ธ : exaone3.5:7.8b Embedding ๋ชจ๋ธ : bge-m3
## 1. ์งํ ์ํ - [ ] **Expansion**: ์ฌ์ฉ์์ ์งง์ ์ง์๋ฅผ LLM์ด ์ถ๋ก ํ์ฌ ํ๋ถํ ๊ฒ์์ด๋ก ๋ณํํ๋ ์ ์ฒ๋ฆฌ ๋ก์ง ๊ตฌํ. - [ ] **๊ฒ์ ์๊ณ๊ฐ(Threshold) ๋์ **: ์ ์ฌ๋ ๊ฑฐ๋ฆฌ๊ฐ ๋๋ฌด ๋จผ(์: 0.7 ์ด์) ๊ฒฐ๊ณผ๋ ํํฐ๋งํ์ฌ ์ ํ๋ ํฅ์ - [ ] **๋ณ๋ ฌ ์ฟผ๋ฆฌ ์ต์ ํ**: ๊ฒ์์ด ๋ฒกํฐํ์ ๊ธฐ์กด ํํฐ๋ง ์ฟผ๋ฆฌ๋ฅผ `asyncio.gather`๋ก ์์ ๋ณ๋ ฌํ
## 1. ์งํ ์ํ - [x] **์ธํ๋ผ ์ค์ **: PostgreSQL `pgvector` ํ์ฅ ํ์ฑํ ```sq CREATE EXTENSION vector; ``` - [x] **์๋ฒ ๋ฉ ๋ชจ๋ธ ์ค๋น**: Ollama์ `bge-m3` ๋ชจ๋ธ ํ๋ค์ด ๋ฐ ์๋น ํ์ธ - [x] **๋ฐ์ดํฐ ์คํค๋ง ํ์ฅ**: `Knowledge` ๋ชจ๋ธ์ 1024์ฐจ์ `embedding` ๋ฒกํฐ ํ๋ ์ถ๊ฐ - [x] **์๋ฒ ๋ฉ ํ์ดํ๋ผ์ธ**: - [x] `OllamaClient`์ `embed_text` ๋น๋๊ธฐ ๋ฉ์๋ ์ถ๊ฐ - [x] ๊ฒ์๊ธ ์ ์ฅ/์์ ์ ์์ฝ๊ณผ ํจ๊ป ์๋ฒ ๋ฉ ๊ฐ์ ์์ฑํ์ฌ ์ ์ฅ - [x] **๊ฒ์ ์์ง ๊ต์ฒด**: 1024์ฐจ์ ์ฝ์ฌ์ธ ์ ์ฌ๋ ๊ธฐ๋ฐ ๊ฒ์ ๋ก์ง ๊ตฌํ - [x] **ํ์ด๋ธ๋ฆฌ๋ ๊ฒ์ ๊ตฌํ**: ํค์๋ ๊ฒ์ ์ ์(BM25)์ ๋ฒกํฐ ๊ฒ์ ์ ์๋ฅผ ํฉ์ฐํ์ฌ ์ต์ ์ ๊ฒฐ๊ณผ๋ฅผ ๋ด๋ RRF(Reciprocal Rank Fusion) ์๊ณ ๋ฆฌ์ฆ ์ ์ฉ. ## 2. ์ฃผ์ ์ค์ - **postgreSQL Extentions:** ```pgvector```๋ฅผ ํ์ฉํ vector DB ์ฌ์ฉ - **๋น๋๊ธฐ ๋ฐฉ์ ํต์ ์ค์ :** async-await, sync_to_async, asyncio.gather ๋ฅผ ์ด์ฉํ ๋น๋๊ธฐ ๋ฐฉ์ ์ฒ๋ฆฌ - **์๋ฏธ๊ธฐ๋ฐ๊ฒ์ & RRF ์ฌ์ฉ:** ํ์ด๋ธ๋ฆฌ๋ ๊ฒ์ ๋ฐฉ์ ์ ํ, ์ฅ์ ๋ฐ์์ RRF ๋ฐฉ์์ผ๋ก ์งํ - **CosineDistance:** ์ฝ์ฌ์ธ ์ ์ฌ๋ ๊ฑฐ๋ฆฌ๋ฅผ ์ด์ฉํ ๋ฐฉ์์ผ๋ก ์ผ๋ฐ์ ์ธ ๊ฑฐ๋ฆฌ๋ง ๋น๊ตํ๋๊ฒ ์๋ ๊ฒ์์ด๊ฐ ๊ฐ๋ฅดํค๋ ๋ฐฉํฅ๋ ํฌํจํ์ฌ ๊ณ์ฐ
์ฌ์ด๋๋ฐ ๊ณตํต ๋ชจ๋๋ก ๋ถ๋ฆฌ ๋์ ๋ณด๋์์ TODAY'S FOCUS ๋ฐ์ดํฐ ๊ฐ์ ์ฒ๋ฆฌํ๊ณ ๊ทธ ์ธ์ ์์์. ์์ ์์ง ๋ฐ์ดํฐ๋ก ์ฌ์ด๋๋ฐ ๋ชจ๋๋ก ๋ถ๋ฆฌ
bootstrap ์์กด์ฑ ์ ๊ฑฐ [2026.01.08.] ๋ค๋น๊ฒ์ด์ ๋ฐ: ๊ฐ๋ก ์ ๋ ฌ ๋ฐ ๋๋กญ๋ค์ด ์๋ฒฝ ๋ณต๊ตฌ ๋์๋ณด๋: ๋ณต์กํ ๊ทธ๋ฆฌ๋(row, col)๋ฅผ ๊ฑท์ด๋ด๊ณ Flex ๊ธฐ๋ฐ์ ๊น๋ํ ๋ ์ด์์ ์ ์ฉ ์นธ๋ฐ ๋ณด๋: ์คํ์ผ ๊ฐ์ด๋์ ๋ง์ถ ๋์์ธ ์ ์ฉ, ๋ด๋น์ ์๋ฐํ ์ถ๊ฐ, ์ปดํฉํธํ ๊ณ ์ ๋์ด ์คํฌ๋กค ์ ์ฉ ์ฝ๋ ๋ถ๋ฆฌ: forms.py์ ์คํ์ผ ์ฐ๊บผ๊ธฐ๋ฅผ ์ ๊ฑฐํ๊ณ components.css๋ก ์ญํ ๋ถ๋ด ์๋ฃ
์ ๋ฌด ๋ฑ๋ก ์ ๋ฑ๋ก์/์์ ์ ์ ์ฅ๋๋๋ก ์ปฌ๋ผ ์ถ๊ฐ ๋ฐ ๋ก์ง ๋ณ๊ฒฝ migrate ๋ฐฉ๋ฒ 1. models.py ์์ ๋ฑ๋ก์์ null=True, blank=True ์ฒ๋ฆฌ 2. ๊ธฐ๋ณธ ๋ง์ด๊ทธ๋ ์ด์ ์งํ 3. ๋น migrate ํ์ผ ์์ฑํ์ฌ ์ฌ์ฉ์ ์ ๋ณด update ๋ก์ง ์์ฑ 4. ๋ง์ด๊ทธ๋ ์ด์ ์ํ ํ ๋ฑ๋ก์์ ๋ถ์ฌ๋ null, blank ๋ชจ๋ False ์ฒ๋ฆฌ 5. ์ต์ข ๋ง์ด๊ทธ๋ ์ด์ ์๋ฃ ๋น migrate ํ์ผ ์์ฑ ๋ช ๋ น์ด : python manage.py makemigrations --empty works
1. ssh๋ฅผ ์ด์ฉํ mac ์ฐ๊ฒฐ ์๋จ. (๊ณตํต ๋ฒ๊ทธ ํ์ธ) 2. vs Code ์ฐ๊ณ ํธํจ. 3. ํ๋กฌํํธ ํ๋๋ก ํ๋ก๊ทธ๋จ ์ ํ ๊ตฌํ ๊ฐ๋ฅ
Private LLM Server ๊ตฌ์ถ ๋ฐ ํต์ ํ ์คํธ ์๋ฒ ์ฌ์(GPU) ์๋์ฐ PC : LLM Server - Geforce RTX 2080 Super ์๋์ฐ PC - ์ธ๋ถ LAN ์ฐ๊ฒฐ ๋ก ์ธํฐ๋ท ๊ฐ๋ฅ ์๋์ฐ PC - ์ธ๋ถ PC ๋ค์ด๋ ํธ LAN ์ฐ๊ฒฐ ๋ก ํต์ ๊ฐ๋ฅ - CLI ๋ฐฉ์ ํต์ ์ ํตํ LLM Model ์ ์ ๋ฐ ํต์ ํ ์คํธ
์ฌ์ด๋๋ฐ ๋ฌ๋ ฅ ํด๋ฆญ์ ํฐ ๋ฌ๋ ฅ ํ๋ฉด์ผ๋ก ์ด๋๋์ง ์์. -> ์คํ๋ก ๋ฐ์
[Dashboard / ์นธ๋ฐ๋ณด๋] ์นธ๋ฐ๋ณด๋์์ ์งํ์ํ ๋ณ๊ฒฝ ์ ์ ์ฅ๋์ง ์์. 1. csrfToken ๋ฏธ์ ์ ์ค๋ฅ ๋ฐ์ -> csrfToken ์ ์ ์ฒ๋ฆฌ 2. calendar์ ๋ฐ์์ ๋์ง๋ง ํ๋ฉด๋จ ๋ณ๊ฒฝ ์์ -> sidebar.html / dashboard.html ๋ถ๋ฆฌ๋ก ์ธํด ์๋ก๋ฅผ ์ฐพ์ ์ ์์ด ๋ฐ์ -> calendar ๋ฅผ ์ ์ญ์ผ๋ก ์ ์ธํ์ฌ ํ๋ฉด ์ ๋ฐ์ดํธ ํ๋๋ก ์ค์