DrDavis's picture
Upload folder using huggingface_hub
17c6d62 verified

RAG(๊ฒ€์ƒ‰ ์ฆ๊ฐ• ์ƒ์„ฑ) [[rag]]

๊ฐœ์š” [[overview]]

๊ฒ€์ƒ‰ ์ฆ๊ฐ• ์ƒ์„ฑ(Retrieval-augmented generation, "RAG") ๋ชจ๋ธ์€ ์‚ฌ์ „ ํ›ˆ๋ จ๋œ ๋ฐ€์ง‘ ๊ฒ€์ƒ‰(DPR)๊ณผ ์‹œํ€€์Šค-ํˆฌ-์‹œํ€€์Šค ๋ชจ๋ธ์˜ ์žฅ์ ์„ ๊ฒฐํ•ฉํ•ฉ๋‹ˆ๋‹ค. RAG ๋ชจ๋ธ์€ ๋ฌธ์„œ๋ฅผ ๊ฒ€์ƒ‰ํ•˜๊ณ , ์ด๋ฅผ ์‹œํ€€์Šค-ํˆฌ-์‹œํ€€์Šค ๋ชจ๋ธ์— ์ „๋‹ฌํ•œ ๋‹ค์Œ, ์ฃผ๋ณ€ํ™”(marginalization)๋ฅผ ํ†ตํ•ด ์ถœ๋ ฅ์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. ๊ฒ€์ƒ‰๊ธฐ์™€ ์‹œํ€€์Šค-ํˆฌ-์‹œํ€€์Šค ๋ชจ๋“ˆ์€ ์‚ฌ์ „ ํ›ˆ๋ จ๋œ ๋ชจ๋ธ๋กœ ์ดˆ๊ธฐํ™”๋˜๋ฉฐ, ํ•จ๊ป˜ ๋ฏธ์„ธ ์กฐ์ •๋˜์–ด ๊ฒ€์ƒ‰๊ณผ ์ƒ์„ฑ ๋ชจ๋‘ ๋‹ค์šด์ŠคํŠธ๋ฆผ ์ž‘์—…(๋ชจ๋ธ์„ ํŠน์ • ํƒœ์Šคํฌ์— ์ ์šฉํ•˜๋Š” ๊ฒƒ)์— ์ ์‘ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค.

์ด ๋ชจ๋ธ์€ Patrick Lewis, Ethan Perez, Aleksandara Piktus, Fabio Petroni, Vladimir Karpukhin, Naman Goyal, Heinrich Kรผttler, Mike Lewis, Wen-tau Yih, Tim Rocktรคschel, Sebastian Riedel, Douwe Kiela์˜ ๋…ผ๋ฌธ Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•ฉ๋‹ˆ๋‹ค.

๋…ผ๋ฌธ์˜ ์ดˆ๋ก์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

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

์ด ๋ชจ๋ธ์€ ola13์— ์˜ํ•ด ๊ธฐ์—ฌ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

์‚ฌ์šฉ ํŒ [[usage-tips]]

๊ฒ€์ƒ‰ ์ฆ๊ฐ• ์ƒ์„ฑ(Retrieval-augmented generation, "RAG") ๋ชจ๋ธ์€ ์‚ฌ์ „ ํ›ˆ๋ จ๋œ ๋ฐ€์ง‘ ๊ฒ€์ƒ‰(DPR)๊ณผ ์‹œํ€€์Šค-ํˆฌ-์‹œํ€€์Šค ๋ชจ๋ธ์˜ ๊ฐ•์ ์„ ๊ฒฐํ•ฉํ•ฉ๋‹ˆ๋‹ค. RAG ๋ชจ๋ธ์€ ๋ฌธ์„œ๋ฅผ ๊ฒ€์ƒ‰ํ•˜๊ณ , ์ด๋ฅผ ์‹œํ€€์Šค-ํˆฌ-์‹œํ€€์Šค ๋ชจ๋ธ์— ์ „๋‹ฌํ•œ ๋‹ค์Œ, ์ฃผ๋ณ€ํ™”(marginalization)๋ฅผ ํ†ตํ•ด ์ถœ๋ ฅ์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. ๊ฒ€์ƒ‰๊ธฐ์™€ ์‹œํ€€์Šค-ํˆฌ-์‹œํ€€์Šค ๋ชจ๋“ˆ์€ ์‚ฌ์ „ ํ›ˆ๋ จ๋œ ๋ชจ๋ธ๋กœ ์ดˆ๊ธฐํ™”๋˜๋ฉฐ, ํ•จ๊ป˜ ๋ฏธ์„ธ ์กฐ์ •๋ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ๊ฒ€์ƒ‰๊ณผ ์ƒ์„ฑ ๋ชจ๋‘ ๋‹ค์šด์ŠคํŠธ๋ฆผ ์ž‘์—…์— ์ ์‘ํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

RagConfig [[transformers.RagConfig]]

[[autodoc]] RagConfig

RagTokenizer [[transformers.RagTokenizer]]

[[autodoc]] RagTokenizer

Rag specific outputs [[transformers.models.rag.modeling_rag.RetrievAugLMMarginOutput]]

[[autodoc]] models.rag.modeling_rag.RetrievAugLMMarginOutput

[[autodoc]] models.rag.modeling_rag.RetrievAugLMOutput

RagRetriever [[transformers.RagRetriever]]

[[autodoc]] RagRetriever

RagModel [[transformers.RagModel]]

[[autodoc]] RagModel - forward

RagSequenceForGeneration [[transformers.RagSequenceForGeneration]]

[[autodoc]] RagSequenceForGeneration - forward - generate

RagTokenForGeneration [[transformers.RagTokenForGeneration]]

[[autodoc]] RagTokenForGeneration - forward - generate

TFRagModel [[transformers.TFRagModel]]

[[autodoc]] TFRagModel - call

TFRagSequenceForGeneration [[transformers.TFRagSequenceForGeneration]]

[[autodoc]] TFRagSequenceForGeneration - call - generate

TFRagTokenForGeneration [[transformers.TFRagTokenForGeneration]]

[[autodoc]] TFRagTokenForGeneration - call - generate