๋ณธ๋ฌธ์œผ๋กœ ๊ฑด๋„ˆ๋›ฐ๊ธฐ

๐Ÿ”Ž ๊ฒ€์ƒ‰ ์ฆ๊ฐ• ์ƒ์„ฑ (RAG)

๊ฒฝ๊ณ 

๋งŒ์•ฝ Ollama๋ฅผ ์‚ฌ์šฉ ์ค‘์ด๋ผ๋ฉด, ๊ธฐ๋ณธ์ ์œผ๋กœ 2048 ํ† ํฐ ์ปจํ…์ŠคํŠธ ๊ธธ์ด๋กœ ์„ค์ •๋˜์–ด ์žˆ๋‹ค๋Š” ์ ์— ์ฃผ์˜ํ•˜์„ธ์š”. ์ด๋กœ ์ธํ•ด ๊ฒ€์ƒ‰๋œ ๋ฐ์ดํ„ฐ๊ฐ€ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ์ปจํ…์ŠคํŠธ ์ฐฝ ๋‚ด์— ๋งž์ง€ ์•Š์•„ ์ „ํ˜€ ์‚ฌ์šฉ๋˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฒ€์ƒ‰ ์ฆ๊ฐ• ์ƒ์„ฑ (RAG) ์„ฑ๋Šฅ์„ ํ–ฅ์ƒ์‹œํ‚ค๋ ค๋ฉด Ollama ๋ชจ๋ธ ์„ค์ •์—์„œ ์ปจํ…์ŠคํŠธ ๊ธธ์ด๋ฅผ 8192+ ํ† ํฐ์œผ๋กœ ๋Š˜๋ฆฌ๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

๊ฒ€์ƒ‰ ์ฆ๊ฐ• ์ƒ์„ฑ (RAG)์€ ๋‹ค์–‘ํ•œ ์†Œ์Šค์˜ ์ปจํ…์ŠคํŠธ๋ฅผ ํ†ตํ•ฉํ•จ์œผ๋กœ์จ ์ฑ—๋ด‡์˜ ๋Œ€ํ™” ๊ธฐ๋Šฅ์„ ํ–ฅ์ƒ์‹œํ‚ค๋Š” ์ฒจ๋‹จ ๊ธฐ์ˆ ์ž…๋‹ˆ๋‹ค. ๋กœ์ปฌ ๋ฐ ์›๊ฒฉ ๋ฌธ์„œ, ์›น ์ฝ˜ํ…์ธ , ์‹ฌ์ง€์–ด YouTube ๋น„๋””์˜ค์™€ ๊ฐ™์€ ๋ฉ€ํ‹ฐ๋ฏธ๋””์–ด ์†Œ์Šค์—์„œ ๊ด€๋ จ ์ •๋ณด๋ฅผ ๊ฒ€์ƒ‰ํ•˜์—ฌ ์ด๋ฅผ ๋ฏธ๋ฆฌ ์ •์˜๋œ RAG ํ…œํ”Œ๋ฆฟ๊ณผ ๊ฒฐํ•ฉํ•˜๊ณ  ์‚ฌ์šฉ์ž์˜ ํ”„๋กฌํ”„ํŠธ์— ์ถ”๊ฐ€ํ•˜์—ฌ ๋ณด๋‹ค ์œ ์ตํ•˜๊ณ  ๋งฅ๋ฝ์ ์ธ ์‘๋‹ต์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

RAG์˜ ์ฃผ์š” ์žฅ์  ์ค‘ ํ•˜๋‚˜๋Š” ๋‹ค์–‘ํ•œ ์†Œ์Šค์—์„œ ์ •๋ณด๋ฅผ ์ ‘๊ทผํ•˜๊ณ  ํ†ตํ•ฉํ•  ์ˆ˜ ์žˆ๋Š” ๋Šฅ๋ ฅ์œผ๋กœ, ๋ณต์žกํ•œ ๋Œ€ํ™” ์‹œ๋‚˜๋ฆฌ์˜ค์— ์ด์ƒ์ ์ธ ์†”๋ฃจ์…˜์ž…๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ์‚ฌ์šฉ์ž๊ฐ€ ํŠน์ • ๋ฌธ์„œ๋‚˜ ์›นํŽ˜์ด์ง€์™€ ๊ด€๋ จ๋œ ์งˆ๋ฌธ์„ ํ•  ๊ฒฝ์šฐ, RAG๋Š” ํ•ด๋‹น ์†Œ์Šค์—์„œ ๊ด€๋ จ ์ •๋ณด๋ฅผ ๊ฒ€์ƒ‰ํ•˜์—ฌ ๋Œ€ํ™” ์‘๋‹ต์— ํ†ตํ•ฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. RAG๋Š” YouTube ๋น„๋””์˜ค์™€ ๊ฐ™์€ ๋ฉ€ํ‹ฐ๋ฏธ๋””์–ด ์†Œ์Šค์—์„œ๋„ ์ •๋ณด๋ฅผ ๊ฒ€์ƒ‰ํ•˜๊ณ  ํ†ตํ•ฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๋น„๋””์˜ค์˜ ๋Œ€๋ณธ์ด๋‚˜ ์บก์…˜์„ ๋ถ„์„ํ•˜์—ฌ ๊ด€๋ จ ์ •๋ณด๋ฅผ ์ถ”์ถœํ•˜๊ณ  ์ด๋ฅผ ๋Œ€ํ™” ์‘๋‹ต์— ํ†ตํ•ฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋กœ์ปฌ ๋ฐ ์›๊ฒฉ RAG ํ†ตํ•ฉโ€‹

๋กœ์ปฌ ๋ฌธ์„œ๋Š” ๋จผ์ € ์ž‘์—… ๊ณต๊ฐ„ ์˜์—ญ์˜ ๋ฌธ์„œ ์„น์…˜์„ ํ†ตํ•ด ์—…๋กœ๋“œ๋˜์–ด์•ผ ํ•˜๋ฉฐ, ์ฟผ๋ฆฌ ์ „ # ๊ธฐํ˜ธ๋ฅผ ์‚ฌ์šฉํ•ด ์•ก์„ธ์Šคํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ฑ„ํŒ… ์ƒ์ž ์œ„์— ๋‚˜ํƒ€๋‚˜๋Š” ํ˜•์‹ํ™”๋œ URL์„ ํด๋ฆญํ•˜์„ธ์š”. ์„ ํƒํ•˜๋ฉด Send a message ์œ„์— ๋ฌธ์„œ ์•„์ด์ฝ˜์ด ๋‚˜ํƒ€๋‚˜๋ฉฐ ์„ฑ๊ณต์ ์œผ๋กœ ๊ฒ€์ƒ‰๋˜์—ˆ์Œ์„ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค.

#๋กœ ์‹œ์ž‘ํ•˜๊ณ  URL์„ ๋”ฐ๋ฅธ ํ”„๋กฌํ”„ํŠธ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฌธ์„œ๋ฅผ ์ž‘์—… ๊ณต๊ฐ„ ์˜์—ญ์— ์ง์ ‘ ๋กœ๋“œํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ์›น ์ฝ˜ํ…์ธ ๋ฅผ ๋Œ€ํ™”์— ์ง์ ‘ ํ†ตํ•ฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

RAG๋ฅผ ์œ„ํ•œ ์›น ๊ฒ€์ƒ‰โ€‹

์›น ์ฝ˜ํ…์ธ  ํ†ตํ•ฉ์„ ์œ„ํ•ด ๋Œ€ํ™”์— #๋กœ ์‹œ์ž‘ํ•˜๊ณ  ๋Œ€์ƒ URL์„ ๋”ฐ๋ฅธ ์ฟผ๋ฆฌ๋ฅผ ์‹œ์ž‘ํ•˜์„ธ์š”. ์ฑ„ํŒ… ์ƒ์ž ์œ„์— ๋‚˜ํƒ€๋‚˜๋Š” ํ˜•์‹ํ™”๋œ URL์„ ํด๋ฆญํ•˜์„ธ์š”. ์„ ํƒํ•˜๋ฉด Send a message ์œ„์— ๋ฌธ์„œ ์•„์ด์ฝ˜์ด ๋‚˜ํƒ€๋‚˜๋ฉฐ ์„ฑ๊ณต์ ์œผ๋กœ ๊ฒ€์ƒ‰๋˜์—ˆ์Œ์„ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค. Open WebUI๋Š” ๊ฐ€๋Šฅํ•˜๋‹ค๋ฉด URL์˜ ์ •๋ณด๋ฅผ ๊ฒ€์ƒ‰ํ•˜๊ณ  ๊ตฌ๋ฌธ์„ ๋ถ„์„ํ•ฉ๋‹ˆ๋‹ค.

ํŒ

์›น ํŽ˜์ด์ง€๋Š” ๋„ค๋น„๊ฒŒ์ด์…˜ ๋ฐ ํ‘ธํ„ฐ์™€ ๊ฐ™์€ ์ถ”๊ฐ€ ์ •๋ณด๋ฅผ ํฌํ•จํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์Šต๋‹ˆ๋‹ค. ๋” ๋‚˜์€ ๊ฒฐ๊ณผ๋ฅผ ์œ„ํ•ด ํŽ˜์ด์ง€์˜ ์›๋ณธ ๋˜๋Š” ๋…์ž ์นœํ™”์ ์ธ ๋ฒ„์ „์— ๋งํฌํ•˜์„ธ์š”.

RAG ํ…œํ”Œ๋ฆฟ ์‚ฌ์šฉ์ž ์ง€์ •โ€‹

๊ด€๋ฆฌ์ž ํŒจ๋„ > ์„ค์ • > ๋ฌธ์„œ ๋ฉ”๋‰ด์—์„œ RAG ํ…œํ”Œ๋ฆฟ์„ ์‚ฌ์šฉ์ž ์ง€์ •ํ•˜์„ธ์š”.

RAG ์ž„๋ฒ ๋”ฉ ์ง€์›โ€‹

๊ด€๋ฆฌ์ž ํŒจ๋„ > ์„ค์ • > ๋ฌธ์„œ ๋ฉ”๋‰ด์—์„œ RAG ์ž„๋ฒ ๋”ฉ ๋ชจ๋ธ์„ ์ง์ ‘ ๋ณ€๊ฒฝํ•˜์„ธ์š”. ์ด ๊ธฐ๋Šฅ์€ Ollama ๋ฐ OpenAI ๋ชจ๋ธ์„ ์ง€์›ํ•˜๋ฉฐ ์š”๊ตฌ ์‚ฌํ•ญ์— ๋”ฐ๋ผ ๋ฌธ์„œ ์ฒ˜๋ฆฌ๋ฅผ ํ–ฅ์ƒ์‹œํ‚ต๋‹ˆ๋‹ค.

RAG ๊ธฐ๋Šฅ ๋‚ด ์ธ์šฉโ€‹

RAG ๊ธฐ๋Šฅ์€ ์‚ฌ์šฉ์ž๊ฐ€ LLM์— ์ œ๊ณต๋œ ๋ฌธ์„œ์˜ ์ปจํ…์ŠคํŠธ๋ฅผ ์ถ”์ ํ•  ์ˆ˜ ์žˆ๋„๋ก ์ถ”๊ฐ€๋œ ์ธ์šฉ์„ ํ†ตํ•ด ์ฐธ์กฐ ํฌ์ธํŠธ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ์™ธ๋ถ€ ์†Œ์Šค๋ฅผ ๋Œ€ํ™”์— ์‚ฌ์šฉํ•˜๋Š” ๋ฐ ์žˆ์–ด ํˆฌ๋ช…์„ฑ๊ณผ ์‹ ๋ขฐ์„ฑ์„ ๋ณด์žฅํ•ฉ๋‹ˆ๋‹ค.

ํ–ฅ์ƒ๋œ RAG ํŒŒ์ดํ”„๋ผ์ธโ€‹

RAG ์ž„๋ฒ ๋”ฉ ๊ธฐ๋Šฅ์„ ์œ„ํ•œ ํ•˜์ด๋ธŒ๋ฆฌ๋“œ ๊ฒ€์ƒ‰ ์„œ๋ธŒ-๊ธฐ๋Šฅ์€ BM25๋ฅผ ํ†ตํ•ด RAG ๊ธฐ๋Šฅ์„ ํ–ฅ์ƒ์‹œํ‚ค๋ฉฐ CrossEncoder๋ฅผ ํ™œ์šฉํ•œ ์ˆœ์œ„ ์žฌ์กฐ์ • ๋ฐ ์„ค์ • ๊ฐ€๋Šฅํ•œ ๊ด€๋ จ์„ฑ ์ ์ˆ˜ ์ž„๊ณ„๊ฐ’์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ํŠน์ • ์‚ฌ์šฉ ์‚ฌ๋ก€์— ๋งž๋Š” ๋” ์ •ํ™•ํ•˜๊ณ  ๋งž์ถคํ™”๋œ RAG ๊ฒฝํ—˜์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

YouTube RAG ํŒŒ์ดํ”„๋ผ์ธโ€‹

๋น„๋””์˜ค URL์„ ํ†ตํ•ด YouTube ๋น„๋””์˜ค๋ฅผ ์š”์•ฝํ•˜๋Š” ์ „์šฉ RAG ํŒŒ์ดํ”„๋ผ์ธ์€ ๋น„๋””์˜ค transcription๊ณผ์˜ ์›ํ™œํ•œ ์ƒํ˜ธ์ž‘์šฉ์„ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค. ์ด ํ˜์‹ ์ ์ธ ๊ธฐ๋Šฅ์€ ๋น„๋””์˜ค ์ฝ˜ํ…์ธ ๋ฅผ ๋Œ€ํ™”์— ํ†ตํ•ฉํ•˜์—ฌ ๋Œ€ํ™” ๊ฒฝํ—˜์„ ๋”์šฑ ํ’๋ถ€ํ•˜๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค.

๋ฌธ์„œ ํŒŒ์‹ฑโ€‹

๋กœ์ปฌ ๋ฐ ์›๊ฒฉ ๋ฌธ์„œ์—์„œ ์ฝ˜ํ…์ธ ๋ฅผ ์ถ”์ถœํ•˜๊ธฐ ์œ„ํ•œ ๋‹ค์–‘ํ•œ ํŒŒ์„œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๋” ์ž์„ธํ•œ ๋‚ด์šฉ์€ get_loader ๊ธฐ๋Šฅ์„ ์ฐธ์กฐํ•˜์„ธ์š”.

Google Drive ํ†ตํ•ฉโ€‹

Google Picker API์™€ Google Drive API๊ฐ€ ํ™œ์„ฑํ™”๋œ Google Cloud ํ”„๋กœ์ ํŠธ์™€ ์Œ์„ ์ด๋ฃจ๋Š” ๊ฒฝ์šฐ, ์ด ๊ธฐ๋Šฅ์„ ํ†ตํ•ด ์‚ฌ์šฉ์ž๋Š” ์ฑ„ํŒ… ์ธํ„ฐํŽ˜์ด์Šค์—์„œ ์ง์ ‘ Drive ํŒŒ์ผ์— ์•ก์„ธ์Šคํ•˜๊ณ  ๋ฌธ์„œ, ์Šฌ๋ผ์ด๋“œ, ์Šคํ”„๋ ˆ๋“œ์‹œํŠธ ๋“ฑ์„ ์—…๋กœ๋“œํ•˜์—ฌ ๋Œ€ํ™”์˜ ์ปจํ…์ŠคํŠธ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ด€๋ฆฌ์ž ํŒจ๋„ > ์„ค์ • > ๋ฌธ์„œ ๋ฉ”๋‰ด์—์„œ ํ™œ์„ฑํ™”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์‚ฌ์šฉํ•˜๋ ค๋ฉด GOOGLE_DRIVE_API_KEY ๋ฐ GOOGLE_DRIVE_CLIENT_ID ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋ฅผ ์„ค์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์ƒ์„ธ ์ง€์นจโ€‹

  1. OAuth 2.0 ํด๋ผ์ด์–ธํŠธ๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ์ธ์ฆ๋œ JavaScript ์ถœ์ฒ˜ ๋ฐ ์ธ์ฆ๋œ ๋ฆฌ๋””๋ ‰์…˜ URI๋ฅผ Open-WebUI ์ธ์Šคํ„ด์Šค์— ์•ก์„ธ์Šคํ•˜๋Š” URL (ํฌํŠธ๋ฅผ ํฌํ•จํ•  ๊ฒฝ์šฐ ํ•จ๊ป˜)๋กœ ์„ค์ •ํ•˜์„ธ์š”.
  2. ํ•ด๋‹น OAuth ํด๋ผ์ด์–ธํŠธ์™€ ๊ด€๋ จ๋œ ํด๋ผ์ด์–ธํŠธ ID๋ฅผ ๊ธฐ๋กํ•ด ๋‘์„ธ์š”.
  3. ํ”„๋กœ์ ํŠธ์—์„œ Google Drive API์™€ Google Picker API๋ฅผ ๋ชจ๋‘ ํ™œ์„ฑํ™”ํ–ˆ๋Š”์ง€ ํ™•์ธํ•˜์„ธ์š”.
  4. ๋˜ํ•œ ์•ฑ(ํ”„๋กœ์ ํŠธ)์„ ํ…Œ์ŠคํŠธ ๋ชจ๋“œ๋กœ ์„ค์ •ํ•˜๊ณ  Google Drive ์ด๋ฉ”์ผ์„ ์‚ฌ์šฉ์ž ๋ชฉ๋ก์— ์ถ”๊ฐ€ํ•˜์„ธ์š”.
  5. ๊ถŒํ•œ ๋ฒ”์œ„๋ฅผ ํ•ด๋‹น API๊ฐ€ ์ œ๊ณตํ•˜๋Š” ๋ชจ๋“  ๊ฒƒ์„ ํฌํ•จํ•˜๋„๋ก ์„ค์ •ํ•˜์„ธ์š”. ์•ฑ์ด ํ…Œ์ŠคํŠธ ๋ชจ๋“œ์ผ ๊ฒฝ์šฐ Google์€ ์ œํ•œ๋œ ํ…Œ์ŠคํŠธ ์‚ฌ์šฉ์ž์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์•ก์„ธ์Šคํ•  ์ˆ˜ ์žˆ๋„๋ก ์•ฑ์„ ๊ฒ€์ฆํ•  ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.
  6. Google Picker API ํŽ˜์ด์ง€๋กœ ์ด๋™ํ•˜์—ฌ ์ž๊ฒฉ ์ฆ๋ช… ์ƒ์„ฑ ๋ฒ„ํŠผ์„ ํด๋ฆญํ•˜์„ธ์š”.
  7. API ํ‚ค๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ œํ•œ์—์„œ ์›น์‚ฌ์ดํŠธ๋ฅผ ์„ ํƒํ•˜์„ธ์š”. ๊ทธ๋Ÿฐ ๋‹ค์Œ 1๋‹จ๊ณ„์—์„œ Authorized JavaScript origins ๋ฐ Authorized redirect URIs ์„ค์ •์— ์ž…๋ ฅํ•œ Open-WebUI ์ธ์Šคํ„ด์Šค์˜ URL์„ ์ถ”๊ฐ€ํ•˜์„ธ์š”.
  8. API ํ‚ค์— ๋Œ€ํ•ด Google Drive API ๋ฐ Google Picker API์—๋งŒ ์ ‘๊ทผ ๊ถŒํ•œ์„ ์„ค์ •ํ•˜์„ธ์š”.
  9. ํ™˜๊ฒฝ ๋ณ€์ˆ˜ GOOGLE_DRIVE_CLIENT_ID๋ฅผ 2๋‹จ๊ณ„์—์„œ ์ƒ์„ฑํ•œ OAuth ํด๋ผ์ด์–ธํŠธ์˜ ํด๋ผ์ด์–ธํŠธ ID๋กœ ์„ค์ •ํ•˜์„ธ์š”.
  10. ํ™˜๊ฒฝ ๋ณ€์ˆ˜ GOOGLE_DRIVE_API_KEY๋ฅผ 7๋‹จ๊ณ„์—์„œ ์„ค์ •ํ•œ API ํ‚ค ๊ฐ’์œผ๋กœ ์„ค์ •ํ•˜์„ธ์š” (2๋‹จ๊ณ„์—์„œ ์ƒ์„ฑํ•œ OAuth ํด๋ผ์ด์–ธํŠธ ์‹œํฌ๋ฆฟ์€ ์•„๋‹˜).
  11. GOOGLE_REDIRECT_URI๋ฅผ ๋‚ด Open-WebUI ์ธ์Šคํ„ด์Šค์˜ URL๋กœ ์„ค์ •ํ•˜์„ธ์š” (ํฌํŠธ๊ฐ€ ์žˆ์„ ๊ฒฝ์šฐ ํฌํ•จ).
  12. ๊ทธ ํ›„, ํ•ด๋‹น ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋ฅผ ํฌํ•จํ•˜์—ฌ Open-WebUI ์ธ์Šคํ„ด์Šค๋ฅผ ๋‹ค์‹œ ์‹œ์ž‘ํ•˜์„ธ์š”.
  13. ๊ทธ๋Ÿฐ ๋‹ค์Œ, Admin Panel < Settings < Documents < Google Drive์—์„œ Google Drive๊ฐ€ ํ™œ์„ฑํ™”๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•˜์„ธ์š”.