Ragnaforge๋ ํ๊ตญ์ด์ ํนํ๋ ์ฐจ์ธ๋ ํ์ด๋ธ๋ฆฌ๋ RAG(Retrieval-Augmented Generation) ์์คํ ์ผ๋ก, ๊ธฐ์ ์ ๋ฌธ์ ์ง๋ฅํ ๋ฐ ์ง์ ๊ด๋ฆฌ ํ์ ์ ์ํด ์ค๊ณ๋ ์ํฐํ๋ผ์ด์ฆ๊ธ ์๋ฃจ์ ์ ๋๋ค.
- ํ๊ตญ์ด ์ต์ ํ: KURE-v1, KoE5 ๋ฑ ํ๊ตญ์ด ํนํ ์๋ฒ ๋ฉ ๋ชจ๋ธ ์ง์
- ํ์ด๋ธ๋ฆฌ๋ ๊ฒ์: Vector ๊ฒ์๊ณผ Text ๊ฒ์์ ์ง๋ฅ์ ๊ฒฐํฉ์ผ๋ก ๊ฒ์ ์ ํ๋ ๊ทน๋ํ
- OpenAI ํธํ์ฑ: ๊ธฐ์กด OpenAI API ๊ธฐ๋ฐ ์์คํ ๊ณผ ์๋ฒฝ ํธํ
- ์ํฐํ๋ผ์ด์ฆ ์ค๋น: ํ์ฅ์ฑ, ๋ณด์์ฑ, ์์ ์ฑ์ ๊ณ ๋ คํ ๊ธฐ์ ์ฉ ์ํคํ ์ฒ
-
๋๊ธฐ์ ๋ฐ ๊ณต๊ณต๊ธฐ๊ด
- ๋์ฉ๋ ๋ฌธ์ ์ฒ๋ฆฌ ๋ฐ ์ง์ ๊ด๋ฆฌ ์์คํ ๊ตฌ์ถ
- ๋ด๋ถ ๋ฌธ์ ๊ฒ์ ๋ฐ ์ง์์๋ต ์์คํ
- ๊ท์ ๋ฐ ๋งค๋ด์ผ ์๋ํ ์์คํ
-
๊ธ์ต ๋ฐ ๋ฒ๋ฌด ๊ธฐ๊ด
- ๊ณ์ฝ์, ๋ฒ๋ น, ํ๋ก ๋ฑ ์ ๋ฌธ ๋ฌธ์ ๋ถ์
- ์ปดํ๋ผ์ด์ธ์ค ๋ฐ ๋ฆฌ์คํฌ ๊ด๋ฆฌ
- ๊ณ ๊ฐ ์๋ด ์๋ํ
-
์ฐ๊ตฌ๊ฐ๋ฐ ๊ธฐ๊ด
- ์ฐ๊ตฌ ๋ ผ๋ฌธ ๋ฐ ๊ธฐ์ ๋ฌธ์ ๋ถ์
- ํนํ ๊ฒ์ ๋ฐ ๋ถ์
- ์ง์ ๋ฒ ์ด์ค ๊ตฌ์ถ
-
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: ๊ณ์ธตํ๋ ํ์ผ ์ ์ฅ ๊ตฌ์กฐ
- ๋ค์ค ๋ณํ ์์ง: Marker(๊ณ ์), Docling(๊ณ ํ์ง) ์ง์
- ์ง๋ฅํ ์ฒญํน: ๋ฌธ์ ๊ตฌ์กฐ ์ธ์ ๊ธฐ๋ฐ ์ต์ ๋ถํ
- ๋ฉํ๋ฐ์ดํฐ ๊ด๋ฆฌ: ํ์ผ ์ ๋ณด, ํด์, ์ค๋ณต ๊ฒ์ฌ
- ์ด๋ฏธ์ง ์ฒ๋ฆฌ: ๋ฌธ์ ๋ด ์ด๋ฏธ์ง ์ถ์ถ ๋ฐ OCR
- ํ๊ตญ์ด ํนํ ๋ชจ๋ธ: KURE-v1, KoE5, Arctic-embed-ko
- ๋ฐฐ์น ์ต์ ํ: GPU ๋ฉ๋ชจ๋ฆฌ ํจ์จ์ ํ์ฉ (๋ฐฐ์น ํฌ๊ธฐ 128)
- ๋ค์ค ๋ฐฑ์๋: Qdrant, Milvus, Chroma, Weaviate ์ง์
- ์ค์๊ฐ ์ธ๋ฑ์ฑ: ๋ฌธ์ ์ ๋ก๋ ์ฆ์ ๊ฒ์ ๊ฐ๋ฅ
- ๋ฒกํฐ ๊ฒ์: ์๋ฏธ์ ์ ์ฌ๋ ๊ธฐ๋ฐ ๊ฒ์
- ํ ์คํธ ๊ฒ์: ํค์๋ ๊ธฐ๋ฐ ์ ํ ๋งค์นญ (MeiliSearch)
- ์ง๋ฅํ ๊ฒฐํฉ: ๊ฐ์ค์น ๊ธฐ๋ฐ ์ค์ฝ์ด ์ตํฉ
- ์ฌ์์ํ: Cross-encoder ๋ชจ๋ธ์ ํตํ ๊ฒฐ๊ณผ ํ์ง ํฅ์
- OpenAI ํธํ: ๊ธฐ์กด OpenAI SDK ๊ทธ๋๋ก ์ฌ์ฉ ๊ฐ๋ฅ
- RESTful API: ํ์ค HTTP API ์ ๊ณต
- ์ธ์ฆ & ๊ถํ: Bearer ํ ํฐ ๊ธฐ๋ฐ ๋ณด์
- ๋ชจ๋ํฐ๋ง: ์ฑ๋ฅ ๋ฉํธ๋ฆญ ๋ฐ ์ฌ์ฉ๋ ์ถ์
๐ ํ์ผ ์
๋ก๋ โ ๐ ์ค๋ณต ๊ฒ์ฌ โ ๐ ๋ฌธ์ ๋ณํ โ โ๏ธ ์ฒญํน โ ๐ง ์๋ฒ ๋ฉ โ ๐พ ์ ์ฅ โ ๐ ๊ฒ์ ๊ฐ๋ฅ
ํด๋ผ์ด์ธํธ ์์ฒญ (POST /v1/upload)
โ
ํ์ผ ํฌ๊ธฐ ๊ฒ์ฆ (์ต๋ 50MB)
โ
ํ์ผ ํ์ ๊ฒ์ฆ (PDF, DOCX, PPTX, MD, TXT)
โ
์์ ์ ์ฅ์์ ํ์ผ ์ ์ฅ
โ
SHA-256 ํด์ ๊ณ์ฐ
โ
์ค๋ณต ํ์ผ ๊ฒ์ฌ (๋ฐ์ดํฐ๋ฒ ์ด์ค)
โ
๊ณ ์ ํ์ผ ID ์์ฑ ๋ฐ ๋ฉํ๋ฐ์ดํฐ ์ ์ฅ
ํ์ผ ํ์
๋ถ์
โ
๋ณํ ๋ฐฉ๋ฒ ์ ํ:
โโโ PDF โ Marker (๊ณ ์) ๋๋ Docling (๊ณ ํ์ง)
โโโ DOCX/PPTX โ Docling
โโโ MD/TXT โ ์ง์ ์ฝ๊ธฐ
โ
๋งํฌ๋ค์ด ๋ณํ ์คํ
โ
์ด๋ฏธ์ง ์ถ์ถ (์ ํ์ฌํญ)
โ
๋ณํ ๊ฒฐ๊ณผ ๊ฒ์ฆ ๋ฐ ์ ์ฅ
๋งํฌ๋ค์ด ํ
์คํธ ์
๋ ฅ
โ
์ฒญํน ์ ๋ต ์ ํ:
โโโ recursive: ์ฌ๊ท์ ๋ถํ (๊ธฐ๋ณธ๊ฐ)
โโโ semantic: ์๋ฏธ ๋จ์ ๋ถํ
โโโ fixed: ๊ณ ์ ํฌ๊ธฐ ๋ถํ
โ
์ฒญํฌ ํฌ๊ธฐ ์ค์ (๊ธฐ๋ณธ 380์)
โ
์ค๋ฒ๋ฉ ์ค์ (๊ธฐ๋ณธ 70์)
โ
์ฒญํฌ ์์ฑ ๋ฐ ๋ฉํ๋ฐ์ดํฐ ์ถ๊ฐ
์ฒญํฌ ํ
์คํธ ๋ฐฐ์น ์ฒ๋ฆฌ
โ
์๋ฒ ๋ฉ ๋ชจ๋ธ ๋ก๋:
โโโ KURE-v1 (๊ธฐ๋ณธ๊ฐ)
โโโ KoE5
โโโ Arctic-embed-ko
โ
GPU ๋ฉ๋ชจ๋ฆฌ ์ต์ ํ (๋ฐฐ์น ํฌ๊ธฐ 128)
โ
๋ฒกํฐ ์๋ฒ ๋ฉ ์์ฑ
โ
์ ๊ทํ ๋ฐ ํ์ง ๊ฒ์ฆ
๋ฒกํฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ ์ฅ:
โโโ 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 ๋ฉ๋ชจ๋ฆฌ ์ต์ ํ
- ์๋ ํ์ผ ์ ๋ฆฌ
- ํฌ์ค ์ฒดํฌ ๋ฐ ๋ชจ๋ํฐ๋ง
- ์๋ฌ ์ฒ๋ฆฌ ๋ฐ ๋ก๊น
- ๋ฐฑ์ ๋ฐ ๋ณต๊ตฌ: ๋ฐ์ดํฐ ๋ฌด๊ฒฐ์ฑ ๋ณด์ฅ
- ์คํ์์ค (MIT): ๊ธฐ๋ณธ ๊ธฐ๋ฅ ๋ฌด๋ฃ ์ ๊ณต
- ์ํฐํ๋ผ์ด์ฆ: ๊ณ ๊ธ ๊ธฐ๋ฅ ๋ฐ ๊ธฐ์ ์ง์
- ํด๋ผ์ฐ๋ SaaS: ๊ด๋ฆฌํ ์๋น์ค ์ ๊ณต
- ์ปจ์คํ : ๊ตฌ์ถ ๋ฐ ์ปค์คํฐ๋ง์ด์ง ์๋น์ค
- ํ๊ตญ์ด ํนํ: ๊ธ๋ก๋ฒ ์๋ฃจ์ ๋๋น ํ๊ตญ์ด ์ฒ๋ฆฌ ์ฐ์
- ๋น์ฉ ํจ์จ์ฑ: OpenAI API ๋๋น 90% ๋น์ฉ ์ ๊ฐ
- ์จํ๋ ๋ฏธ์ค: ๋ฐ์ดํฐ ๋ณด์ ๋ฐ ๊ท์ ์ค์
- ํ์ฅ์ฑ: ๋ชจ๋ํ ์ํคํ ์ฒ๋ก ์ ์ฐํ ํ์ฅ
- URL ํฌ๋กค๋ง ์์คํ ๊ตฌ์ถ
- ๊ณ ๊ธ ๋ฐ์ดํฐ ๊ด๋ฆฌ API ํ์ฅ
- ๋ชจ๋ํฐ๋ง & ๋ถ์ ๋์๋ณด๋
- ์๋ก์ด ๋ฐฑ์๋ ์ถ๊ฐ (OpenSearch, Elasticsearch)
- MCP(Model Context Protocol) ์ง์
- AI ์์ด์ ํธ ๊ธฐ๋ฅ (์ง์์๋ต, ์์ฝ)
- ์ธ๋ถ ๋ฐ์ดํฐ ์์ค ์ฐ๊ณ
- Kubernetes ๋ฐฐํฌ ์ต์ ํ
- ๋ฉํฐ๋ชจ๋ฌ ์ง์ (์ด๋ฏธ์ง, ์์ฑ)
- ์ค์๊ฐ ์คํธ๋ฆฌ๋ฐ ๊ฒ์
- ์ฐํฉ ํ์ต ์ง์
- ๊ธ๋ก๋ฒ ์์ฅ ์ง์ถ
- 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 ๋ฉ๋ชจ๋ฆฌ ์ต์ ํ
- ๋ณ๋ ฌ ๊ฒ์: ๋ฒกํฐ + ํ ์คํธ ๋์ ์คํ
๋ชจ๋ธ ๋ก๋ฉ โ ๋ฉ๋ชจ๋ฆฌ ํ ๊ด๋ฆฌ โ ๋ฐฐ์น ์ฒ๋ฆฌ โ ์๋ ์ ๋ฆฌ
โ โ โ โ
VRAM ํ ๋น โ ๋ฐฐ์น ํฌ๊ธฐ ์กฐ์ โ ์ถ๋ก ์คํ โ ๋ฉ๋ชจ๋ฆฌ ํด์
- ์คํธ๋ฆฌ๋ฐ ํ์ผ ์ฒ๋ฆฌ: ๋์ฉ๋ ํ์ผ ์ฒญํฌ ๋จ์ ์ฒ๋ฆฌ
- ์บ์ ๊ด๋ฆฌ: LRU ๊ธฐ๋ฐ ์๋ ์บ์ ์ ๋ฆฌ
- ๊ฐ๋น์ง ์ปฌ๋ ์ : ๋์ฉ๋ ๊ฐ์ฒด ์ฆ์ ํด์
- ๋ก๋ ๋ฐธ๋ฐ์ฑ: ๋ค์ค ์ธ์คํด์ค ์ง์
- ์ํ ๋น์ ์ฅ: ์ธ์ ๋ ๋ฆฝ์ ์ค๊ณ
- ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ค๋ฉ: ๋์ฉ๋ ๋ฐ์ดํฐ ๋ถ์ฐ
- GPU ํด๋ฌ์คํฐ: ๋ค์ค GPU ํ์ฉ
- ๋ฉ๋ชจ๋ฆฌ ํ์ฅ: ๋์ฉ๋ RAM ์ง์
- ์คํ ๋ฆฌ์ง ํ์ฅ: ๋ถ์ฐ ํ์ผ ์์คํ
- 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๋ ๊ธฐ์ ์ ๋์งํธ ์ ํ์ ๊ฐ์ํํ๊ณ , ์ง์ ๊ด๋ฆฌ์ ํจ๋ฌ๋ค์์ ํ์ ํ ์ ์๋ ๊ฐ๋ ฅํ ํ๋ซํผ์ผ๋ก ์๋ฆฌ์ก์ ๊ฒ์ ๋๋ค.