Skip to content

Latest commit

ย 

History

History
488 lines (408 loc) ยท 17 KB

File metadata and controls

488 lines (408 loc) ยท 17 KB

Ragnaforge - ๊ธฐ์—…์šฉ ํ•˜์ด๋ธŒ๋ฆฌ๋“œ RAG ์‹œ์Šคํ…œ

๐ŸŽฏ ํ”„๋กœ์ ํŠธ ๊ฐœ์š”

Ragnaforge๋Š” ํ•œ๊ตญ์–ด์— ํŠนํ™”๋œ ์ฐจ์„ธ๋Œ€ ํ•˜์ด๋ธŒ๋ฆฌ๋“œ RAG(Retrieval-Augmented Generation) ์‹œ์Šคํ…œ์œผ๋กœ, ๊ธฐ์—…์˜ ๋ฌธ์„œ ์ง€๋Šฅํ™” ๋ฐ ์ง€์‹ ๊ด€๋ฆฌ ํ˜์‹ ์„ ์œ„ํ•ด ์„ค๊ณ„๋œ ์—”ํ„ฐํ”„๋ผ์ด์ฆˆ๊ธ‰ ์†”๋ฃจ์…˜์ž…๋‹ˆ๋‹ค.

ํ•ต์‹ฌ ๊ฐ€์น˜ ์ œ์•ˆ

  • ํ•œ๊ตญ์–ด ์ตœ์ ํ™”: KURE-v1, KoE5 ๋“ฑ ํ•œ๊ตญ์–ด ํŠนํ™” ์ž„๋ฒ ๋”ฉ ๋ชจ๋ธ ์ง€์›
  • ํ•˜์ด๋ธŒ๋ฆฌ๋“œ ๊ฒ€์ƒ‰: Vector ๊ฒ€์ƒ‰๊ณผ Text ๊ฒ€์ƒ‰์˜ ์ง€๋Šฅ์  ๊ฒฐํ•ฉ์œผ๋กœ ๊ฒ€์ƒ‰ ์ •ํ™•๋„ ๊ทน๋Œ€ํ™”
  • OpenAI ํ˜ธํ™˜์„ฑ: ๊ธฐ์กด OpenAI API ๊ธฐ๋ฐ˜ ์‹œ์Šคํ…œ๊ณผ ์™„๋ฒฝ ํ˜ธํ™˜
  • ์—”ํ„ฐํ”„๋ผ์ด์ฆˆ ์ค€๋น„: ํ™•์žฅ์„ฑ, ๋ณด์•ˆ์„ฑ, ์•ˆ์ •์„ฑ์„ ๊ณ ๋ คํ•œ ๊ธฐ์—…์šฉ ์•„ํ‚คํ…์ฒ˜

๐Ÿข ๊ธฐ์—…์šฉ ์‹œ์žฅ ์ ํ•ฉ์„ฑ

ํƒ€๊ฒŸ ์‹œ์žฅ

  1. ๋Œ€๊ธฐ์—… ๋ฐ ๊ณต๊ณต๊ธฐ๊ด€

    • ๋Œ€์šฉ๋Ÿ‰ ๋ฌธ์„œ ์ฒ˜๋ฆฌ ๋ฐ ์ง€์‹ ๊ด€๋ฆฌ ์‹œ์Šคํ…œ ๊ตฌ์ถ•
    • ๋‚ด๋ถ€ ๋ฌธ์„œ ๊ฒ€์ƒ‰ ๋ฐ ์งˆ์˜์‘๋‹ต ์‹œ์Šคํ…œ
    • ๊ทœ์ • ๋ฐ ๋งค๋‰ด์–ผ ์ž๋™ํ™” ์‹œ์Šคํ…œ
  2. ๊ธˆ์œต ๋ฐ ๋ฒ•๋ฌด ๊ธฐ๊ด€

    • ๊ณ„์•ฝ์„œ, ๋ฒ•๋ น, ํŒ๋ก€ ๋“ฑ ์ „๋ฌธ ๋ฌธ์„œ ๋ถ„์„
    • ์ปดํ”Œ๋ผ์ด์–ธ์Šค ๋ฐ ๋ฆฌ์Šคํฌ ๊ด€๋ฆฌ
    • ๊ณ ๊ฐ ์ƒ๋‹ด ์ž๋™ํ™”
  3. ์—ฐ๊ตฌ๊ฐœ๋ฐœ ๊ธฐ๊ด€

    • ์—ฐ๊ตฌ ๋…ผ๋ฌธ ๋ฐ ๊ธฐ์ˆ  ๋ฌธ์„œ ๋ถ„์„
    • ํŠนํ—ˆ ๊ฒ€์ƒ‰ ๋ฐ ๋ถ„์„
    • ์ง€์‹ ๋ฒ ์ด์Šค ๊ตฌ์ถ•
  4. IT ์„œ๋น„์Šค ๊ธฐ์—…

    • ๊ณ ๊ฐ์‚ฌ ๋งž์ถคํ˜• RAG ์†”๋ฃจ์…˜ ์ œ๊ณต
    • SaaS ํ˜•ํƒœ์˜ ๋ฌธ์„œ ์ง€๋Šฅํ™” ์„œ๋น„์Šค
    • AI ๊ธฐ๋ฐ˜ ๊ฒ€์ƒ‰ ์—”์ง„ ๊ตฌ์ถ•

์‹œ์žฅ ๋‹ˆ์ฆˆ ๋ถ€ํ•ฉ๋„

โœ… ๊ฐ•์ 

  • ํ•œ๊ตญ์–ด ์ฒ˜๋ฆฌ ์šฐ์œ„: ๊ธฐ์กด ๊ธ€๋กœ๋ฒŒ ์†”๋ฃจ์…˜ ๋Œ€๋น„ ํ•œ๊ตญ์–ด ๋ฌธ์„œ ์ฒ˜๋ฆฌ ์„ฑ๋Šฅ ์šฐ์ˆ˜
  • ๋น„์šฉ ํšจ์œจ์„ฑ: ๋กœ์ปฌ ๋ชจ๋ธ ์‚ฌ์šฉ์œผ๋กœ API ๋น„์šฉ ์ ˆ๊ฐ (OpenAI ๋Œ€๋น„ 90% ์ ˆ์•ฝ)
  • ๋ฐ์ดํ„ฐ ๋ณด์•ˆ: ์˜จํ”„๋ ˆ๋ฏธ์Šค ๋ฐฐํฌ๋กœ ๋ฏผ๊ฐํ•œ ๊ธฐ์—… ๋ฐ์ดํ„ฐ ๋ณดํ˜ธ
  • ์ปค์Šคํ„ฐ๋งˆ์ด์ง•: ๊ธฐ์—…๋ณ„ ์š”๊ตฌ์‚ฌํ•ญ์— ๋งž์ถ˜ ์œ ์—ฐํ•œ ์„ค์ • ๋ฐ ํ™•์žฅ

๐ŸŽฏ ์‹œ์žฅ ๊ธฐํšŒ

  • AI ๋„์ž… ๊ฐ€์†ํ™”: ๊ธฐ์—…์˜ ๋””์ง€ํ„ธ ์ „ํ™˜ ๋ฐ AI ๋„์ž… ํ™•์‚ฐ
  • ๋ฐ์ดํ„ฐ ์ฃผ๊ถŒ ๊ฐ•ํ™”: ๊ตญ๋‚ด ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ์— ๋Œ€ํ•œ ๊ทœ์ œ ๊ฐ•ํ™” ํŠธ๋ Œ๋“œ
  • ๋น„์šฉ ์ตœ์ ํ™”: ํด๋ผ์šฐ๋“œ API ๋น„์šฉ ๋ถ€๋‹ด์œผ๋กœ ์ธํ•œ ์˜จํ”„๋ ˆ๋ฏธ์Šค ์†”๋ฃจ์…˜ ์„ ํ˜ธ
  • ํ•œ๊ตญ์–ด ํŠนํ™” ๋‹ˆ์ฆˆ: ๊ธ€๋กœ๋ฒŒ ์†”๋ฃจ์…˜์˜ ํ•œ๊ตญ์–ด ์ฒ˜๋ฆฌ ํ•œ๊ณ„

๐Ÿ—๏ธ ์‹œ์Šคํ…œ ์•„ํ‚คํ…์ฒ˜

์ „์ฒด ๊ตฌ์กฐ

โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”    โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”    โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚   Client Apps   โ”‚    โ”‚   Web UI        โ”‚    โ”‚   API Clients   โ”‚
โ”‚   (OpenAI SDK)  โ”‚    โ”‚   (Streamlit)   โ”‚    โ”‚   (REST API)    โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜    โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜    โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
          โ”‚                      โ”‚                      โ”‚
          โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
                                 โ”‚
                    โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ–ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
                    โ”‚      FastAPI Gateway      โ”‚
                    โ”‚   (OpenAI Compatible)     โ”‚
                    โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
                                  โ”‚
        โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
        โ”‚                         โ”‚                         โ”‚
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ–ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”    โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ–ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”    โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ–ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚  Document      โ”‚    โ”‚   Embedding &       โ”‚    โ”‚   Search &       โ”‚
โ”‚  Processing    โ”‚    โ”‚   Vector Store      โ”‚    โ”‚   Retrieval      โ”‚
โ”‚                โ”‚    โ”‚                     โ”‚    โ”‚                  โ”‚
โ”‚ โ€ข Marker       โ”‚    โ”‚ โ€ข KURE-v1/KoE5     โ”‚    โ”‚ โ€ข Vector Search  โ”‚
โ”‚ โ€ข Docling      โ”‚    โ”‚ โ€ข Qdrant/Milvus    โ”‚    โ”‚ โ€ข Text Search    โ”‚
โ”‚ โ€ข Chunking     โ”‚    โ”‚ โ€ข Batch Processing  โ”‚    โ”‚ โ€ข Hybrid Search  โ”‚
โ”‚ โ€ข Storage      โ”‚    โ”‚ โ€ข GPU Acceleration  โ”‚    โ”‚ โ€ข Reranking      โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜    โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜    โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

๋ ˆ์ด์–ด๋ณ„ ์•„ํ‚คํ…์ฒ˜

๐ŸŒ ํ”„๋ ˆ์  ํ…Œ์ด์…˜ ๋ ˆ์ด์–ด

  • FastAPI Gateway: OpenAI ํ˜ธํ™˜ REST API ์ œ๊ณต
  • Streamlit UI: ์ง๊ด€์ ์ธ ์›น ์ธํ„ฐํŽ˜์ด์Šค
  • Router ๋ชจ๋“ˆ: ๊ธฐ๋Šฅ๋ณ„ ์—”๋“œํฌ์ธํŠธ ๋ถ„๋ฆฌ
    • /embeddings - ์ž„๋ฒ ๋”ฉ ์ƒ์„ฑ API
    • /v1/upload - ํŒŒ์ผ ์—…๋กœ๋“œ
    • /v1/process - ๋ฌธ์„œ ์ฒ˜๋ฆฌ
    • /v1/search/* - ๊ฒ€์ƒ‰ API
    • /v1/rerank - ์žฌ์ˆœ์œ„ํ™” API
    • /admin/* - ๊ด€๋ฆฌ ๊ธฐ๋Šฅ

๐Ÿ”ง ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง ๋ ˆ์ด์–ด

  • Document Processing Service: ๋ฌธ์„œ ๋ณ€ํ™˜ ๋ฐ ์ฒ˜๋ฆฌ ์˜ค์ผ€์ŠคํŠธ๋ ˆ์ด์…˜
  • Embedding Service: ์ž„๋ฒ ๋”ฉ ๋ชจ๋ธ ๊ด€๋ฆฌ ๋ฐ ๋ฒกํ„ฐ ์ƒ์„ฑ
  • Unified Search Service: ํ•˜์ด๋ธŒ๋ฆฌ๋“œ ๊ฒ€์ƒ‰ ์—”์ง„
  • Rerank Service: Cross-encoder ๊ธฐ๋ฐ˜ ์žฌ์ˆœ์œ„ํ™”
  • File Upload Service: ํŒŒ์ผ ์—…๋กœ๋“œ ๋ฐ ์ค‘๋ณต ๊ฒ€์‚ฌ
  • Storage Service: ํŒŒ์ผ ์‹œ์Šคํ…œ ๊ด€๋ฆฌ

๐Ÿ’พ ๋ฐ์ดํ„ฐ ๋ ˆ์ด์–ด

  • Vector Backends: Qdrant, Milvus, Chroma, Weaviate
  • Text Backends: MeiliSearch, OpenSearch, Elasticsearch
  • Database Service: ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ ๋ฐ ํŒŒ์ผ ์ •๋ณด ๊ด€๋ฆฌ
  • Storage System: ๊ณ„์ธตํ™”๋œ ํŒŒ์ผ ์ €์žฅ ๊ตฌ์กฐ

ํ•ต์‹ฌ ์ปดํฌ๋„ŒํŠธ

1. ๋ฌธ์„œ ์ฒ˜๋ฆฌ ํŒŒ์ดํ”„๋ผ์ธ

  • ๋‹ค์ค‘ ๋ณ€ํ™˜ ์—”์ง„: Marker(๊ณ ์†), Docling(๊ณ ํ’ˆ์งˆ) ์ง€์›
  • ์ง€๋Šฅํ˜• ์ฒญํ‚น: ๋ฌธ์„œ ๊ตฌ์กฐ ์ธ์‹ ๊ธฐ๋ฐ˜ ์ตœ์  ๋ถ„ํ• 
  • ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ ๊ด€๋ฆฌ: ํŒŒ์ผ ์ •๋ณด, ํ•ด์‹œ, ์ค‘๋ณต ๊ฒ€์‚ฌ
  • ์ด๋ฏธ์ง€ ์ฒ˜๋ฆฌ: ๋ฌธ์„œ ๋‚ด ์ด๋ฏธ์ง€ ์ถ”์ถœ ๋ฐ OCR

2. ์ž„๋ฒ ๋”ฉ & ๋ฒกํ„ฐ ์Šคํ† ์–ด

  • ํ•œ๊ตญ์–ด ํŠนํ™” ๋ชจ๋ธ: KURE-v1, KoE5, Arctic-embed-ko
  • ๋ฐฐ์น˜ ์ตœ์ ํ™”: GPU ๋ฉ”๋ชจ๋ฆฌ ํšจ์œจ์  ํ™œ์šฉ (๋ฐฐ์น˜ ํฌ๊ธฐ 128)
  • ๋‹ค์ค‘ ๋ฐฑ์—”๋“œ: Qdrant, Milvus, Chroma, Weaviate ์ง€์›
  • ์‹ค์‹œ๊ฐ„ ์ธ๋ฑ์‹ฑ: ๋ฌธ์„œ ์—…๋กœ๋“œ ์ฆ‰์‹œ ๊ฒ€์ƒ‰ ๊ฐ€๋Šฅ

3. ํ•˜์ด๋ธŒ๋ฆฌ๋“œ ๊ฒ€์ƒ‰ ์—”์ง„

  • ๋ฒกํ„ฐ ๊ฒ€์ƒ‰: ์˜๋ฏธ์  ์œ ์‚ฌ๋„ ๊ธฐ๋ฐ˜ ๊ฒ€์ƒ‰
  • ํ…์ŠคํŠธ ๊ฒ€์ƒ‰: ํ‚ค์›Œ๋“œ ๊ธฐ๋ฐ˜ ์ •ํ™• ๋งค์นญ (MeiliSearch)
  • ์ง€๋Šฅํ˜• ๊ฒฐํ•ฉ: ๊ฐ€์ค‘์น˜ ๊ธฐ๋ฐ˜ ์Šค์ฝ”์–ด ์œตํ•ฉ
  • ์žฌ์ˆœ์œ„ํ™”: Cross-encoder ๋ชจ๋ธ์„ ํ†ตํ•œ ๊ฒฐ๊ณผ ํ’ˆ์งˆ ํ–ฅ์ƒ

4. API ๊ฒŒ์ดํŠธ์›จ์ด

  • OpenAI ํ˜ธํ™˜: ๊ธฐ์กด OpenAI SDK ๊ทธ๋Œ€๋กœ ์‚ฌ์šฉ ๊ฐ€๋Šฅ
  • RESTful API: ํ‘œ์ค€ HTTP API ์ œ๊ณต
  • ์ธ์ฆ & ๊ถŒํ•œ: Bearer ํ† ํฐ ๊ธฐ๋ฐ˜ ๋ณด์•ˆ
  • ๋ชจ๋‹ˆํ„ฐ๋ง: ์„ฑ๋Šฅ ๋ฉ”ํŠธ๋ฆญ ๋ฐ ์‚ฌ์šฉ๋Ÿ‰ ์ถ”์ 

๏ฟฝ ๋ฌธ์„œ ์ฒ˜๋ฆฌ ํ๋ฆ„

์ „์ฒด ํŒŒ์ดํ”„๋ผ์ธ

๐Ÿ“„ ํŒŒ์ผ ์—…๋กœ๋“œ โ†’ ๐Ÿ” ์ค‘๋ณต ๊ฒ€์‚ฌ โ†’ ๐Ÿ”„ ๋ฌธ์„œ ๋ณ€ํ™˜ โ†’ โœ‚๏ธ ์ฒญํ‚น โ†’ ๐Ÿง  ์ž„๋ฒ ๋”ฉ โ†’ ๐Ÿ’พ ์ €์žฅ โ†’ ๐Ÿ” ๊ฒ€์ƒ‰ ๊ฐ€๋Šฅ

์ƒ์„ธ ์ฒ˜๋ฆฌ ๋‹จ๊ณ„

1๏ธโƒฃ ํŒŒ์ผ ์—…๋กœ๋“œ ๋ฐ ๊ฒ€์ฆ

ํด๋ผ์ด์–ธํŠธ ์š”์ฒญ (POST /v1/upload)
    โ†“
ํŒŒ์ผ ํฌ๊ธฐ ๊ฒ€์ฆ (์ตœ๋Œ€ 50MB)
    โ†“
ํŒŒ์ผ ํ˜•์‹ ๊ฒ€์ฆ (PDF, DOCX, PPTX, MD, TXT)
    โ†“
์ž„์‹œ ์ €์žฅ์†Œ์— ํŒŒ์ผ ์ €์žฅ
    โ†“
SHA-256 ํ•ด์‹œ ๊ณ„์‚ฐ
    โ†“
์ค‘๋ณต ํŒŒ์ผ ๊ฒ€์‚ฌ (๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค)
    โ†“
๊ณ ์œ  ํŒŒ์ผ ID ์ƒ์„ฑ ๋ฐ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ ์ €์žฅ

2๏ธโƒฃ ๋ฌธ์„œ ๋ณ€ํ™˜ (Document Processing Service)

ํŒŒ์ผ ํƒ€์ž… ๋ถ„์„
    โ†“
๋ณ€ํ™˜ ๋ฐฉ๋ฒ• ์„ ํƒ:
โ”œโ”€โ”€ PDF โ†’ Marker (๊ณ ์†) ๋˜๋Š” Docling (๊ณ ํ’ˆ์งˆ)
โ”œโ”€โ”€ DOCX/PPTX โ†’ Docling
โ”œโ”€โ”€ MD/TXT โ†’ ์ง์ ‘ ์ฝ๊ธฐ
    โ†“
๋งˆํฌ๋‹ค์šด ๋ณ€ํ™˜ ์‹คํ–‰
    โ†“
์ด๋ฏธ์ง€ ์ถ”์ถœ (์„ ํƒ์‚ฌํ•ญ)
    โ†“
๋ณ€ํ™˜ ๊ฒฐ๊ณผ ๊ฒ€์ฆ ๋ฐ ์ €์žฅ

3๏ธโƒฃ ํ…์ŠคํŠธ ์ฒญํ‚น (Chunking Service)

๋งˆํฌ๋‹ค์šด ํ…์ŠคํŠธ ์ž…๋ ฅ
    โ†“
์ฒญํ‚น ์ „๋žต ์„ ํƒ:
โ”œโ”€โ”€ recursive: ์žฌ๊ท€์  ๋ถ„ํ•  (๊ธฐ๋ณธ๊ฐ’)
โ”œโ”€โ”€ semantic: ์˜๋ฏธ ๋‹จ์œ„ ๋ถ„ํ• 
โ”œโ”€โ”€ fixed: ๊ณ ์ • ํฌ๊ธฐ ๋ถ„ํ• 
    โ†“
์ฒญํฌ ํฌ๊ธฐ ์„ค์ • (๊ธฐ๋ณธ 380์ž)
    โ†“
์˜ค๋ฒ„๋žฉ ์„ค์ • (๊ธฐ๋ณธ 70์ž)
    โ†“
์ฒญํฌ ์ƒ์„ฑ ๋ฐ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ ์ถ”๊ฐ€

4๏ธโƒฃ ์ž„๋ฒ ๋”ฉ ์ƒ์„ฑ (Embedding Service)

์ฒญํฌ ํ…์ŠคํŠธ ๋ฐฐ์น˜ ์ฒ˜๋ฆฌ
    โ†“
์ž„๋ฒ ๋”ฉ ๋ชจ๋ธ ๋กœ๋“œ:
โ”œโ”€โ”€ KURE-v1 (๊ธฐ๋ณธ๊ฐ’)
โ”œโ”€โ”€ KoE5
โ”œโ”€โ”€ Arctic-embed-ko
    โ†“
GPU ๋ฉ”๋ชจ๋ฆฌ ์ตœ์ ํ™” (๋ฐฐ์น˜ ํฌ๊ธฐ 128)
    โ†“
๋ฒกํ„ฐ ์ž„๋ฒ ๋”ฉ ์ƒ์„ฑ
    โ†“
์ •๊ทœํ™” ๋ฐ ํ’ˆ์งˆ ๊ฒ€์ฆ

5๏ธโƒฃ ์ธ๋ฑ์‹ฑ ๋ฐ ์ €์žฅ

๋ฒกํ„ฐ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ €์žฅ:
โ”œโ”€โ”€ Qdrant (๊ธฐ๋ณธ๊ฐ’)
โ”œโ”€โ”€ Milvus
โ”œโ”€โ”€ Chroma
โ”œโ”€โ”€ Weaviate
    โ†“
ํ…์ŠคํŠธ ๊ฒ€์ƒ‰ ์—”์ง„ ์ €์žฅ:
โ”œโ”€โ”€ MeiliSearch (๊ธฐ๋ณธ๊ฐ’)
โ”œโ”€โ”€ OpenSearch
โ”œโ”€โ”€ Elasticsearch
    โ†“
๋ฉ”ํƒ€๋ฐ์ดํ„ฐ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์—…๋ฐ์ดํŠธ
    โ†“
ํŒŒ์ผ ์‹œ์Šคํ…œ ์ •๋ฆฌ

๊ฒ€์ƒ‰ ์ฒ˜๋ฆฌ ํ๋ฆ„

๐Ÿ” ๋ฒกํ„ฐ ๊ฒ€์ƒ‰ ํ”„๋กœ์„ธ์Šค

๊ฒ€์ƒ‰ ์ฟผ๋ฆฌ ์ž…๋ ฅ (POST /v1/search/vector)
    โ†“
์ฟผ๋ฆฌ ์ž„๋ฒ ๋”ฉ ์ƒ์„ฑ
    โ†“
๋ฒกํ„ฐ ๊ฒ€์ƒ‰ ์‹คํ–‰ (์˜๋ฏธ์  ์œ ์‚ฌ๋„)
    โ†“
์žฌ์ˆœ์œ„ํ™” (Cross-encoder, ์„ ํƒ์‚ฌํ•ญ)
    โ†“
์ตœ์ข… ๊ฒฐ๊ณผ ๋ฐ˜ํ™˜

๐Ÿ“ ํ…์ŠคํŠธ ๊ฒ€์ƒ‰ ํ”„๋กœ์„ธ์Šค

๊ฒ€์ƒ‰ ์ฟผ๋ฆฌ ์ž…๋ ฅ (POST /v1/search/text)
    โ†“
ํ…์ŠคํŠธ ๊ฒ€์ƒ‰ ์‹คํ–‰ (ํ‚ค์›Œ๋“œ ๋งค์นญ)
    โ†“
ํ•˜์ด๋ผ์ดํŒ… ์ฒ˜๋ฆฌ (์„ ํƒ์‚ฌํ•ญ)
    โ†“
์ตœ์ข… ๊ฒฐ๊ณผ ๋ฐ˜ํ™˜

๐ŸŽฏ ์žฌ์ˆœ์œ„ํ™” ํ”„๋กœ์„ธ์Šค

์ดˆ๊ธฐ ๊ฒ€์ƒ‰ ๊ฒฐ๊ณผ (์ƒ์œ„ 100๊ฐœ)
    โ†“
Cross-encoder ๋ชจ๋ธ ๋กœ๋“œ:
โ””โ”€โ”€ dragonkue/bge-reranker-v2-m3-ko
    โ†“
์ฟผ๋ฆฌ-๋ฌธ์„œ ์Œ ์ ์ˆ˜ ๊ณ„์‚ฐ
    โ†“
๋ฐฐ์น˜ ์ฒ˜๋ฆฌ (32๊ฐœ์”ฉ)
    โ†“
์ ์ˆ˜ ๊ธฐ๋ฐ˜ ์žฌ์ •๋ ฌ
    โ†“
์ตœ์ข… ์ƒ์œ„ ๊ฒฐ๊ณผ ๋ฐ˜ํ™˜

๏ฟฝ๐Ÿš€ ์ฃผ์š” ๊ธฐ๋Šฅ ๋ฐ ํŠน์žฅ์ 

๋ฌธ์„œ ์ฒ˜๋ฆฌ ๋Šฅ๋ ฅ

  • 50MB ๋Œ€์šฉ๋Ÿ‰ ํŒŒ์ผ ์ง€์›
  • PDF, DOCX, PPTX, MD, TXT ๋“ฑ ๋‹ค์–‘ํ•œ ํ˜•์‹
  • ์ด๋ฏธ์ง€ ์ถ”์ถœ ๋ฐ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ ๋ณด์กด
  • ์ค‘๋ณต ๋ฌธ์„œ ์ž๋™ ๊ฐ์ง€ (SHA-256 ํ•ด์‹œ ๊ธฐ๋ฐ˜)
  • ์ŠคํŠธ๋ฆฌ๋ฐ ์ฒ˜๋ฆฌ: ๋ฉ”๋ชจ๋ฆฌ ํšจ์œจ์  ๋Œ€์šฉ๋Ÿ‰ ํŒŒ์ผ ์ฒ˜๋ฆฌ

๊ฒ€์ƒ‰ ์„ฑ๋Šฅ

  • 200ms ์ดํ•˜ ํ‰๊ท  ์‘๋‹ต ์‹œ๊ฐ„
  • ํ•˜์ด๋ธŒ๋ฆฌ๋“œ ๊ฒ€์ƒ‰์œผ๋กœ ์ •ํ™•๋„ ํ–ฅ์ƒ
  • ์žฌ์ˆœ์œ„ํ™”๋ฅผ ํ†ตํ•œ ๊ฒฐ๊ณผ ํ’ˆ์งˆ ์ตœ์ ํ™”
  • ๋™์‹œ ์š”์ฒญ ์ฒ˜๋ฆฌ (์Šค๋กœํ‹€๋ง ์ง€์›)
  • ์บ์‹ฑ ์‹œ์Šคํ…œ: ์ž„๋ฒ ๋”ฉ ๋ฐ ์žฌ์ˆœ์œ„ํ™” ๊ฒฐ๊ณผ ์บ์‹ฑ

๊ฐœ๋ฐœ์ž ์นœํ™”์„ฑ

  • OpenAI SDK ์™„์ „ ํ˜ธํ™˜
  • Swagger/ReDoc ์ž๋™ ๋ฌธ์„œํ™”
  • Docker ์ปจํ…Œ์ด๋„ˆํ™” ์ง€์›
  • ํ™˜๊ฒฝ๋ณ„ ์„ค์ • ๋ถ„๋ฆฌ (dev/staging/prod)
  • ๋ชจ๋“ˆํ˜• ์•„ํ‚คํ…์ฒ˜: ํ”Œ๋Ÿฌ๊ทธ์ธ ๋ฐฉ์‹ ๋ฐฑ์—”๋“œ ํ™•์žฅ

์šด์˜ ์•ˆ์ •์„ฑ

  • GPU ๋ฉ”๋ชจ๋ฆฌ ์ตœ์ ํ™”
  • ์ž๋™ ํŒŒ์ผ ์ •๋ฆฌ
  • ํ—ฌ์Šค ์ฒดํฌ ๋ฐ ๋ชจ๋‹ˆํ„ฐ๋ง
  • ์—๋Ÿฌ ์ฒ˜๋ฆฌ ๋ฐ ๋กœ๊น…
  • ๋ฐฑ์—… ๋ฐ ๋ณต๊ตฌ: ๋ฐ์ดํ„ฐ ๋ฌด๊ฒฐ์„ฑ ๋ณด์žฅ

๐Ÿ’ผ ๋น„์ฆˆ๋‹ˆ์Šค ๋ชจ๋ธ ๋ฐ ์ˆ˜์ตํ™”

๋ผ์ด์„ ์Šค ๋ชจ๋ธ

  1. ์˜คํ”ˆ์†Œ์Šค (MIT): ๊ธฐ๋ณธ ๊ธฐ๋Šฅ ๋ฌด๋ฃŒ ์ œ๊ณต
  2. ์—”ํ„ฐํ”„๋ผ์ด์ฆˆ: ๊ณ ๊ธ‰ ๊ธฐ๋Šฅ ๋ฐ ๊ธฐ์ˆ  ์ง€์›
  3. ํด๋ผ์šฐ๋“œ SaaS: ๊ด€๋ฆฌํ˜• ์„œ๋น„์Šค ์ œ๊ณต
  4. ์ปจ์„คํŒ…: ๊ตฌ์ถ• ๋ฐ ์ปค์Šคํ„ฐ๋งˆ์ด์ง• ์„œ๋น„์Šค

๊ฒฝ์Ÿ ์šฐ์œ„

  • ํ•œ๊ตญ์–ด ํŠนํ™”: ๊ธ€๋กœ๋ฒŒ ์†”๋ฃจ์…˜ ๋Œ€๋น„ ํ•œ๊ตญ์–ด ์ฒ˜๋ฆฌ ์šฐ์ˆ˜
  • ๋น„์šฉ ํšจ์œจ์„ฑ: OpenAI API ๋Œ€๋น„ 90% ๋น„์šฉ ์ ˆ๊ฐ
  • ์˜จํ”„๋ ˆ๋ฏธ์Šค: ๋ฐ์ดํ„ฐ ๋ณด์•ˆ ๋ฐ ๊ทœ์ œ ์ค€์ˆ˜
  • ํ™•์žฅ์„ฑ: ๋ชจ๋“ˆํ˜• ์•„ํ‚คํ…์ฒ˜๋กœ ์œ ์—ฐํ•œ ํ™•์žฅ

๐Ÿ›ฃ๏ธ ๋กœ๋“œ๋งต ๋ฐ ๋ฐœ์ „ ๋ฐฉํ–ฅ

๋‹จ๊ธฐ ๋ชฉํ‘œ (3-6๊ฐœ์›”)

  • URL ํฌ๋กค๋ง ์‹œ์Šคํ…œ ๊ตฌ์ถ•
  • ๊ณ ๊ธ‰ ๋ฐ์ดํ„ฐ ๊ด€๋ฆฌ API ํ™•์žฅ
  • ๋ชจ๋‹ˆํ„ฐ๋ง & ๋ถ„์„ ๋Œ€์‹œ๋ณด๋“œ
  • ์ƒˆ๋กœ์šด ๋ฐฑ์—”๋“œ ์ถ”๊ฐ€ (OpenSearch, Elasticsearch)

์ค‘๊ธฐ ๋ชฉํ‘œ (6-12๊ฐœ์›”)

  • MCP(Model Context Protocol) ์ง€์›
  • AI ์—์ด์ „ํŠธ ๊ธฐ๋Šฅ (์งˆ์˜์‘๋‹ต, ์š”์•ฝ)
  • ์™ธ๋ถ€ ๋ฐ์ดํ„ฐ ์†Œ์Šค ์—ฐ๊ณ„
  • Kubernetes ๋ฐฐํฌ ์ตœ์ ํ™”

์žฅ๊ธฐ ๋ชฉํ‘œ (1-2๋…„)

  • ๋ฉ€ํ‹ฐ๋ชจ๋‹ฌ ์ง€์› (์ด๋ฏธ์ง€, ์Œ์„ฑ)
  • ์‹ค์‹œ๊ฐ„ ์ŠคํŠธ๋ฆฌ๋ฐ ๊ฒ€์ƒ‰
  • ์—ฐํ•ฉ ํ•™์Šต ์ง€์›
  • ๊ธ€๋กœ๋ฒŒ ์‹œ์žฅ ์ง„์ถœ

๏ฟฝ ๊ธฐ์ˆ  ์Šคํƒ ์ƒ์„ธ

๋ฐฑ์—”๋“œ ํ”„๋ ˆ์ž„์›Œํฌ

  • FastAPI: ๊ณ ์„ฑ๋Šฅ ๋น„๋™๊ธฐ ์›น ํ”„๋ ˆ์ž„์›Œํฌ
  • Pydantic: ๋ฐ์ดํ„ฐ ๊ฒ€์ฆ ๋ฐ ์„ค์ • ๊ด€๋ฆฌ
  • Uvicorn: ASGI ์„œ๋ฒ„
  • Python 3.11: ์ตœ์‹  ์–ธ์–ด ๊ธฐ๋Šฅ ํ™œ์šฉ

๋ฌธ์„œ ์ฒ˜๋ฆฌ ์—”์ง„

  • Marker: ๊ณ ์† PDF ๋ณ€ํ™˜ (GPU ๊ฐ€์†)
  • Docling: ๋‹ค์ค‘ ํ˜•์‹ ์ง€์› (IBM Research)
  • LangChain: ํ…์ŠคํŠธ ์ฒญํ‚น ๋ฐ ๋ถ„ํ• 
  • Pillow: ์ด๋ฏธ์ง€ ์ฒ˜๋ฆฌ ๋ฐ ์ถ”์ถœ

์ž„๋ฒ ๋”ฉ ๋ชจ๋ธ

  • KURE-v1: ํ•œ๊ตญ์–ด ํŠนํ™” ์ž„๋ฒ ๋”ฉ (NLPAI Lab)
  • KoE5: ํ•œ๊ตญ์–ด E5 ๋ชจ๋ธ
  • Arctic-embed-ko: ๋‹ค๊ตญ์–ด ์ž„๋ฒ ๋”ฉ
  • Sentence-Transformers: ๋ชจ๋ธ ๋กœ๋”ฉ ๋ฐ ์ถ”๋ก 

๋ฒกํ„ฐ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค

  • Qdrant: ๊ณ ์„ฑ๋Šฅ ๋ฒกํ„ฐ ๊ฒ€์ƒ‰ (Rust ๊ธฐ๋ฐ˜)
  • Milvus: ํ™•์žฅ ๊ฐ€๋Šฅํ•œ ๋ฒกํ„ฐ DB
  • Chroma: ๊ฒฝ๋Ÿ‰ ๋ฒกํ„ฐ ์Šคํ† ์–ด
  • Weaviate: ๊ทธ๋ž˜ํ”„ ๊ธฐ๋ฐ˜ ๋ฒกํ„ฐ DB

ํ…์ŠคํŠธ ๊ฒ€์ƒ‰ ์—”์ง„

  • MeiliSearch: ๋น ๋ฅธ ์ „๋ฌธ ๊ฒ€์ƒ‰ (Rust ๊ธฐ๋ฐ˜)
  • OpenSearch: ๋ถ„์‚ฐ ๊ฒ€์ƒ‰ ์—”์ง„
  • Elasticsearch: ์—”ํ„ฐํ”„๋ผ์ด์ฆˆ ๊ฒ€์ƒ‰
  • Solr: Apache ๊ฒ€์ƒ‰ ํ”Œ๋žซํผ

์žฌ์ˆœ์œ„ํ™” ๋ชจ๋ธ

  • BGE-Reranker-v2-m3-ko: ํ•œ๊ตญ์–ด ํŠนํ™” Cross-encoder
  • BGE-M3: ๋‹ค๊ตญ์–ด ์žฌ์ˆœ์œ„ํ™” ๋ชจ๋ธ
  • Custom Rerankers: ๋„๋ฉ”์ธ ํŠนํ™” ๋ชจ๋ธ ์ง€์›

๋ชจ๋‹ˆํ„ฐ๋ง & ๋กœ๊น…

  • Python Logging: ๊ตฌ์กฐํ™”๋œ ๋กœ๊ทธ ๊ด€๋ฆฌ
  • Performance Metrics: ์‘๋‹ต ์‹œ๊ฐ„ ๋ฐ ์ฒ˜๋ฆฌ๋Ÿ‰ ์ถ”์ 
  • Health Checks: ์„œ๋น„์Šค ์ƒํƒœ ๋ชจ๋‹ˆํ„ฐ๋ง
  • Error Tracking: ์˜ˆ์™ธ ๋ฐ ์˜ค๋ฅ˜ ์ถ”์ 

์ €์žฅ ์‹œ์Šคํ…œ

  • ๊ณ„์ธตํ™” ํŒŒ์ผ ์‹œ์Šคํ…œ: ํƒ€์ž…๋ณ„ ์ž๋™ ๋ถ„๋ฅ˜
  • ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ DB: SQLite/PostgreSQL ์ง€์›
  • ์บ์‹œ ์‹œ์Šคํ…œ: ๋ฉ”๋ชจ๋ฆฌ ๊ธฐ๋ฐ˜ ๊ฒฐ๊ณผ ์บ์‹ฑ
  • ๋ฐฑ์—… ์ „๋žต: ์ž๋™ ๋ฐ์ดํ„ฐ ๋ฐฑ์—…

๐Ÿ”„ ๋ฐ์ดํ„ฐ ํ”Œ๋กœ์šฐ ๋ฐ ์‹œ์Šคํ…œ ํ†ตํ•ฉ

์ „์ฒด ๋ฐ์ดํ„ฐ ํ”Œ๋กœ์šฐ

๐Ÿ“ฑ ํด๋ผ์ด์–ธํŠธ โ†’ ๐ŸŒ API Gateway โ†’ ๐Ÿ”ง ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง โ†’ ๐Ÿ’พ ๋ฐ์ดํ„ฐ ๋ ˆ์ด์–ด
    โ†‘                    โ†“                    โ†“                โ†“
๐Ÿ“Š ์‘๋‹ต ๊ฒฐ๊ณผ โ† ๐Ÿ” ๊ฒ€์ƒ‰ ๊ฒฐ๊ณผ โ† โšก ์ฒ˜๋ฆฌ ์™„๋ฃŒ โ† ๐Ÿ’ฟ ๋ฐ์ดํ„ฐ ์ €์žฅ

์„œ๋น„์Šค ๊ฐ„ ํ†ต์‹  ํŒจํ„ด

๐Ÿ”— ๋™๊ธฐ ํ†ต์‹ 

  • API ์š”์ฒญ/์‘๋‹ต: FastAPI ๋ผ์šฐํ„ฐ โ†’ ์„œ๋น„์Šค ๋ ˆ์ด์–ด
  • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ฟผ๋ฆฌ: ์„œ๋น„์Šค โ†’ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค
  • ๋ชจ๋ธ ์ถ”๋ก : ์ž„๋ฒ ๋”ฉ/์žฌ์ˆœ์œ„ํ™” ์„œ๋น„์Šค

โšก ๋น„๋™๊ธฐ ์ฒ˜๋ฆฌ

  • ๋ฌธ์„œ ๋ณ€ํ™˜: ๋ฐฑ๊ทธ๋ผ์šด๋“œ ํƒœ์Šคํฌ
  • ๋ฐฐ์น˜ ์ž„๋ฒ ๋”ฉ: GPU ๋ฉ”๋ชจ๋ฆฌ ์ตœ์ ํ™”
  • ๋ณ‘๋ ฌ ๊ฒ€์ƒ‰: ๋ฒกํ„ฐ + ํ…์ŠคํŠธ ๋™์‹œ ์‹คํ–‰

๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ ์ „๋žต

๐Ÿง  GPU ๋ฉ”๋ชจ๋ฆฌ ์ตœ์ ํ™”

๋ชจ๋ธ ๋กœ๋”ฉ โ†’ ๋ฉ”๋ชจ๋ฆฌ ํ’€ ๊ด€๋ฆฌ โ†’ ๋ฐฐ์น˜ ์ฒ˜๋ฆฌ โ†’ ์ž๋™ ์ •๋ฆฌ
    โ†“              โ†“              โ†“           โ†“
VRAM ํ• ๋‹น โ†’ ๋ฐฐ์น˜ ํฌ๊ธฐ ์กฐ์ • โ†’ ์ถ”๋ก  ์‹คํ–‰ โ†’ ๋ฉ”๋ชจ๋ฆฌ ํ•ด์ œ

๐Ÿ’พ ์‹œ์Šคํ…œ ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ

  • ์ŠคํŠธ๋ฆฌ๋ฐ ํŒŒ์ผ ์ฒ˜๋ฆฌ: ๋Œ€์šฉ๋Ÿ‰ ํŒŒ์ผ ์ฒญํฌ ๋‹จ์œ„ ์ฒ˜๋ฆฌ
  • ์บ์‹œ ๊ด€๋ฆฌ: LRU ๊ธฐ๋ฐ˜ ์ž๋™ ์บ์‹œ ์ •๋ฆฌ
  • ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰์…˜: ๋Œ€์šฉ๋Ÿ‰ ๊ฐ์ฒด ์ฆ‰์‹œ ํ•ด์ œ

ํ™•์žฅ์„ฑ ์„ค๊ณ„

๐Ÿ”„ ์ˆ˜ํ‰ ํ™•์žฅ

  • ๋กœ๋“œ ๋ฐธ๋Ÿฐ์‹ฑ: ๋‹ค์ค‘ ์ธ์Šคํ„ด์Šค ์ง€์›
  • ์ƒํƒœ ๋น„์ €์žฅ: ์„ธ์…˜ ๋…๋ฆฝ์  ์„ค๊ณ„
  • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ƒค๋”ฉ: ๋Œ€์šฉ๋Ÿ‰ ๋ฐ์ดํ„ฐ ๋ถ„์‚ฐ

๐Ÿ“ˆ ์ˆ˜์ง ํ™•์žฅ

  • GPU ํด๋Ÿฌ์Šคํ„ฐ: ๋‹ค์ค‘ GPU ํ™œ์šฉ
  • ๋ฉ”๋ชจ๋ฆฌ ํ™•์žฅ: ๋Œ€์šฉ๋Ÿ‰ RAM ์ง€์›
  • ์Šคํ† ๋ฆฌ์ง€ ํ™•์žฅ: ๋ถ„์‚ฐ ํŒŒ์ผ ์‹œ์Šคํ…œ

๋ณด์•ˆ ๋ฐ ์ธ์ฆ

๐Ÿ” API ๋ณด์•ˆ

  • Bearer ํ† ํฐ: JWT ๊ธฐ๋ฐ˜ ์ธ์ฆ
  • CORS ์ •์ฑ…: ๋„๋ฉ”์ธ ๊ธฐ๋ฐ˜ ์ ‘๊ทผ ์ œ์–ด
  • Rate Limiting: ์š”์ฒญ ๋นˆ๋„ ์ œํ•œ
  • Input Validation: ์ž…๋ ฅ ๋ฐ์ดํ„ฐ ๊ฒ€์ฆ

๐Ÿ›ก๏ธ ๋ฐ์ดํ„ฐ ๋ณด์•ˆ

  • ํŒŒ์ผ ํ•ด์‹œ ๊ฒ€์ฆ: ๋ฌด๊ฒฐ์„ฑ ๋ณด์žฅ
  • ์•”ํ˜ธํ™” ์ €์žฅ: ๋ฏผ๊ฐ ๋ฐ์ดํ„ฐ ๋ณดํ˜ธ
  • ์ ‘๊ทผ ๋กœ๊ทธ: ๊ฐ์‚ฌ ์ถ”์ 
  • ๋ฐฑ์—… ์•”ํ˜ธํ™”: ๋ฐ์ดํ„ฐ ์œ ์ถœ ๋ฐฉ์ง€

๋ชจ๋‹ˆํ„ฐ๋ง ๋ฐ ๊ด€์ฐฐ์„ฑ

๐Ÿ“Š ๋ฉ”ํŠธ๋ฆญ ์ˆ˜์ง‘

์š”์ฒญ ์ˆ˜์‹  โ†’ ์ฒ˜๋ฆฌ ์‹œ๊ฐ„ ์ธก์ • โ†’ ์„ฑ๋Šฅ ์ง€ํ‘œ ์ˆ˜์ง‘ โ†’ ๋Œ€์‹œ๋ณด๋“œ ํ‘œ์‹œ
    โ†“              โ†“                โ†“              โ†“
๋กœ๊ทธ ๊ธฐ๋ก โ†’ ์—๋Ÿฌ ์ถ”์  โ†’ ์•Œ๋ฆผ ๋ฐœ์†ก โ†’ ์ž๋™ ๋ณต๊ตฌ

๐Ÿ” ๋กœ๊ทธ ๊ด€๋ฆฌ

  • ๊ตฌ์กฐํ™” ๋กœ๊น…: JSON ํ˜•ํƒœ ๋กœ๊ทธ
  • ๋ ˆ๋ฒจ๋ณ„ ๋ถ„๋ฅ˜: DEBUG, INFO, WARNING, ERROR
  • ์ปจํ…์ŠคํŠธ ์ถ”์ : ์š”์ฒญ ID ๊ธฐ๋ฐ˜ ์ถ”์ 
  • ๋กœ๊ทธ ์ง‘๊ณ„: ์ค‘์•™ํ™”๋œ ๋กœ๊ทธ ๊ด€๋ฆฌ

๏ฟฝ๐Ÿ“Š ๊ธฐ์ˆ ์  ์„ฑ๊ณผ

์„ฑ๋Šฅ ์ง€ํ‘œ

  • 82๊ฐœ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค 100% ํ†ต๊ณผ
  • 200ms ์ดํ•˜ ํ‰๊ท  ์‘๋‹ต ์‹œ๊ฐ„
  • GPU ๋ฉ”๋ชจ๋ฆฌ ํšจ์œจ์„ฑ 80% ํ™œ์šฉ๋ฅ 
  • ๋™์‹œ ์ฒ˜๋ฆฌ ์ตœ๋Œ€ 8๊ฐœ ์š”์ฒญ
  • ์ฒ˜๋ฆฌ๋Ÿ‰: ์ดˆ๋‹น 5-10๊ฐœ ๋ฌธ์„œ ์ฒ˜๋ฆฌ
  • ์ •ํ™•๋„: ํ•˜์ด๋ธŒ๋ฆฌ๋“œ ๊ฒ€์ƒ‰ 90%+ ์ •ํ™•๋„

ํ’ˆ์งˆ ๋ณด์ฆ

  • ์ข…ํ•ฉ ํ…Œ์ŠคํŠธ ์Šค์œ„ํŠธ ๊ตฌ์ถ•
  • ๋ณด์•ˆ ํ…Œ์ŠคํŠธ (SQL ์ธ์ ์…˜, XSS ๋ฐฉ์–ด)
  • ์„ฑ๋Šฅ ํ…Œ์ŠคํŠธ ์ž๋™ํ™”
  • ์ฝ”๋“œ ํ’ˆ์งˆ ๊ด€๋ฆฌ
  • CI/CD ํŒŒ์ดํ”„๋ผ์ธ ์ค€๋น„
  • ๋ฌธ์„œํ™” ์ž๋™ ์ƒ์„ฑ

๐ŸŽฏ ๊ฒฐ๋ก 

Ragnaforge๋Š” ํ•œ๊ตญ ๊ธฐ์—…์˜ ๋ฌธ์„œ ์ง€๋Šฅํ™” ๋‹ˆ์ฆˆ๋ฅผ ์ •ํ™•ํžˆ ํŒŒ์•…ํ•˜๊ณ , ๊ธฐ์ˆ ์  ์šฐ์ˆ˜์„ฑ๊ณผ ๋น„์ฆˆ๋‹ˆ์Šค ์‹ค์šฉ์„ฑ์„ ๋ชจ๋‘ ๊ฐ–์ถ˜ ์ฐจ์„ธ๋Œ€ RAG ์†”๋ฃจ์…˜์ž…๋‹ˆ๋‹ค.

ํ•ต์‹ฌ ๊ฒฝ์Ÿ๋ ฅ:

  • ํ•œ๊ตญ์–ด ํŠนํ™” ์ฒ˜๋ฆฌ ๋Šฅ๋ ฅ
  • ์—”ํ„ฐํ”„๋ผ์ด์ฆˆ๊ธ‰ ์•ˆ์ •์„ฑ
  • OpenAI ํ˜ธํ™˜์„ฑ
  • ๋น„์šฉ ํšจ์œจ์„ฑ

์‹œ์žฅ ๊ธฐํšŒ:

  • ๊ธ‰์„ฑ์žฅํ•˜๋Š” ๊ธฐ์—… AI ๋„์ž… ์‹œ์žฅ
  • ๋ฐ์ดํ„ฐ ์ฃผ๊ถŒ ๋ฐ ๋ณด์•ˆ ๊ฐ•ํ™” ํŠธ๋ Œ๋“œ
  • ํ•œ๊ตญ์–ด ํŠนํ™” ์†”๋ฃจ์…˜ ๋ถ€์กฑ

Ragnaforge๋Š” ๊ธฐ์—…์˜ ๋””์ง€ํ„ธ ์ „ํ™˜์„ ๊ฐ€์†ํ™”ํ•˜๊ณ , ์ง€์‹ ๊ด€๋ฆฌ์˜ ํŒจ๋Ÿฌ๋‹ค์ž„์„ ํ˜์‹ ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฐ•๋ ฅํ•œ ํ”Œ๋žซํผ์œผ๋กœ ์ž๋ฆฌ์žก์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.