๐Ÿ“… 2026-08-04 โœ๏ธ AI ๊ธฐ์ˆ  ๋ธ”๋กœ๊ทธ โฑ๏ธ ์•ฝ 9๋ถ„ ๋ถ„๋Ÿ‰ ๐Ÿท๏ธ RAG๋ฉ€ํ‹ฐ๋ชจ๋‹ฌFAISS

ํ”ฝ์…€ ๋„ค์ดํ‹ฐ๋ธŒ RAG๋กœ ์‹œ๊ฐ ๋ฌธ์„œ ๊ฒ€์ƒ‰ ์‹œ์Šคํ…œ ๋งŒ๋“ค๊ธฐ โ€” ํ…์ŠคํŠธ ์—†์ด ์ด๋ฏธ์ง€๋กœ ๋ฌธ์„œ๋ฅผ ์ธ๋ฑ์‹ฑํ•˜๋Š” ์‹ค์ „ ๊ฐ€์ด๋“œ

๋ฌธ์„œ๋ฅผ HTML๋กœ ํŒŒ์‹ฑํ•˜์ง€ ์•Š๊ณ , PDF์—์„œ ํ…์ŠคํŠธ๋ฅผ ์ถ”์ถœํ•˜์ง€ ์•Š๊ณ , ์ž˜๊ฒŒ ์ฒญํฌ(chunk) ์ž˜๋ผ ๋‚˜๋ˆ„์ง€๋„ ์•Š๊ณ ๋„ ๊ฒ€์ƒ‰ ์‹œ์Šคํ…œ์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค๋ฉด ์–ด๋–จ๊นŒ์š”? ์ด ๊ธ€์—์„œ๋Š” ํ”ฝ์…€ ๋„ค์ดํ‹ฐ๋ธŒ RAG๋ผ๋Š” ๋‹ค์†Œ ๋„๋ฐœ์ ์ธ ์•„์ด๋””์–ด๋ฅผ ์‹ค์ œ ์ฝ”๋“œ๋กœ ๊ตฌํ˜„ํ•˜๋Š” ๊ณผ์ •์„ ๋‹จ๊ณ„๋ณ„๋กœ ๋”ฐ๋ผ๊ฐ€ ๋ด…๋‹ˆ๋‹ค.

RAG๊ฐ€ ์ง๋ฉดํ•œ ํ˜„์‹ค ๋ฌธ์ œ

๊ฒ€์ƒ‰ ์ฆ๊ฐ• ์ƒ์„ฑ(RAG, Retrieval-Augmented Generation)์€ ์™ธ๋ถ€ ๋ฌธ์„œ๋ฅผ ๊ฒ€์ƒ‰ํ•œ ๋’ค ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ํฐ ์–ธ์–ด ๋ชจ๋ธ(LLM)์— ํ•จ๊ป˜ ๋„ฃ์–ด ๋‹ต๋ณ€์„ ๋งŒ๋“œ๋Š” AI ํ”„๋ ˆ์ž„์›Œํฌ์ž…๋‹ˆ๋‹ค. Google Cloud, AWS, IBM, NVIDIA ๊ฐ™์€ ์ฃผ์š” ํ”Œ๋ ˆ์ด์–ด๊ฐ€ ๋ชจ๋‘ RAG๋ฅผ ํ•ต์‹ฌ ๊ธฐ์ˆ ๋กœ ์ฑ„ํƒํ•˜๋ฉด์„œ ๋น ๋ฅด๊ฒŒ ํ‘œ์ค€์ด ๋˜์–ด๊ฐ€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

ํ•˜์ง€๋งŒ ์‹ค์ œ ๋ฌธ์„œ ์ฝ”ํผ์Šค์— RAG๋ฅผ ์ ์šฉํ•˜๋ ค๊ณ  ํ•˜๋ฉด ๊ณง๋ฐ”๋กœ ํ˜„์‹ค์  ๋‚œ๊ด€์— ๋ถ€๋”ชํž™๋‹ˆ๋‹ค.

์ฆ‰, ํ…์ŠคํŠธ ์ถ”์ถœ ์ž์ฒด๊ฐ€ ๊ฒ€์ƒ‰ ํ’ˆ์งˆ์˜ ๋ณ‘๋ชฉ์ด ๋˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์Šต๋‹ˆ๋‹ค.

ํ”ฝ์…€ ๋„ค์ดํ‹ฐ๋ธŒ ์ ‘๊ทผ๋ฒ•์ด๋ž€?

ํ”ฝ์…€ ๋„ค์ดํ‹ฐ๋ธŒ(Pixel-Native)๋ž€ ๋ฌธ์„œ๋ฅผ ํ…์ŠคํŠธ๋กœ ๋ฐ”๊พธ์ง€ ์•Š๊ณ , ์ฒ˜์Œ๋ถ€ํ„ฐ ์ด๋ฏธ์ง€ ๊ทธ๋Œ€๋กœ ๋‹ค๋ฃจ๋Š” ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค. ์‚ฌ๋žŒ์€ ์ฑ…์˜ ํŽ˜์ด์ง€๋ฅผ OCR๋กœ ๋‹ค์‹œ ํƒ€์ดํ•‘ํ•˜์ง€ ์•Š์•„๋„ ์ฝ์„ ์ˆ˜ ์žˆ๋“ฏ์ด, AI ๋ชจ๋ธ๋„ ํ™”๋ฉด์„ ๋ณด๋Š” ๊ฒƒ๋งŒ์œผ๋กœ ๋‚ด์šฉ์„ ์ดํ•ดํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด ์ ‘๊ทผ๋ฒ•์˜ ํ•ต์‹ฌ ํ†ต์ฐฐ์€ ๋‹จ์ˆœํ•ฉ๋‹ˆ๋‹ค.

๐Ÿ’ก ํ•ต์‹ฌ ์•„์ด๋””์–ด โ€” "์‚ฌ์ดํŠธ๋งˆ๋‹ค ๋‹ฌ๋ผ๋ถ™๋Š” ๊ธ€๋ฃจ ์ฝ”๋“œ์ธ ํŒŒ์„œ ๋Œ€์‹ , ๋ Œ๋”๋Ÿฌ ํ•œ ๊ฐœ๋กœ ๋ชจ๋“  ๋ฌธ์„œ ์œ ํ˜•์„ ๊ฐ™์€ ๊ฒฝ๋กœ๋กœ ์ฒ˜๋ฆฌํ•˜์ž." HTML์ด๋“  PDF๋“  ์Šค์บ”๋œ ํŒฉ์Šค๋“  ๊ฒฐ๊ตญ ๋ˆˆ์œผ๋กœ ๋ณด์ด๋Š” ํ”ฝ์…€ ๋ฐฐ์—ด์€ ๋™์ผํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

ํ”ฝ์…€ ๋„ค์ดํ‹ฐ๋ธŒ RAG์˜ ๋ถ€์ˆ˜ ํšจ๊ณผ๋Š” ์˜์™ธ๋กœ ํฝ๋‹ˆ๋‹ค. ํ‘œ ๊ตฌ์กฐ, ๊ทธ๋ฆผ, ์ˆ˜์‹, ์ฝ”๋“œ ๋ธ”๋ก, ์‹œ๊ฐ์  ๋ ˆ์ด์•„์›ƒ์ด ๋ชจ๋‘ ๋ณด์กด๋˜๊ธฐ ๋•Œ๋ฌธ์— ๋‹จ์ˆœํ•œ ํ…์ŠคํŠธ RAG๊ฐ€ ๋†“์น˜๋˜ ์ •๋ณด๋ฅผ ์ž˜ ์žก์•„๋ƒ…๋‹ˆ๋‹ค.

5๋‹จ๊ณ„ ํŒŒ์ดํ”„๋ผ์ธ ํ•œ๋ˆˆ์— ๋ณด๊ธฐ

์ด ํŠœํ† ๋ฆฌ์–ผ์˜ ์ „์ฒด ํŒŒ์ดํ”„๋ผ์ธ์€ ๋‹ค์Œ ๋‹ค์„ฏ ๋‹จ๊ณ„๋กœ ์š”์•ฝ๋ฉ๋‹ˆ๋‹ค.

๋‹จ๊ณ„ํ•˜๋Š” ์ผํ•ต์‹ฌ ๋„๊ตฌ
โ‘  ๋ Œ๋”๋ฌธ์„œ๋ฅผ ์Šคํฌ๋ฆฐ์ƒท์œผ๋กœ ๋ณ€ํ™˜Playwright, PyMuPDF
โ‘ก ํƒ€์ผ๋ง๊ธด ์ด๋ฏธ์ง€๋ฅผ ๊ฒน์น˜๋Š” ์กฐ๊ฐ์œผ๋กœ ์ž๋ฆ„Pillow
โ‘ข ์ž„๋ฒ ๋“œํƒ€์ผ์„ ๋ฒกํ„ฐ๋กœ ๋ณ€ํ™˜SigLIP / CLIP / Qwen3-VL
โ‘ฃ ์ธ๋ฑ์‹ฑ๋ฒกํ„ฐ๋ฅผ ๊ฒ€์ƒ‰ ๊ฐ€๋Šฅํ•œ ๊ตฌ์กฐ๋กœ ์ €์žฅFAISS + BM25
โ‘ค ๊ฒ€์ƒ‰/์‘๋‹ต์ฟผ๋ฆฌ์— ๋งž๋Š” ๋ฌธ์„œยทํƒ€์ผ ์ฐพ์•„ ๋‹ต๋ณ€FastAPI, VLM

1๋‹จ๊ณ„. ๋ฌธ์„œ๋ฅผ ์Šคํฌ๋ฆฐ์ƒท ํƒ€์ผ๋กœ ๋ Œ๋”๋ง

๋จผ์ € ๋ชจ๋“  ๋ฌธ์„œ๋ฅผ ์ด๋ฏธ์ง€๋กœ ๋งŒ๋“ญ๋‹ˆ๋‹ค. ์›น ํŽ˜์ด์ง€๋Š” ํ—ค๋“œ๋ฆฌ์Šค ๋ธŒ๋ผ์šฐ์ €๋กœ, PDF๋Š” PyMuPDF๋กœ ํŽ˜์ด์ง€๋ณ„ ๋น„ํŠธ๋งต์œผ๋กœ ๋ณ€ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ๋™์ž‘ํ•˜์ง€ ์•Š๋Š” ํ™˜๊ฒฝ์„ ์œ„ํ•œ ํ…์ŠคํŠธ ํด๋ฐฑ๊ณผ ์˜คํ”„๋ผ์ธ PDF ํ•ฉ์„ฑ๊ธฐ๊นŒ์ง€ ํ•จ๊ป˜ ์ œ๊ณตํ•ด ํŒŒ์ดํ”„๋ผ์ธ์ด ์–ด๋–ค ์ƒํ™ฉ์—์„œ๋„ ๋ฉˆ์ถ”์ง€ ์•Š๋„๋ก ์„ค๊ณ„ํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ํ•œ ํŽ˜์ด์ง€๋ฅผ ํ†ต์งธ๋กœ ์ž„๋ฒ ๋”ฉํ•˜์ง€ ์•Š๊ณ  ํƒ€์ผ(tile)์ด๋ผ๋Š” ์ž‘์€ ๋‹จ์œ„๋กœ ๋ถ„ํ• ํ•ฉ๋‹ˆ๋‹ค.

์™œ ๊ฒน์นจ์ด ์ค‘์š”ํ•œ๊ฐ€? ๊ฒน์นจ์ด ์—†์œผ๋ฉด ํ•œ ๋ฌธ์žฅ์ด๋‚˜ ํ‘œ์˜ ํ–‰์ด ๋‘ ํƒ€์ผ ๊ฒฝ๊ณ„์—์„œ ์ž˜๋ ค, ๊ฒ€์ƒ‰ ๋ชจ๋ธ์ด ๋‚ด์šฉ์„ ๋†“์น˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ๊ฐ€์žฅ ๋‹จ์ˆœํ•œ ์Šคํฌ๋ฆฐ์ƒท ํŒŒ์ดํ”„๋ผ์ธ์—์„œ ์žฌํ˜„์œจ(Recall)์ด ๋–จ์–ด์ง€๋Š” ๊ฐ€์žฅ ํฐ ์›์ธ์ด ๋ฐ”๋กœ ์ด ์ž˜๋ฆผ ํ˜„์ƒ์ž…๋‹ˆ๋‹ค.

๋˜ํ•œ ๊ณต๋ฐฑ๋งŒ ์žˆ๋Š” ํƒ€์ผ์€ GPU์— ๋ณด๋‚ด๊ธฐ ์ „์— ๋ฏธ๋ฆฌ ๋ฒ„๋ฆฌ๊ณ , ํ‰๊ท  ํ•ด์‹œ(aHash)๋กœ ๊ฑฐ์˜ ๋น„์Šทํ•œ ํ—ค๋”ยทํ‘ธํ„ฐ๋„ ์ค‘๋ณต ์ œ๊ฑฐํ•ฉ๋‹ˆ๋‹ค.

2๋‹จ๊ณ„. ๋ฉ€ํ‹ฐ๋ชจ๋‹ฌ ์ž„๋ฒ ๋”ฉ ์ƒ์„ฑ

๋ฉ€ํ‹ฐ๋ชจ๋‹ฌ ์ž„๋ฒ ๋”ฉ(Multimodal Embedding)์€ ํ…์ŠคํŠธ, ์ด๋ฏธ์ง€ ๋“ฑ ์„œ๋กœ ๋‹ค๋ฅธ ์ข…๋ฅ˜์˜ ๋ฐ์ดํ„ฐ๋ฅผ ํ•˜๋‚˜์˜ ๊ณต์œ  ์˜๋ฏธ ๊ณต๊ฐ„(์ž„๋ฒ ๋”ฉ ๊ณต๊ฐ„)์— ๋งคํ•‘ํ•˜๋Š” ๊ธฐ์ˆ ์ž…๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด "ํ…์ŠคํŠธ๋กœ ์ด๋ฏธ์ง€๋ฅผ ๊ฒ€์ƒ‰"ํ•˜๊ฑฐ๋‚˜ "์ด๋ฏธ์ง€๋กœ ํ…์ŠคํŠธ ๋ฌธ์„œ๋ฅผ ์ฐพ"๋Š” ํฌ๋กœ์Šค๋ชจ๋‹ฌ ๊ฒ€์ƒ‰์ด ๊ฐ€๋Šฅํ•ด์ง‘๋‹ˆ๋‹ค.

์ด ํŠœํ† ๋ฆฌ์–ผ์—์„œ๋Š” ์„ธ ๊ฐ€์ง€ ๋ฐฑ์—”๋“œ๋ฅผ ์„ ํƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

โ‘  Dual-Encoder (SigLIP / CLIP)

SigLIP(์‹œ์ง€์—˜์•„์ดํ”ผ, Sigmoid Loss for Language Image Pre-Training)์€ Google์ด ์ œ์•ˆํ•œ ์ด๋ฏธ์ง€-ํ…์ŠคํŠธ ๋“€์–ผ ์ธ์ฝ”๋”์ž…๋‹ˆ๋‹ค. CLIP๊ณผ ๋น„์Šทํ•˜๊ฒŒ ์ด๋ฏธ์ง€์™€ ํ…์ŠคํŠธ๋ฅผ ๊ฐ™์€ ๋ฒกํ„ฐ ๊ณต๊ฐ„์— ๋„ฃ๋˜, ๋ฐฐ์น˜์˜ ๋ชจ๋“  ์Œ์„ ํ•œ๊บผ๋ฒˆ์— ๋น„๊ตํ•˜๋Š” ์†Œํ”„ํŠธ๋งฅ์Šค ๋Œ€์‹  ์‹œ๊ทธ๋ชจ์ด๋“œ ์†์‹ค์„ ์‚ฌ์šฉํ•ด ๋” ๊ฐ€๋ณ๊ฒŒ ํ•™์Šตํ•ฉ๋‹ˆ๋‹ค. ๊ธฐ๋ณธ๊ฐ’์œผ๋กœ google/siglip-base-patch16-224 ๋ชจ๋ธ์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

์ •์งํ•œ ์ฃผ์˜์‚ฌํ•ญ์ด ์žˆ์Šต๋‹ˆ๋‹ค. SigLIP๊ณผ CLIP์€ ๋ณธ๋ž˜ ์ž์—ฐ ์ด๋ฏธ์ง€์™€ ์งง์€ ์บก์…˜(64~77 ํ† ํฐ)์œผ๋กœ ํ•™์Šต๋˜์—ˆ๊ธฐ ๋•Œ๋ฌธ์—, ์Šคํฌ๋ฆฐ์ƒท์˜ ์š”์ง€(๋ ˆ์ด์•„์›ƒ, ์ฃผ์ œ, ๊ทธ๋ฆผ)๋Š” ์ดํ•ดํ•˜์ง€๋งŒ ์„ธ๋ถ€ ํ…์ŠคํŠธ ํ•œ ์ค„ ํ•œ ์ค„์€ ์ž˜ ์ฝ์ง€ ๋ชปํ•ฉ๋‹ˆ๋‹ค.

โ‘ก Qwen3-VL ์ž„๋ฒ ๋”ฉ (์˜ต์…˜)

Qwen3-VL-Embedding-2B ๊ฐ™์€ ๋น„์ „ ์–ธ์–ด ๋ชจ๋ธ(VLM, Vision-Language Model) ๋ฐฑ์—”๋“œ๋Š” ์•ฝ 8GB VRAM์ด ํ•„์š”ํ•˜์ง€๋งŒ, ์Šคํฌ๋ฆฐ์ƒท ์•ˆ์˜ ๋นฝ๋นฝํ•œ ํ…์ŠคํŠธ๊นŒ์ง€ ํ›จ์”ฌ ์ž˜ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค. "๊ฒ€์ƒ‰์„ ์œ„ํ•ด ์ด ๋ฌธ์„œ ์Šคํฌ๋ฆฐ์ƒท์„ ๋ฌ˜์‚ฌํ•˜์„ธ์š”." ๊ฐ™์€ ํ”„๋กฌํ”„ํŠธ๋กœ ์ด๋ฏธ์ง€๋ฅผ ๊ฐ™์€ ๋ฒกํ„ฐ ๊ณต๊ฐ„์— ์ •๋ ฌํ•ฉ๋‹ˆ๋‹ค.

โ‘ข ๋ชจ๋“  ํƒ€์ผ์—์„œ OCR ์ถ”์ถœ

ํ•˜์ด๋ธŒ๋ฆฌ๋“œ ๊ฒ€์ƒ‰์„ ์œ„ํ•ด ๊ด‘ํ•™ ๋ฌธ์ž ์ธ์‹(OCR, Optical Character Recognition)์œผ๋กœ ํƒ€์ผ์˜ ํ…์ŠคํŠธ๋ฅผ ์ถ”์ถœํ•ฉ๋‹ˆ๋‹ค. Tesseract OCR์„ ์‚ฌ์šฉํ•ด ๊ฐ ํƒ€์ผ์—์„œ ์‹ค์ œ ๋‹จ์–ด๋“ค์„ ๋ฝ‘์•„ ๋‘ก๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ์–ป์€ ํ…์ŠคํŠธ๋Š” BM25 ์ธ๋ฑ์Šค์˜ ์ž…๋ ฅ์œผ๋กœ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

3๋‹จ๊ณ„. FAISS ๋ฒกํ„ฐ ์ธ๋ฑ์Šค ๊ตฌ์ถ•

์ž„๋ฒ ๋”ฉ์ด ๋๋‚˜๋ฉด ๋ชจ๋“  ๋ฒกํ„ฐ๋“ค์„ ๋ฒกํ„ฐ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค(Vector Database)์— ์ €์žฅํ•ฉ๋‹ˆ๋‹ค. ๋ฒกํ„ฐ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋Š” ๊ณ ์ฐจ์› ๋ฒกํ„ฐ ๊ฐ„์˜ ๊ฑฐ๋ฆฌ(์ฝ”์‚ฌ์ธ ์œ ์‚ฌ๋„, ์œ ํด๋ฆฌ๋“œ ๊ฑฐ๋ฆฌ ๋“ฑ)๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ๊ฐ€์žฅ ๊ฐ€๊นŒ์šด ์ด์›ƒ์„ ๋น ๋ฅด๊ฒŒ ์ฐพ๋Š” ์ตœ๊ทผ์ ‘ ์ด์›ƒ ๊ฒ€์ƒ‰(ANN, Approximate Nearest Neighbor)์— ํŠนํ™”๋œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์ž…๋‹ˆ๋‹ค.

์—ฌ๊ธฐ์„œ๋Š” Meta์˜ FAISS(Facebook AI Similarity Search)๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ž„๋ฒ ๋”ฉ์„ L2 ์ •๊ทœํ™”ํ•œ ๋’ค ๋‚ด์ (inner-product)์„ ๊ณ„์‚ฐํ•˜๋ฉด ์ฝ”์‚ฌ์ธ ์œ ์‚ฌ๋„์™€ ๊ฐ™์€ ๊ฒฐ๊ณผ๊ฐ€ ๋ฉ๋‹ˆ๋‹ค.

๋˜ํ•œ ์ธ์ฝ”๋”๋ฅผ ๋‹ค์‹œ ์‹คํ–‰ํ•˜์ง€ ์•Š๊ณ ๋„ ๋ฒกํ„ฐ๋งŒ ๊ต์ฒดํ•  ์ˆ˜ ์žˆ๋„๋ก ์›์‹œ ๋ฒกํ„ฐ๋ฅผ ๊ทธ๋Œ€๋กœ ๋ฉ”๋ชจ๋ฆฌ์— ๋ณด๊ด€ํ•ฉ๋‹ˆ๋‹ค. ์–ด๋Œ‘ํ„ฐ ํ•™์Šต ํ›„ ์žฌํˆฌ์˜(reproject)์— ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

4๋‹จ๊ณ„. BM25 + RRF ํ•˜์ด๋ธŒ๋ฆฌ๋“œ ๊ฒ€์ƒ‰

๊ฒ€์ƒ‰ ์‹œ์ ์—๋Š” ๋‘ ๊ฒฝ๋กœ๋ฅผ ๋™์‹œ์— ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

โ‘  Dense ๊ฒฝ๋กœ โ€” ์˜๋ฏธ ๊ฒ€์ƒ‰

์ฟผ๋ฆฌ๋ฅผ ์ž„๋ฒ ๋”ฉ ๋ชจ๋ธ๋กœ ๋ฒกํ„ฐํ™”ํ•œ ๋’ค FAISS ์ธ๋ฑ์Šค์—์„œ ์ฝ”์‚ฌ์ธ ์œ ์‚ฌ๋„๊ฐ€ ๊ฐ€์žฅ ๋†’์€ ํƒ€์ผ์„ ์ฐพ์Šต๋‹ˆ๋‹ค. "ํŽ˜์ด์ง€ ์Šคํฌ๋ฆฐ์ƒท ์‹œ ์™œ ๊ฒน์น˜๋Š” ํƒ€์ผ์„ ์“ฐ๋Š”๊ฐ€" ๊ฐ™์€ ์˜๋„ ๊ธฐ๋ฐ˜ ์งˆ๋ฌธ๋„ ์ž˜ ์žกํž™๋‹ˆ๋‹ค.

โ‘ก Sparse ๊ฒฝ๋กœ โ€” ํ‚ค์›Œ๋“œ ๊ฒ€์ƒ‰

OCR๋กœ ์ถ”์ถœํ•œ ํ…์ŠคํŠธ์— BM25(๋ฒ ์ŠคํŠธ ๋งค์นญ 25, Okapi BM25)๋ฅผ ์ ์šฉํ•ฉ๋‹ˆ๋‹ค. BM25๋Š” ํ”ํ•œ ๋‹จ์–ด์˜ ์˜ํ–ฅ์„ ์ค„์ด๋ฉด์„œ๋„ ์ฟผ๋ฆฌ์™€ ๊ฒน์น˜๋Š” ๋‹จ์–ด๊ฐ€ ๋งŽ์€ ๋ฌธ๋‹จ์„ ๋†’์€ ์ ์ˆ˜๋กœ ์˜ฌ๋ ค์ฃผ๋Š” ํ‚ค์›Œ๋“œ ๊ธฐ๋ฐ˜ ๋žญํ‚น ์•Œ๊ณ ๋ฆฌ์ฆ˜์ž…๋‹ˆ๋‹ค. Elasticsearch 5.0 ์ดํ›„ ๊ธฐ๋ณธ ์•Œ๊ณ ๋ฆฌ์ฆ˜์œผ๋กœ๋„ ์ฑ„ํƒ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

โ‘ข Reciprocal Rank Fusion (RRF)์œผ๋กœ ๊ฒฐํ•ฉ

๋‘ ๊ฒฝ๋กœ์˜ ์ ์ˆ˜ ์ฒด๊ณ„๋ฅผ ๊ทธ๋Œ€๋กœ ๋”ํ•˜๋ฉด ์Šค์ผ€์ผ์ด ๋‹ฌ๋ผ ๋ง๊ฐ€์ง‘๋‹ˆ๋‹ค. ๋Œ€์‹  ์ƒํ˜ธ ์ˆœ์œ„ ์œตํ•ฉ(RRF, Reciprocal Rank Fusion)์„ ์‚ฌ์šฉํ•ด ๊ฐ ๊ฒฐ๊ณผ์˜ ์ˆœ์œ„๋งŒ ๊ฐ€์ง€๊ณ  ์œตํ•ฉํ•ฉ๋‹ˆ๋‹ค.

RRF ์ ์ˆ˜ = ฮฃ (๊ฐ€์ค‘์น˜ / (k + ์ˆœ์œ„))

์—ฌ๊ธฐ์„œ k๋Š” ๋ณดํ†ต 60 ์ •๋„๋กœ ๋‘ก๋‹ˆ๋‹ค. ํŠœ๋‹์ด ๊ฑฐ์˜ ํ•„์š” ์—†๊ณ , ์ ์ˆ˜ ์ฒด๊ณ„๊ฐ€ ์ „ํ˜€ ๋‹ค๋ฅธ ๋‘ ๊ฒ€์ƒ‰ ๊ฒฐ๊ณผ๋ฅผ ๊ท ํ˜• ์žˆ๊ฒŒ ์„ž์–ด ์ค๋‹ˆ๋‹ค.

๋งˆ์ง€๋ง‰์œผ๋กœ ๊ฐ™์€ ๋ฌธ์„œ ์•ˆ์˜ ์—ฌ๋Ÿฌ ํƒ€์ผ ์ ์ˆ˜๋ฅผ max-pool๋กœ ํ•ฉ์นฉ๋‹ˆ๋‹ค. ๊ธด ํŽ˜์ด์ง€ ์•ˆ์— ๋‹จ ํ•˜๋‚˜์˜ ๊ฐ•ํ•œ ํƒ€์ผ๋งŒ ์žˆ์–ด๋„ ๊ทธ ๋ฌธ์„œ๊ฐ€ ํ‘œ๋ฉด์œผ๋กœ ์˜ฌ๋ผ์˜ค๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

5๋‹จ๊ณ„. ์–ด๋Œ‘ํ„ฐ ํ•™์Šต๊ณผ VLM ๋‹ต๋ณ€ ์ƒ์„ฑ

์ž”์ฐจ ์–ด๋Œ‘ํ„ฐ(Residual Adapter) ํ•™์Šต

SigLIP/CLIP์ด ์Šคํฌ๋ฆฐ์ƒท์˜ ์„ธ๋ถ€ ํ…์ŠคํŠธ๋ฅผ ์ž˜ ์ฝ์ง€ ๋ชปํ•œ๋‹ค๋Š” ์•ฝ์ ์„ ๋ฉ”์šฐ๊ธฐ ์œ„ํ•ด ๋Œ€์กฐ ํ•™์Šต(Contrastive Learning)์œผ๋กœ ์ž‘์€ ์–ด๋Œ‘ํ„ฐ๋ฅผ ํ•™์Šต์‹œํ‚ต๋‹ˆ๋‹ค.

๋Œ€์กฐ ํ•™์Šต์€ "๋น„์Šทํ•œ ๋ฐ์ดํ„ฐ๋Š” ์ž„๋ฒ ๋”ฉ ๊ณต๊ฐ„์—์„œ ๊ฐ€๊น๊ฒŒ, ๋‹ค๋ฅธ ๋ฐ์ดํ„ฐ๋Š” ๋ฉ€๊ฒŒ" ์ •๋ ฌํ•˜๋Š” ๋จธ์‹ ๋Ÿฌ๋‹ ํŒจ๋Ÿฌ๋Ÿฌ๋‹ค์ž„์ž…๋‹ˆ๋‹ค. ๋ผ๋ฒจ ์—†์ด๋„ ์˜๋ฏธ ์žˆ๋Š” ์ž„๋ฒ ๋”ฉ์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ์–ด ํ‘œํ˜„ ํ•™์Šต์˜ ์ฃผ๋ฅ˜ ๋ฐฉ๋ฒ•์ด ๋˜์—ˆ์œผ๋ฉฐ, CLIP๊ณผ SimCLR ๊ฐ™์€ ๋ชจ๋ธ์ด ๋ชจ๋‘ ์ด ๋ฐฉ์‹์œผ๋กœ ํ•™์Šต๋ฉ๋‹ˆ๋‹ค.

๊ตฌ์ฒด์ ์ธ ํ•™์Šต ์‹ ํ˜ธ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  1. ๊ฐ ํƒ€์ผ์˜ OCR ํ…์ŠคํŠธ์—์„œ ๋ฌด์ž‘์œ„๋กœ ๋ฌธ์žฅ ์ผ๋ถ€๋ฅผ ๋ฝ‘์•„ ์˜์‚ฌ ์ฟผ๋ฆฌ(pseudo-query)๋ฅผ ๋งŒ๋“ ๋‹ค.
  2. ์˜์‚ฌ ์ฟผ๋ฆฌ๋ฅผ ์ž„๋ฒ ๋”ฉํ•œ ๋ฒกํ„ฐ์™€ ์›๋ž˜ ํƒ€์ผ ๋ฒกํ„ฐ๋ฅผ InfoNCE ์†์‹ค๋กœ ๊ฐ€๊น๊ฒŒ ๋Œ์–ด๋‹น๊ธด๋‹ค.
  3. ๊ฐ™์€ ๋ฌธ์„œ์˜ ๋‹ค๋ฅธ ํƒ€์ผ์€ ์Œ์„ฑ ์ƒ˜ํ”Œ๋กœ ๋‘๊ณ  ๋ฉ€๋ฆฌ ๋ฐ€์–ด๋‚ธ๋‹ค.

์ด ์–ด๋Œ‘ํ„ฐ๋Š” ๋‘ ์ธต์งœ๋ฆฌ ์ž”์ฐจ MLP(Residual MLP)๋กœ, ๊ฐ€์ค‘์น˜๋ฅผ 0์œผ๋กœ ์ดˆ๊ธฐํ™”ํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ํ•™์Šต ์ดˆ๊ธฐ์—๋Š” ํ•ญ๋“ฑ ํ•จ์ˆ˜์ž…๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ํ•™์Šต์ด ์ž˜ ์•ˆ ๋˜๋”๋ผ๋„ ๊ฒ€์ƒ‰ ๊ฒฐ๊ณผ๊ฐ€ ๊ฐ‘์ž๊ธฐ ๋ง๊ฐ€์ง€์ง€ ์•Š๋Š” ์•ˆ์ „์žฅ์น˜ ์—ญํ• ๋„ ํ•ฉ๋‹ˆ๋‹ค.

VLM์œผ๋กœ ๊ทผ๊ฑฐ ๊ธฐ๋ฐ˜ ๋‹ต๋ณ€ ์ƒ์„ฑ

๊ฒ€์ƒ‰ ๊ฒฐ๊ณผ๋กœ ๋‚˜์˜จ ์ƒ์œ„ ํƒ€์ผ ์ด๋ฏธ์ง€๋ฅผ ๋น„์ „ ์–ธ์–ด ๋ชจ๋ธ(VLM, Vision-Language Model)์— ๊ทธ๋Œ€๋กœ ๋„ฃ์–ด ๋‹ต๋ณ€์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. ์ฑ—GPT, ์ œ๋ฏธ๋‚˜์ด ๊ฐ™์€ ์ƒ์„ฑํ˜• AI์— ์‹œ๊ฐ ์ง€๋Šฅ์„ ์ถ”๊ฐ€ํ•œ ํ˜•ํƒœ๋ผ๊ณ  ์ƒ๊ฐํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.

์ค‘์š”ํ•œ ์„ค๊ณ„ ์›์น™์€ "๊ฒ€์ƒ‰์€ ํ”ฝ์…€์„ ๋ฐ˜ํ™˜ํ•˜๋ฏ€๋กœ, ์ƒ์„ฑ๋„ ํ”ฝ์…€์„ ๋ฐ›์•„๋“ค์—ฌ์•ผ ํ•œ๋‹ค"๋Š” ์ ์ž…๋‹ˆ๋‹ค. ํ…์ŠคํŠธ๋กœ ํ™˜์›ํ–ˆ๋‹ค๊ฐ€ ๋‹ค์‹œ ๋ฌ˜์‚ฌํ•˜๋Š” ๊ณผ์ •์—์„œ ์ •๋ณด ์†์‹ค์ด ๋ฐœ์ƒํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

๊ฒ€์ƒ‰ ํ’ˆ์งˆ ํ‰๊ฐ€: Recall@k์™€ MRR

์งˆ์ ์ธ ์˜ˆ์‹œ๋งŒ์œผ๋กœ๋Š” ์‹œ์Šคํ…œ ๊ฐœ์„  ํšจ๊ณผ๋ฅผ ์ •๋Ÿ‰์ ์œผ๋กœ ๋น„๊ตํ•˜๊ธฐ ์–ด๋ ต์Šต๋‹ˆ๋‹ค. ํŠœํ† ๋ฆฌ์–ผ์—๋Š” ์ž‘์€ ํ‰๊ฐ€์šฉ ๋ฒค์น˜๋งˆํฌ๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ์œผ๋ฉฐ ๋‹ค์Œ ๋‘ ๊ฐ€์ง€ ์ง€ํ‘œ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

์ง€ํ‘œ์˜๋ฏธ
Recall@k์ •๋‹ต ๋ฌธ์„œ๊ฐ€ ์ƒ์œ„ k๊ฐœ ์•ˆ์— ๋“ค์–ด ์žˆ๋Š” ๋น„์œจ. 1, 3, 5๊นŒ์ง€ ํ•จ๊ป˜ ๋ด…๋‹ˆ๋‹ค.
MRR (Mean Reciprocal Rank)์ •๋‹ต์ด ๋ช‡ ๋ฒˆ์งธ์— ๋“ฑ์žฅํ–ˆ๋Š”์ง€์˜ ์—ญ์ˆ˜๋ฅผ ํ‰๊ท ํ•œ ๊ฐ’. 1์— ๊ฐ€๊นŒ์šธ์ˆ˜๋ก ์ข‹์Šต๋‹ˆ๋‹ค.

์˜ˆ์‹œ ๋ฒค์น˜๋งˆํฌ ๊ฒฐ๊ณผ(๋ฒ ์ด์Šค๋ผ์ธ)๋Š” Recall@1 โ‰ˆ 0.43, MRR โ‰ˆ 0.65 ์ˆ˜์ค€์—์„œ ์ถœ๋ฐœํ•˜๋ฉฐ, ์–ด๋Œ‘ํ„ฐ๋ฅผ ํ•™์Šตํ•œ ๋’ค์—๋Š” ๊ฐ™์€ ๋ฐ์ดํ„ฐ์…‹์—์„œ MRR์ด ์†Œํญ ๊ฐœ์„ ๋˜๋Š” ๊ฒƒ์„ ๊ด€์ฐฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ž‘์€ ์ฝ”ํผ์Šค์—์„œ๋Š” ๋ณ€ํ™”๊ฐ€ ๋ฏธ๋ฏธํ•  ์ˆ˜ ์žˆ๋Š”๋ฐ, ์ด๋Š” ์–ด๋Œ‘ํ„ฐ ํ•™์Šต์ด ๋Œ€๊ทœ๋ชจ ์ฝ”ํผ์Šค์—์„œ ๋” ํฐ ํšจ๊ณผ๋ฅผ ๋‚ด๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

๋งˆ์น˜๋ฉฐ: ์–ธ์ œ ํ”ฝ์…€ ๋„ค์ดํ‹ฐ๋ธŒ๋ฅผ ์„ ํƒํ• ๊นŒ

ํ”ฝ์…€ ๋„ค์ดํ‹ฐ๋ธŒ RAG๋Š” ๋งˆ๋ฒ•์˜ ๋งŒ๋Šฅ ๋„๊ตฌ๋Š” ์•„๋‹™๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ƒํ™ฉ์—์„œ๋Š” ๋งค์šฐ ๋งค๋ ฅ์ ์ธ ์„ ํƒ์ง€๊ฐ€ ๋ฉ๋‹ˆ๋‹ค.

๋ฐ˜๋Œ€๋กœ ์ด๋ฏธ ํ…์ŠคํŠธ๊ฐ€ ๊น”๋”ํ•˜๊ฒŒ ์ถ”์ถœ๋˜๋Š” ์‚ฌ๋‚ด ์œ„ํ‚ค ๊ฐ™์€ ํ™˜๊ฒฝ์—์„œ๋Š” ์ „ํ†ต์ ์ธ ํ…์ŠคํŠธ RAG๊ฐ€ ๋” ๋น ๋ฅด๊ณ  ๊ฐ€๋ณ์Šต๋‹ˆ๋‹ค.

์ด ํŠœํ† ๋ฆฌ์–ผ์˜ ์ง„์งœ ๊ฐ€์น˜๋Š” "๋ฌธ์„œ๋ฅผ ํ”ฝ์…€๋กœ ๋‹ค๋ฃจ๋Š” ์‚ฌ๊ณ ๋ฐฉ์‹"์— ์žˆ์Šต๋‹ˆ๋‹ค. ๋ Œ๋” โ†’ ํƒ€์ผ โ†’ ์ž„๋ฒ ๋“œ โ†’ FAISS โ†’ ์„œ๋น™์ด๋ผ๋Š” ๋‹ค์„ฏ ๋‹จ๊ณ„ ํŒŒ์ดํ”„๋ผ์ธ์€ ๊ทธ๋Œ€๋กœ ๋‘” ์ฑ„, ๋” ๊ฐ•๋ ฅํ•œ ๋ฉ€ํ‹ฐ๋ชจ๋‹ฌ ์ž„๋ฒ ๋”ฉ ๋ชจ๋ธ๋กœ ๋ฐฑ์—”๋“œ๋งŒ ๊ต์ฒดํ•˜๊ฑฐ๋‚˜, ๋” ํฐ ์ฝ”ํผ์Šค๋กœ ํ™•์žฅํ•˜๊ฑฐ๋‚˜, VLM ๋‹ต๋ณ€ ์ƒ์„ฑ๊นŒ์ง€ ํ™œ์„ฑํ™”ํ•˜๋Š” ์‹์œผ๋กœ ์†์‰ฝ๊ฒŒ ํ™•์žฅํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋‹ค์Œ ๊ธ€์—์„œ๋Š” ์ด ํŒŒ์ดํ”„๋ผ์ธ์„ ์‹ค์ œ ์‚ฌ๋‚ด ๋ฌธ์„œ ์ฝ”ํผ์Šค์— ์ ์šฉํ•˜๋ฉด์„œ, BM25 ๊ฐ€์ค‘์น˜, tile_overlap, ์–ด๋Œ‘ํ„ฐ ํ•™์Šต๋ฅ ์„ ํ•จ๊ป˜ ํŠœ๋‹ํ•œ ์‹คํ—˜ ๊ฒฐ๊ณผ๋ฅผ ๊ณต์œ ํ•  ์˜ˆ์ •์ž…๋‹ˆ๋‹ค.

๐Ÿ“š ํ•œ๋ˆˆ์— ๋ณด๋Š” ํ•ต์‹ฌ ์šฉ์–ด

RAG (๊ฒ€์ƒ‰ ์ฆ๊ฐ• ์ƒ์„ฑ)
์™ธ๋ถ€ ๋ฌธ์„œ๋ฅผ ๊ฒ€์ƒ‰ํ•ด LLM ์‘๋‹ต๊ณผ ๊ฒฐํ•ฉํ•˜๋Š” AI ํ”„๋ ˆ์ž„์›Œํฌ.
๋ฉ€ํ‹ฐ๋ชจ๋‹ฌ ์ž„๋ฒ ๋”ฉ
ํ…์ŠคํŠธยท์ด๋ฏธ์ง€ ๋“ฑ ๋‹ค๋ฅธ ๋ฐ์ดํ„ฐ๋ฅผ ํ•˜๋‚˜์˜ ๋ฒกํ„ฐ ๊ณต๊ฐ„์— ๋งคํ•‘ํ•˜๋Š” ๋ชจ๋ธ.
Reciprocal Rank Fusion (RRF)
์ ์ˆ˜ ์ฒด๊ณ„๊ฐ€ ๋‹ค๋ฅธ ์—ฌ๋Ÿฌ ๊ฒ€์ƒ‰ ๊ฒฐ๊ณผ๋ฅผ ์ˆœ์œ„๋งŒ์œผ๋กœ ๊ท ํ˜• ์žˆ๊ฒŒ ์œตํ•ฉํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜.
SigLIP
์‹œ๊ทธ๋ชจ์ด๋“œ ์†์‹ค ๊ธฐ๋ฐ˜์˜ ์ด๋ฏธ์ง€-ํ…์ŠคํŠธ ๋“€์–ผ ์ธ์ฝ”๋”. CLIP์˜ ๊ฐ€๋ฒผ์šด ๋Œ€์•ˆ.
FAISS
๋ฐ€์ง‘ ๋ฒกํ„ฐ์˜ ์œ ์‚ฌ๋„ ๊ฒ€์ƒ‰ ๋ฐ ํด๋Ÿฌ์Šคํ„ฐ๋ง์„ ์œ„ํ•œ Meta์˜ ์˜คํ”ˆ์†Œ์Šค ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ.
BM25
๋‹จ์–ด ๋นˆ๋„์™€ ์—ญ๋ฌธ์„œ ๋นˆ๋„๋ฅผ ํ™œ์šฉํ•œ ํ‚ค์›Œ๋“œ ๊ธฐ๋ฐ˜ ๋žญํ‚น ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ๋Œ€ํ‘œ ์ฃผ์ž.
OCR (๊ด‘ํ•™ ๋ฌธ์ž ์ธ์‹)
์ด๋ฏธ์ง€ ์† ํ…์ŠคํŠธ๋ฅผ ๊ธฐ๊ณ„๊ฐ€ ์ฝ์„ ์ˆ˜ ์žˆ๋Š” ๋ฌธ์ž๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ๊ธฐ์ˆ .
VLM (๋น„์ „ ์–ธ์–ด ๋ชจ๋ธ)
์ด๋ฏธ์ง€์™€ ํ…์ŠคํŠธ๋ฅผ ํ•จ๊ป˜ ์ž…๋ ฅ๋ฐ›์•„ ์ดํ•ดยท์ƒ์„ฑํ•˜๋Š” ๋ฉ€ํ‹ฐ๋ชจ๋‹ฌ AI ๋ชจ๋ธ.
๋Œ€์กฐ ํ•™์Šต (Contrastive Learning)
๋น„์Šทํ•œ ์ƒ˜ํ”Œ์€ ๊ฐ€๊น๊ฒŒ, ๋‹ค๋ฅธ ์ƒ˜ํ”Œ์€ ๋ฉ€๊ฒŒ ์ •๋ ฌํ•ด ํ‘œํ˜„์„ ํ•™์Šตํ•˜๋Š” ๋ฐฉ๋ฒ•.
๋ฒกํ„ฐ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค
๊ณ ์ฐจ์› ๋ฒกํ„ฐ์˜ ์ €์žฅ๊ณผ ์ตœ๊ทผ์ ‘ ์ด์›ƒ ๊ฒ€์ƒ‰์— ํŠนํ™”๋œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค.