Tinkerbell Glitter
[250310] WebSocket์ด๋ž€?
AI ๐Ÿค–/Django โ›“๏ธ
WebSocket์ด๋ž€?1. WebSocket ์ •์˜WebSocket์€ ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„ ๊ฐ„์˜ ์–‘๋ฐฉํ–ฅ, ์‹ค์‹œ๊ฐ„ ํ†ต์‹ ์„ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•˜๋Š” ํ”„๋กœํ† ์ฝœ์ด๋‹ค. ์ผ๋ฐ˜์ ์ธ HTTP ์š”์ฒญ/์‘๋‹ต ๋ฐฉ์‹๊ณผ ๋‹ฌ๋ฆฌ, WebSocket์€ ํ•œ ๋ฒˆ ์—ฐ๊ฒฐ์„ ๋งบ์œผ๋ฉด ์œ ์ง€๋œ ์ƒํƒœ์—์„œ ์ง€์†์ ์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ ๋ฐ›์„ ์ˆ˜ ์žˆ๋Š” ํŠน์„ฑ์„ ๊ฐ€์ง„๋‹ค.2. WebSocket์˜ ์ฃผ์š” ํŠน์ง•ํ’€ ์ด์ค‘ ํ†ต์‹ (Full-Duplex Communication)ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„๊ฐ€ ์„œ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๋น„๋™๊ธฐ์ ์œผ๋กœ ์ฃผ๊ณ ๋ฐ›์„ ์ˆ˜ ์žˆ์Œ.๊ธฐ์กด HTTP์˜ ์š”์ฒญ-์‘๋‹ต ๋ชจ๋ธ๊ณผ ๋‹ค๋ฅด๊ฒŒ, ์„œ๋ฒ„๋„ ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ๋จผ์ € ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด๋‚ผ ์ˆ˜ ์žˆ์Œ.์ง€์†์ ์ธ ์—ฐ๊ฒฐ(Persistent Connection)์ดˆ๊ธฐ ํ•ธ๋“œ์…ฐ์ดํฌ(Handshake) ํ›„, TCP ์—ฐ๊ฒฐ์ด ๋Š์–ด์ง€์ง€ ์•Š๊ณ  ์œ ์ง€๋จ.์ถ”๊ฐ€์ ์ธ ์—ฐ๊ฒฐ ์„ค์ •์ด ํ•„์š” ์—†์œผ๋ฏ€๋กœ..
[250303 : 250307] 15์ฃผ์ฐจ WIL
[SPARTA] AI 9 (24.11 ~ 25.03) ๐Ÿƒ๐Ÿป‍โ™€๏ธ/ํ•œ ์ฃผ ์ •๋ฆฌ ๐Ÿง˜๐Ÿป‍โ™€๏ธ
์ตœ์ข…ํŒ€ํ”Œ ์ฃผ์ฐจ 1์ฃผ๊ฐ€ ํ˜๋Ÿฌ๊ฐ‘๋‹ˆ๋‹ค~๊ผฌ๋ฐ•๊ผฌ๋ฐ• ํ•˜๋ ค๊ณ  ๋…ธ๋ ฅํ–ˆ๋˜ ์ฝ”๋“œ์นดํƒ€๋„ ๋ฏธ๋‹ˆํŒ€ํ”Œ ์ฃผ์ฐจ๋•Œ๋ถ€ํ„ฐ๋Š” ๋นผ๋จน๋Š” ๋‚ ์ด ์ƒ๊ธธ ์ •๋„๋กœ๋ˆˆ๋– ์„œ๋ถ€ํ„ฐ ํ•˜๋ฃจ์ข…์ผ ์ž˜ ๋•Œ๊นŒ์ง€ ์ฝ”๋“œ์—๋งŒ ์‹ ๊ฒฝ์“ฐ๋Š๋ผ ์ •์‹ ์ด ์—†์—ˆ๋Š”๋ฐ์ตœ์ข… ํ”„๋กœ์ ํŠธ๋Š” ์•„๋ฌด๋ž˜๋„ ๋ฏธ๋‹ˆ ํŒ€ํ”Œ๋ณด๋‹ค ์ค‘์š”๋„๊ฐ€ ๋†’๋‹ค๋Š” ์ƒ๊ฐ์—์ด๊ฒƒ์ €๊ฒƒ ์ƒ๊ฐ๋„ ๋งŽ์•„์ ธ์„œ ์ฐธ ๋ฐ”์ฉ๋‹ˆ๋‹ค,, ํ•˜๋ฃจํ•˜๋ฃจ๊ฐ€ ์ง€๋‚  ์ˆ˜๋ก ์ˆ˜๋ฃŒ๋‚ ๋„ ๋‹ค๊ฐ€์˜ค๊ณ  ์žˆ์–ด์„œ +๋งˆ์Œ๋„ ์‹ฑ์ˆญ์ƒ์ˆญ์ˆ˜๋ฃŒ์‹ ์ง€๋‚˜๋ฉด ์ง€๋‚œ 4๊ฐœ์›”์ด ๋„ˆ๋ฌด ๊ฟˆ๊พผ ๊ฒƒ ๊ฐ™์€ ๋Š๋‚Œ์ผ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค,,๋‚ด๊ฐ€ ์ตœ์ข…ํ”„๋กœ์ ํŠธ๋ฅผ ์ž˜ ๋งˆ๋ฌด๋ฆฌ ํ•  ์ˆ˜ ์žˆ์œผ๋ ค๋‚˜ ์‹ถ๊ธฐ๋„ ํ•˜๊ณ ์ด ์‹ค๋ ฅ์œผ๋กœ ์–ด๋”œ ์ทจ์—…ํ•  ์ˆ˜ ์žˆ์„์ง€ ๊ฑฑ์ •๋„ ๋˜๋‹ค๊ฐ€๋„๊ณต๋ถ€๋ฅผ ๋” ํ•ด์•ผํ•˜๋‚˜ ์•”๋‹ดํ•จ๋„ ๋“ค๋‹ค๊ฐ€๋„ ~~~๊ทธ๋ƒฅ ํ‰์ƒ ์ŠคํŒŒ๋ฅดํƒ€์—์„œ ๊ณต๋ถ€๋งŒ ํ•˜๋ฉด ์•ˆ๋˜๋‚˜์š”?^^...์•”ํŠผ ๋ฏธ๋‹ˆํŒ€ํ”Œ ๋ง‰์ฃผ์ฐจ์—์„œ ์ตœ์ข…๋•Œ๋Š” ์ ˆ๋Œ€์ ˆ๋Œ€ ๋ฏธ๋ฃจ์ง€ ๋ง์ž๋ผ๊ณ  ๋‹ค์ง ํ–ˆ๋˜ ๊ฒƒ์„ ์ตœ๋Œ€ํ•œ ์ง€ํ‚ค์ž๋Š” ๋งˆ์Œ์œผ..
[250307] FAISS vs ChromaDB ์ฐจ์ด์ 
AI ๐Ÿค–/ML & DL ๐Ÿง 
๐Ÿ” FAISS vs ChromaDB: ๊ธฐ๋Šฅ์  ์ฐจ์ด์ 1. FAISS (Facebook AI Similarity Search) ์ •๋ฆฌ์ฃผ์š” ๊ธฐ๋Šฅ: ๋Œ€๊ทœ๋ชจ ๋ฒกํ„ฐ ๊ฒ€์ƒ‰์„ ๋น ๋ฅด๊ฒŒ ์ˆ˜ํ–‰ํ•˜๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์‚ฌ์šฉ ๋ชฉ์ : ์ฃผ๋กœ ๋ฒกํ„ฐ ๊ฒ€์ƒ‰์„ ์ตœ์ ํ™”ํ•˜๊ธฐ ์œ„ํ•œ ์ธ๋ฑ์‹ฑ ๋ฐ ๊ฒ€์ƒ‰ ์—”์ง„ ์—ญํ• ํ•ต์‹ฌ ๊ธฐ๋Šฅ:๋ฒกํ„ฐ ์ธ๋ฑ์Šค ์ƒ์„ฑ (`IndexFlatL2`, `IVFFlat`, `HNSW` ๋“ฑ)์œ ์‚ฌ๋„ ๊ฒ€์ƒ‰ (L2 ๊ฑฐ๋ฆฌ, ๋‚ด์ , ์ฝ”์‚ฌ์ธ ์œ ์‚ฌ๋„ ๋“ฑ)GPU ๊ฐ€์† ์ง€์› (CUDA ํ™œ์šฉ ๊ฐ€๋Šฅ)๋ฒกํ„ฐ ์ €์žฅ ๊ธฐ๋Šฅ: ์ œ๊ณตํ•˜์ง€ ์•Š์Œ (๋””์Šคํฌ์— ์ €์žฅํ•˜๋Š” ๊ธฐ๋Šฅ์€ ์žˆ์ง€๋งŒ, DB์ฒ˜๋Ÿผ ๊ด€๋ฆฌ๋˜๋Š” ๊ฒƒ์€ ์•„๋‹˜)2. ChromaDB ์ •๋ฆฌ์ฃผ์š” ๊ธฐ๋Šฅ: ๋ฒกํ„ฐ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๊ณ  ๊ด€๋ฆฌํ•˜๋Š” ๋ฒกํ„ฐ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค(Vector DB)์‚ฌ์šฉ ๋ชฉ์ : ๋ฒกํ„ฐ ์ž„๋ฒ ๋”ฉ์„ ์ €์žฅํ•˜๊ณ , ์ง€์†์ ์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ CRUD(C..
[250306] update()์™€ save()์˜ ์ฐจ์ด
AI ๐Ÿค–/Django โ›“๏ธ
Django ORM์—์„œ `update()`์™€ `save()`์˜ ์ฐจ์ดDjango ORM์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ˆ˜์ •ํ•˜๊ณ  ์ €์žฅํ•˜๋Š” ๊ณผ์ •์—์„œ `update()`์™€ `save()`๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.ํ•˜์ง€๋งŒ ์ด ๋‘˜์˜ ๋™์ž‘ ๋ฐฉ์‹์€ ๋‹ค๋ฅด๋ฉฐ, ๋ฐ์ดํ„ฐ๊ฐ€ DB์— ๋ฐ˜์˜๋˜๋Š” ๋ฐฉ์‹์—์„œ๋„ ์ฐจ์ด๊ฐ€ ์žˆ๋‹ค.1. `update()`: QuerySet์„ ํ†ตํ•œ ๋Œ€๋Ÿ‰ ์—…๋ฐ์ดํŠธโœ… ํŠน์ง•`update()`๋Š” QuerySet์„ ์ง์ ‘ ์กฐ์ž‘ํ•˜์—ฌ DB์— ๋ฐ˜์˜ํ•˜๋Š” ๋ฐฉ์‹์ด๋‹ค.๋‹จ์ผ ๊ฐ์ฒด๊ฐ€ ์•„๋‹ˆ๋ผ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ๋ ˆ์ฝ”๋“œ๋ฅผ ํ•œ ๋ฒˆ์— ์—…๋ฐ์ดํŠธํ•  ์ˆ˜๋„ ์žˆ๋‹ค.Django ๋ชจ๋ธ์˜ `save()` ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•˜์ง€ ์•Š์Œ → ์ฆ‰, `pre_save` ๋ฐ `post_save` ๊ฐ™์€ ์‹ ํ˜ธ(signals)๋„ ํŠธ๋ฆฌ๊ฑฐ๋˜์ง€ ์•Š๋Š”๋‹ค.โœ… ์‚ฌ์šฉ ์˜ˆ์‹œfrom myapp.models import User# ..
[250305] Soft Delete๋ž€?
AI ๐Ÿค–/Django โ›“๏ธ
Soft Delete๋ž€? ๐Ÿ”™1. Soft Delete ์ •์˜Soft Delete(์†Œํ”„ํŠธ ๋”œ๋ฆฌํŠธ)๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์‹ค์ œ๋กœ ์‚ญ์ œํ•˜๋Š” ๋Œ€์‹ , ํŠน์ • ์ปฌ๋Ÿผ(์˜ˆ: `deleted_at` ๋˜๋Š”`is_deleted`)์„ ์—…๋ฐ์ดํŠธํ•˜์—ฌ ๋…ผ๋ฆฌ์ ์œผ๋กœ ์‚ญ์ œ๋œ ๊ฒƒ์ฒ˜๋Ÿผ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค.๐Ÿ” Hard Delete vs. Soft Delete๊ตฌ๋ถ„Hard DeleteSoft Delete๋ฐ์ดํ„ฐ ์‚ญ์ œ ์—ฌ๋ถ€์‹ค์ œ ์‚ญ์ œDB์— ๋‚จ์•„์žˆ์Œ๋ณต๊ตฌ ๊ฐ€๋Šฅ ์—ฌ๋ถ€๋ถˆ๊ฐ€๋Šฅ๊ฐ€๋Šฅ์„ฑ๋Šฅ ์˜ํ–ฅ๋น ๋ฆ„์ผ๋ถ€ ์„ฑ๋Šฅ ๋ถ€๋‹ด๋ฐ์ดํ„ฐ ๋ฌด๊ฒฐ์„ฑ์˜์กด์„ฑ ๋ฐ์ดํ„ฐ ์‚ญ์ œ ํ•„์š”์œ ์ง€ ๊ฐ€๋Šฅ์‚ฌ์šฉ ์‚ฌ๋ก€๋ณด์•ˆ์ด ์ค‘์š”ํ•œ ๋ฐ์ดํ„ฐ๊ธฐ๋ก ๋ณด์กด์ด ์ค‘์š”ํ•œ ๊ฒฝ์šฐ2. Soft Delete ๊ตฌํ˜„ ๋ฐฉ์‹1๏ธโƒฃ `is_deleted` ํ”Œ๋ž˜๊ทธ ํ™œ์šฉ์‚ญ์ œ ์—ฌ๋ถ€๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” Boolean ์ปฌ๋Ÿผ์„ ์ถ”๊ฐ€ํ•˜๋Š” ๋ฐฉ์‹.ALTER TABLE users ADD ..
[250304] RAG ์ •๋ฆฌ
AI ๐Ÿค–/ML & DL ๐Ÿง 
RAG (Retrieval-Augmented Generation)๋ž€?1. RAG ์ •์˜RAG(Retrieval-Augmented Generation)๋Š” ์ •๋ณด ๊ฒ€์ƒ‰(Retrieval)๊ณผ ์ƒ์„ฑ ๋ชจ๋ธ(Generation)์„ ๊ฒฐํ•ฉํ•˜์—ฌ ๋” ์ •ํ™•ํ•˜๊ณ  ์ตœ์‹  ์ •๋ณด๋ฅผ์ œ๊ณตํ•˜๋Š” AI ๊ธฐ์ˆ ์ด๋‹ค. ๋‹จ์ˆœํžˆ ์‚ฌ์ „ ํ•™์Šต๋œ ์–ธ์–ด ๋ชจ๋ธ์ด ์•„๋‹Œ, ์™ธ๋ถ€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋‚˜ ๋ฌธ์„œ์—์„œ ์ •๋ณด๋ฅผ ๊ฒ€์ƒ‰ํ•œ ํ›„ ์ด๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์‘๋‹ต์„์ƒ์„ฑํ•˜๋Š” ๋ฐฉ์‹์ด๋‹ค.ํ•ต์‹ฌ ๊ฐœ๋…Retrieval (๊ฒ€์ƒ‰)์ฃผ์–ด์ง„ ์งˆ์˜(Query)์™€ ๊ด€๋ จ๋œ ๋ฌธ์„œ๋ฅผ ๋ฒกํ„ฐ ๊ฒ€์ƒ‰(Vector Search) ๋˜๋Š” ํ‚ค์›Œ๋“œ ๊ฒ€์ƒ‰์„ ํ†ตํ•ด ์ฐพ์•„๋‚ธ๋‹ค.์ผ๋ฐ˜์ ์œผ๋กœ FAISS, ChromaDB, Weaviate, Elasticsearch ๊ฐ™์€ ๋ฒกํ„ฐ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ํ™œ์šฉํ•œ๋‹ค.๋ฌธ์„œ ์ž„๋ฒ ๋”ฉ(Document Embedding)์„ ..