Skip to main content

๐Ÿ“˜ Day 2 ์ •๋ฆฌ: Embeddings์™€ ๋ฒกํ„ฐ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์™„์ „ ์ •๋ณต

Kaggle x Google Cloud x DeepMind - Generative AI ์ง‘์ค‘ ๊ณผ์ • (Day 2)
Embeddings์˜ ๊ฐœ๋…๋ถ€ํ„ฐ ์‹ค๋ฌด ์ ์šฉ๊นŒ์ง€, ๋ฒกํ„ฐ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์™€ RAG ์‹œ์Šคํ…œ ์„ค๊ณ„๊นŒ์ง€ ์ด์ •๋ฆฌ


๐Ÿ—‚๏ธ ์˜ค๋Š˜์˜ ์•„์  ๋‹คโ€‹

  • Embeddings๋ž€?
  • ๋‹ค์–‘ํ•œ ํ˜•ํƒœ์˜ Embedding
  • ๋ฒกํ„ฐ ์ธ๋ฑ์‹ฑ๊ณผ ๊ฒ€์ƒ‰ ์•Œ๊ณ ๋ฆฌ์ฆ˜
  • ๋ฒกํ„ฐ DB์˜ ์•„ํ‚คํ…์ฒ˜์  ๊ณ ๋ ค์‚ฌํ•ญ
  • Retrieval-Augmented Generation(RAG) ์‹œ์Šคํ…œ์—์„œ์˜ ์ ์šฉ
  • ์ตœ์‹  ์—ฐ๊ตฌ ๋ฐ ์‹ค์ œ Google ์ œํ’ˆ ํ™œ์šฉ ์‚ฌ๋ก€
  • ์ฝ”๋“œ๋žฉ ์†Œ๊ฐœ ๋ฐ ์‹ค์Šต

๐Ÿง  Embedding์ด๋ž€?โ€‹

๋ฐ์ดํ„ฐ๋ฅผ ๊ณ ์ฐจ์›์˜ ์˜๋ฏธ ๊ณต๊ฐ„(semantic space) ์ƒ์—์„œ ์ˆ˜์น˜ ๋ฒกํ„ฐ๋กœ ํ‘œํ˜„ํ•œ ๊ฒƒ.

  • ์ฃผ๋กœ ํ…์ŠคํŠธ, ์ด๋ฏธ์ง€, ๊ตฌ์กฐํ™” ๋ฐ์ดํ„ฐ ๋“ฑ ๋‹ค์–‘ํ•œ ํ˜•์‹์„ ๊ณตํ†ต๋œ ๋ฒกํ„ฐ ๊ณต๊ฐ„์œผ๋กœ ๋ณ€ํ™˜
  • ๊ฑฐ๋ฆฌ ๊ณ„์‚ฐ์„ ํ†ตํ•ด ์˜๋ฏธ ์œ ์‚ฌ์„ฑ์„ ๋น„๊ต
  • LLM ๋“ฑ ๋‹ค์–‘ํ•œ ๋‹ค์šด์ŠคํŠธ๋ฆผ AI ๋ชจ๋ธ์—์„œ ์ž…๋ ฅ ํŠน์ง•์œผ๋กœ ํ™œ์šฉ

์ฃผ์š” ํŠน์ง•โ€‹

  • ์œ ์‚ฌํ•œ ์˜๋ฏธ์˜ ๋ฐ์ดํ„ฐ๋Š” ๊ฐ€๊นŒ์šด ๋ฒกํ„ฐ๋กœ ํ‘œํ˜„๋จ
  • RAG, ์ถ”์ฒœ ์‹œ์Šคํ…œ, ์ด์ƒ ํƒ์ง€ ๋“ฑ์— ํ™œ์šฉ ๊ฐ€๋Šฅ

โœ๏ธ Embedding์˜ ๋‹ค์–‘ํ•œ ์œ ํ˜•โ€‹

  • ํ…์ŠคํŠธ Embedding
    • Word2Vec โ†’ BERT โ†’ Gemini ๊ธฐ๋ฐ˜ ์ตœ์‹  ๋ชจ๋ธ
  • ์ด๋ฏธ์ง€ ๋ฐ ๋ฉ€ํ‹ฐ๋ชจ๋‹ฌ Embedding
    • ์ด๋ฏธ์ง€+ํ…์ŠคํŠธ ์กฐํ•ฉ ํ‘œํ˜„
    • DeepMind์˜ TIFA ๋ชจ๋ธ(Tips: Text-Image Fine-grained Awareness) ์†Œ๊ฐœ๋จ
  • ๊ตฌ์กฐํ™”/๊ทธ๋ž˜ํ”„ ๋ฐ์ดํ„ฐ Embedding
    • ๋น„์ •ํ˜• ์™ธ ๋‹ค์–‘ํ•œ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ ๊ฐ€๋Šฅ์„ฑ ํ™•์žฅ

๐Ÿ› ๏ธ Embedding ํ›ˆ๋ จ ๋ฐฉ์‹โ€‹

  • Dual Encoders + Contrastive Loss
    • ์œ ์‚ฌํ•œ ์Œ์„ ๊ฐ€๊น๊ฒŒ, ๋น„์œ ์‚ฌํ•œ ์Œ์„ ๋ฉ€์–ด์ง€๊ฒŒ ํ•™์Šต
  • LLM์„ ํ™œ์šฉํ•œ ์‚ฌ์ „ํ•™์Šต / ๋ฐ์ดํ„ฐ ์ƒ์„ฑ
    • ๋ฐ์ดํ„ฐ ํ’ˆ์งˆ ๊ฐœ์„  + ๋‹ค๊ตญ์–ด/๋ฉ€ํ‹ฐ๋ชจ๋‹ฌ ํ•™์Šต ๊ฐ€์†ํ™”

์ˆ˜์‹ญ์–ต ๊ฐœ์˜ ๋ฒกํ„ฐ์—์„œ ๋น ๋ฅด๊ฒŒ ์œ ์‚ฌ ํ•ญ๋ชฉ์„ ์ฐพ๋Š” ๊ธฐ์ˆ 

ํ•ต์‹ฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜โ€‹

  • HNSW (Hierarchical Navigable Small World)
  • SCAN (Google ๋‚ด๋ถ€ ์‚ฌ์šฉ, AlloyDB์— ํƒ‘์žฌ)
    • Approximate Nearest Neighbor(ANN) ๊ธฐ๋ฐ˜
    • ์•ฝ๊ฐ„์˜ ์ •ํ™•๋„ ์†์‹ค โ†” ํฐ ์†๋„ ํ–ฅ์ƒ

๐Ÿข ๋ฒกํ„ฐ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์•„ํ‚คํ…์ฒ˜โ€‹

์ผ๋ฐ˜ DB vs ๋ฒกํ„ฐ DBโ€‹

ํ•ญ๋ชฉํ†ตํ•ฉํ˜• DB (์˜ˆ: AlloyDB)์ „์šฉ ๋ฒกํ„ฐ DB (์˜ˆ: Vertex AI Vector Search)
๊ตฌ์กฐํ™” ๋ฐ์ดํ„ฐ ํ™œ์šฉ๋›ฐ์–ด๋‚จ๋ณ„๋„ ์—ฐ๊ฒฐ ํ•„์š”
์„ฑ๋ŠฅSCAN ๋‚ด์žฅ์œผ๋กœ ์šฐ์ˆ˜ANN ์ตœ์ ํ™”, ๊ณ ์„ฑ๋Šฅ
์ผ๊ด€์„ฑ, ํŠธ๋žœ์žญ์…˜๊ฐ•๋ ฅํ•จ์ œํ•œ์ ์ผ ์ˆ˜ ์žˆ์Œ
๋น„์šฉ์ƒ๋Œ€์ ์œผ๋กœ ์ ˆ๊ฐ ๊ฐ€๋Šฅ๊ณ ๋น„์šฉ ๋ฉ”๋ชจ๋ฆฌ ๊ธฐ๋ฐ˜

ํ•˜์ด๋ธŒ๋ฆฌ๋“œ ๊ตฌ์„ฑ ๊ณ ๋ ค์‚ฌํ•ญโ€‹

  • ํ•„ํ„ฐ ์กฐ๊ฑด ๊ฒ€์ƒ‰ (๊ฐ€๊ฒฉ, ์ƒ‰์ƒ ๋“ฑ) vs ๋น„์ •ํ˜• ์œ ์‚ฌ๋„ ๊ฒ€์ƒ‰
  • SQL ๊ธฐ๋ฐ˜ ์กฐ์ธ, ํ•„ํ„ฐ, ์ •๋ ฌ ๋“ฑ์„ ํ•˜๋‚˜์˜ ์งˆ์˜๋กœ ์ฒ˜๋ฆฌ ๊ฐ€๋Šฅ
  • ์‹œ์Šคํ…œ ๊ฐ„ ๋ฐ์ดํ„ฐ ์ •ํ•ฉ์„ฑ, ETL ๋น„์šฉ ๊ณ ๋ ค

๐Ÿ”„ ์ตœ์‹  Embedding ์ „ํ™˜๊ณผ ๊ด€๋ฆฌ ์ „๋žตโ€‹

  • Embedding ๋ชจ๋ธ ์—…๊ทธ๋ ˆ์ด๋“œ ์‹œ ์ „์ฒด ์žฌ์ƒ์„ฑ ํ•„์š”
    • ์„œ๋กœ ๋‹ค๋ฅธ ๋ชจ๋ธ ๊ฐ„ ํ˜ธํ™˜ ๋ถˆ๊ฐ€
  • ์—ฐ๊ตฌ ์ค‘: ๊ธฐ์กด ๋ฒกํ„ฐ๋ฅผ ์ƒˆ ์ž„๋ฒ ๋”ฉ์œผ๋กœ ํšจ์œจ์  ๋ณ€ํ™˜ํ•˜๋Š” ๊ธฐ์ˆ 
  • ๋™์ผ ๋ชจ๋ธ๋กœ ์ฟผ๋ฆฌ/๋ฌธ์„œ Embedding ์œ ์ง€ ํ•„์ˆ˜
  • ํ‰๊ฐ€ ์ง€ํ‘œ: precision, recall + latency, throughput

๐Ÿงฉ RAG(Retrieval-Augmented Generation) ์‹œ์Šคํ…œ ํŒโ€‹

  • ๊ฒ€์ƒ‰/์ƒ์„ฑ ์ผ๊ด€์„ฑ ์œ„ํ•ด ๋™์ผ Embedding ๋ชจ๋ธ ์‚ฌ์šฉ
  • ํ•˜์ด๋ธŒ๋ฆฌ๋“œ ๊ฒ€์ƒ‰ ์ถ”์ฒœ:
    • ํ‚ค์›Œ๋“œ ๋งค์นญ (sparse) + ์˜๋ฏธ ๊ฒ€์ƒ‰ (dense) ๊ฒฐํ•ฉ
  • Reranking, Metadata Filtering, BM25 ๊ฒฐํ•ฉ ์‚ฌ์šฉ
  • ์‹ค์‹œ๊ฐ„์„ฑ ์š”๊ตฌ ์‹œ: No-index RAG, ์ตœ์‹  API ํ™œ์šฉ ๊ฐ€๋Šฅ

๐Ÿ’ผ ์—”ํ„ฐํ”„๋ผ์ด์ฆˆ ์ ์šฉ ์ „๋žต (CTO ์ธ์‚ฌ์ดํŠธ)โ€‹

์ž„๋ฒ ๋”ฉ ๋„์ž…์˜ ๊ธฐ๋Œ€ ํšจ๊ณผโ€‹

  • ๋‹ค์–‘ํ•œ ํ˜•ํƒœ์˜ ๋ฐ์ดํ„ฐ(ํ…์ŠคํŠธ, ์ด๋ฏธ์ง€ ๋“ฑ) ๊ฒ€์ƒ‰ ๊ฐ€๋Šฅ
  • ์ •๋ฐ€ํ•œ ์ถ”์ฒœ, ์˜๋ฏธ ๊ธฐ๋ฐ˜ ๋ถ„๋ฅ˜ ๊ฐ€๋Šฅ
  • ๋ฐ์ดํ„ฐ ์•„ํ‚คํ…์ฒ˜์˜ ํŒจ๋Ÿฌ๋‹ค์ž„ ๋ณ€ํ™”

๋„์ž… ์‹œ ๋„์ „ ๊ณผ์ œโ€‹

  • ๋น„์šฉ, ํ‘œ์ค€ํ™” ๋ถ€์žฌ, ์ธ์žฌ ํ™•๋ณด
  • ๊ธฐ์กด ์‹œ์Šคํ…œ๊ณผ์˜ ํ†ตํ•ฉ ์–ด๋ ค์›€
  • ๋ฐ์ดํ„ฐ ๊ฑฐ๋ฒ„๋„Œ์Šค, ๋ณด์•ˆ ์ด์Šˆ

๐Ÿงช ์ฝ”๋“œ๋žฉ ์š”์•ฝโ€‹

1. RAG ํŒŒ์ดํ”„๋ผ์ธ ๋งŒ๋“ค๊ธฐโ€‹

  • Chroma DB + Gemini API๋กœ ๊ฐ„๋‹จํ•œ RAG ๊ตฌํ˜„

2. Embedding ์œ ์‚ฌ๋„ ์‹œ๊ฐํ™”โ€‹

  • Heatmap์œผ๋กœ ๋ฌธ์žฅ ๊ฐ„ ์˜๋ฏธ ์œ ์‚ฌ๋„ ์‹œ๊ฐ ํ™•์ธ

3. Embedding์„ ๋ถ„๋ฅ˜ ๋ชจ๋ธ ํŠน์ง•์œผ๋กœ ํ™œ์šฉโ€‹

  • ์‚ฌ์ „ํ•™์Šต๋œ ์ž„๋ฒ ๋”ฉ โ†’ ๋ถ„๋ฅ˜๊ธฐ ์œ„์— ์ถ”๊ฐ€ ์ธต ํ•™์Šต

๐ŸŽฏ ํ€ด์ฆˆ ์š”์•ฝ (๋ณต์Šต ์ฒดํฌ)โ€‹

  • โŒ Rule-based ์‹œ์Šคํ…œ์€ ์ž„๋ฒ ๋”ฉ ๋ถ€์ ํ•ฉ
  • โœ… SCAN์€ ๊ณ ์ฐจ์›์—์„œ ์†๋„/์ •ํ™•๋„ ์šฐ์ˆ˜
  • โŒ Bag-of-Words๋Š” ์ˆœ์„œ/์˜๋ฏธ ๋ฌด์‹œ
  • โœ… RAG์—์„œ ์ž„๋ฒ ๋”ฉ + ํ‚ค์›Œ๋“œ ํ˜ผํ•ฉ ์ถ”์ฒœ
  • โœ… LSH๋Š” ์œ ์‚ฌ ์•„์ดํ…œ์„ hash bucket์— ๊ทธ๋ฃนํ™”

๐Ÿ“ ๋งˆ๋ฌด๋ฆฌโ€‹

Day 2๋Š” ์ž„๋ฒ ๋”ฉ๊ณผ ๋ฒกํ„ฐ DB์˜ ์ด๋ก ๋ถ€ํ„ฐ ์‹ค์ „ ์‘์šฉ๊นŒ์ง€ ์•„์šฐ๋ฅด๋Š” ๊ฐ•์˜์˜€์Šต๋‹ˆ๋‹ค. RAG ์‹œ์Šคํ…œ ๊ตฌ์ถ•, ์„ฑ๋Šฅ ํ‰๊ฐ€, ์ตœ์‹  ๋ชจ๋ธ ์ ์šฉ ์ „๋žต๊นŒ์ง€ ๋‹ค๋ฃฌ ๋งŒํผ, ์˜ค๋Š˜์˜ ๋‚ด์šฉ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ์—ฌ๋Ÿฌ๋ถ„์˜ AI ์‹œ์Šคํ…œ์— ๊ฐ•๋ ฅํ•œ ๊ฒ€์ƒ‰ ๋ฐ ๋ฌธ๋งฅ ์ฒ˜๋ฆฌ ๋Šฅ๋ ฅ์„ ์ถ”๊ฐ€ํ•ด ๋ณด์„ธ์š”!