๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
์นดํ…Œ๊ณ ๋ฆฌ ์—†์Œ

LLM์˜ ๋ชจ๋“  ๊ฒƒ 1 [RAG-Retrieval Augmented Generation]

by ์ œ๋ฃฝ 2024. 3. 22.
728x90
๋ฐ˜์‘ํ˜•

1. RAG - Retrieval Augmented Generation

: ๊ฒ€์ƒ‰ ์ฆ๊ฐ• ์ƒ์„ฑ

: ์ƒˆ๋กœ์šด ์ง€์‹์— ๊ด€ํ•œ ํ…์ŠคํŠธ ๋ฐ์ดํ„ฐ ์†Œ์Šค๋ฅผ Embeddingํ•ด์„œ Vector stores์— ์ €์žฅํ•˜๊ณ , ํ”„๋กฌํ”„ํŠธ ๊ตฌ์„ฑ์„ ์ง„ํ–‰ํ•  ๋•Œ ์™ธ๋ถ€ ๋ฐ์ดํ„ฐ ์†Œ์Šค๋กœ๋ถ€ํ„ฐ ๊ฐ€์ ธ์˜จ ํ…์ŠคํŠธ ๋ฐ์ดํ„ฐ๋ฅผ ํ•จ๊ป˜ ์ด์šฉํ•ด์„œ ํ”„๋กฌํ”„ํŠธ๋ฅผ ๊ตฌ์„ฑํ•œ ๋’ค LLM์œผ๋กœ๋ถ€ํ„ฐ ๋‹ต๋ณ€์„ ์–ป์–ด๋‚ธ๋‹ค.

 

  1. ์‚ฌ์šฉ์ž ์งˆ๋ฌธ
  2. ์งˆ๋ฌธ ์ž„๋ฒ ๋”ฉ ๋ฐ ๋‚ด ๋ฐ์ดํ„ฐ๋„ ์ž„๋ฒ ๋”ฉ ์ง„ํ–‰
  3. ์ดํ›„, ๋ฒกํ„ฐ DB(์ €์žฅ์†Œ)์— ์ž„๋ฒ ๋”ฉ๋œ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅ
  4. ์งˆ๋ฌธ์„ ์ด์šฉํ•ด ์ €์žฅํ•ด๋†“์€ DB ์ €์žฅ์†Œ์—์„œ ๊ฒ€์ƒ‰
  5. ์ง€์‹œ ํ”„๋กฌํ”„ํŠธ ๊ตฌ์„ฑ + ์งˆ๋ฌธ(query ์žฌ์ƒ์„ฑ) + ๊ฒ€์ƒ‰ ๊ฒฐ๊ณผ n๊ฐœ > ์–ธ์–ด๋ชจ๋ธ GPT์—๊ฒŒ ์ œ๊ณต
  6. ์–ธ์–ด ๋ชจ๋ธ์ด ๋‹ต๋ณ€ ์ƒ์„ฑ
  7. ๋‹ต๋ณ€ ์ถœ๋ ฅ

 

2. RAG Review

์›๋ฆฌ : LLM์˜ ํ•œ๊ณ„๋ฅผ ๋ณด์™„ํ•˜๊ณ ์ž, ์ถ”๊ฐ€ ์ •๋ณด๋ฅผ ์คŒ์œผ๋กœ์จ ๋ณด๋‹ค ๊ทผ๊ฑฐ ์žˆ๋Š” ๋‹ต๋ณ€๊ณผ ์ •ํ™•ํ•œ ๋‹ต๋ณ€์„ ํ†ตํ•ด LLM์˜ ํ™˜๊ฐ ํ˜„์ƒ์„ ์ค„์ด๊ณ ์ž ํ•จ (+ํ† ํฐ๊ธธ์ด ํ•œ๊ณ„)

[ DB ๊ตฌ์ถ• vs ์‹ค์‹œ๊ฐ„ ๋ฐ˜์˜ ]

→ ์‚ฌ์šฉ ๋ชฉ์ ์— ๋”ฐ๋ผ ๋‹ค๋ฅด๋‹ค.

์ •๋ณด ์š”์•ฝ or ์ฃผ์š” ์ •๋ณด ์ถ”์ถœ or ์ผํšŒ์„ฑ Demo ์ œ๊ณต ⇒ document + query

์„œ๋น„์Šค ์ธก๋ฉด ⇒ DB ๊ตฌ์ถ•

๋…ผ๋ฌธ(์—ฐ๊ตฌ) : ์ •๋ณด๋ฅผ ์ถ”๊ฐ€ํ–ˆ๋”๋‹ˆ, ์„ฑ๋Šฅ์ด ์˜ฌ๋ž์–ด์š”! ์— ์ดˆ์ ํ™”๋œ ์—ฐ๊ตฌ์ด๋‹ค๋ณด๋‹ˆ, ์‹คํ—˜ํ•  document + ์งˆ๋ฌธ์„ input์œผ๋กœ ์‹คํ—˜์„ ํ•˜๊ฒŒ ๋œ ๊ฒƒ

์ ์šฉ(์„œ๋น„์Šค) : ์„œ๋น„์Šค ๋„์ž…์„ ํ•˜๋Š”๋ฐ ์žˆ์–ด์„œ๋Š”, DB๋ฅผ ๊ตฌ์ถ•ํ•ด์„œ RAG ๋ฐฉ๋ฒ•๋ก ์„ ์จ๋จน์–ด๋ณด์ž! ๋กœ ๋ณ€ํ˜•์ด ๋˜๊ธฐ ์‹œ์ž‘ํ•จ ⇒ ‘RAG๋ฅผ ํ™œ์šฉํ•œ~’

⇒ ๋”ฐ๋ผ์„œ, ์›๋ฌธ์„ ๊ธฐ์ค€์œผ๋กœ ๊ตฌํ˜„์„ ํ•œ ์‚ฌ๋žŒ๋“ค์˜ ๊ฒฝ์šฐ ์ „์ž์˜ ๊ฐœ๋…์„, ๊ธฐ์—…/์„œ๋น„์Šค ์ธก์—์„œ๋Š” ํ›„์ž์˜ ๊ฐœ๋…์„ ์ง€๋‹ˆ๊ณ  ์žˆ์Œ์˜ ์ฐจ์ด๊ฐ€ ์กด์žฌํ•  ์ˆ˜ ๋ฐ–์— ์—†์—ˆ๋‹ค.

⇒ ์—ฐ๊ตฌ ์ธก๋ฉด ↔ ์„œ๋น„์Šค ์ธก๋ฉด

โ€ป ๋…ผ๋ฌธ ์‹คํ—˜ ์˜ˆ์‹œ)

: (์—ฌ๋Ÿฌ ๋ฌธ์„œ๋“ค์„ ํ†ตํ•ฉํ•œ ๋ฌธ์„œ๋ฅผ ๋ฒกํ„ฐํ™” + ์‚ฌ์šฉ์ž ์งˆ๋ฌธ) ~

  1. ์œ„ํ‚คํ”ผ๋””์•„(18๋…„๋„๊นŒ์ง€์˜ ์ง€๋„์ž)๊ฐ€ ํ•™์Šต๋œ LLM์— ํ•œ๊ตญ์˜ ๋น„์œจ์€? ์ด๋ผ๋Š” ์งˆ๋ฌธ์„ ํ–ˆ์„ ๊ฒฝ์šฐ, 34%
  2. ํ•˜์ง€๋งŒ ์ƒˆ๋กœ์šด ์ •๋ณด(23๋…„๋„๊นŒ์ง€์˜ ์ง€๋„์ž)๋ฅผ ์ถ”๊ฐ€ํ•œ LLM์—๊ฒŒ ์งˆ๋ฌธ์„ ํ–ˆ์„ ๊ฒฝ์šฐ, ํ•œ๊ตญ ์ง€๋„์ž์˜ ๋น„์œจ์€ 56%

์™€ ๊ฐ™์ด ๋ณด๋‹ค ๋” ์ตœ์‹ ํ™” ๋˜๊ณ , ์ •ํ™•ํ•œ ์ •๋ณด๋ฅผ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ์žฅ์ ์„ ๋ณด์—ฌ์คŒ

 

3. RAG ์ง„ํ–‰ Process

1. ๋ฌธ์„œ๋ฅผ ํ…์ŠคํŠธ ์ž„๋ฒ ๋”ฉ์œผ๋กœ ๋ณ€ํ™˜ํ•˜์—ฌ Vector DB์— ์ €์žฅํ•˜๊ธฐ

  • ๋ฌธ์„œ๋ฅผ ์ฝ์–ด์™€์„œ(Load) ๋ถ„ํ• (Split)ํ•˜๊ณ  ํŒŒ์‹ฑ(Parsing-๊ตฌ๋ฌธ๋ถ„์„)ํ•˜๊ธฐ
    1. Loadํ•˜๊ธฐ
      1. PDF Loader
        1. Fitz
          • ๋‹จ์ˆœํ•˜๊ฒŒ ๋ชจ๋“  Text๋ฅผ ์ฝ์–ด์„œ ํ•˜๋‚˜์˜ ๋ฌธ์ž์—ด์„ ํ•ฉ์น  ๋•Œ ์œ ์šฉ
          • ํŽ˜์ด์ง€๋ฅผ ์ฝ๋Š” ์†๋„๊ฐ€ ๊ฐ€์žฅ ๋น ๋ฅด๋‹ค
            • ์‚ฌ์šฉ์ž๊ฐ€ ๋ฌธ์„œ๋ฅผ ๋„ฃ๊ณ  ์‹ค์‹œ๊ฐ„์œผ๋กœ ์š”์•ฝ๋ณธ์„ ๋ฐ›๊ณ  ์‹ถ์„ ๋•Œ fitz๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค
          • ํŽ˜์ด์ง€ ๋ฒˆํ˜ธ ์ œ๊ณต(Meta Data) ↔ ํŽ˜์ด์ง€ ๋ฒˆํ˜ธ๋ฅผ ์ œ์™ธํ™˜ metadata๋Š” ์ง€์›ํ•˜์ง€ ์•Š๋Š”๋‹ค
        2. import fitz
        3. PyPDFLoader
          • ๊ฐ€์žฅ ๋งŽ์ด ์‚ฌ์šฉ๋˜๋Š” Loader
          • ํ•œ๊ธ€ ์ธ์ฝ”๋”ฉ ์ฒ˜๋ฆฌ ์šฐ์ˆ˜
          • page ๋‹จ์œ„๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๋กœ๋“œํ•จ
            • ex) 20 page PDF ํŒŒ์ผ ๋กœ๋“œ์‹œ : 20๊ฐœ์˜ ๋ฌธ์„œ๋กœ ๋กœ๋“œ
          • metadata
            • source : ํŒŒ์ผ๋ช…
            • page : ํŽ˜์ด์ง€ ๋ฒˆํ˜ธ
        4. from langchiain.document_loaders import PyPDFLoader
        5. UnstructuredPDFLoader
          • ๊ฐ€์žฅ ๋งŽ์€ metadata ์ •๋ณด ์ œ๊ณต
          • ์†๋„๊ฐ€ ๋‹ค๋ฅธ Loader ๋Œ€๋น„ ๋Š๋ฆผ
            • page ๋ฒˆํ˜ธ๋งŒ ํ•„์š”ํ•˜๋‹ค๋ฉด ํ•ด๋‹น ๋ชจ๋“ˆ์„ ๊ตณ์ด ์‚ฌ์šฉํ•  ํ•„์š”๋Š” ์—†์Œ
        6. loader = UnstructuredPDFLoader('pdf์ €์žฅ๋งํฌ') docs = loader.load()
        7. PDFPlumber
          • ํ•œ๊ธ€ ์ธ์ฝ”๋”ฉ ์ฒ˜๋ฆฌ ๋Šฅ๋ ฅ์ด ์šฐ์ˆ˜, ๋‹ค์–‘ํ•œ meta data๋ฅผ ์ œ๊ณตํ•จ
          • ๋‹ค์–‘ํ•œ metadata ์ •๋ณด๋ฅผ ํฌํ•จํ•˜๊ณ  ์žˆ์Œ
          • ์ฝ๊ธฐ ์†๋„๊ฐ€ ๊ฐ€์žฅ ๋Š๋ฆผ(UnstructuredPDFLoader ๋น„์Šท)
        8. from langchain_community.document_loader import PDFlumberLoader loader = PDFPlumberLoader('pdf์ €์žฅ๋งํฌ') docs = loader.load()
    2. Text Split
      1. CharacterTextSplitter - ๊ถŒ์žฅ x
        • ๋ถ„ํ• ์ด ๊ฐ€๋Šฅํ•œ ์ตœ์†Œ์˜ ๋‹จ์œ„๋กœ ๋ถ„ํ•  ์‹œ๋„(๊ณต๋ฐฑ์ด๋‚˜ ‘.’๋ฅผ ๊ธฐ์ค€์œผ๋กœ ๋ถ„ํ• )
          • ๋ฌธ์žฅ์ด ์™„์„ฑ๋˜์ง€ ๋ชปํ•˜๊ณ  ์งค๋ฆฌ๋Š” ๊ฒฝ์šฐ๊ฐ€ ์กด์žฌํ•  ์ˆ˜ ์žˆ์Œ.. (๊ณต๋ฐฑ์ด๋‚˜ .์„ ๊ธฐ์ค€์œผ๋กœ ๋ถ„ํ• ํ•˜๊ธฐ ๋•Œ๋ฌธ์—)
      2. RecursiveCharacterTextSplitter - ์ถ”์ฒœ ๋ชจ๋“ˆ
        • ๋ฒ”์šฉ์ ์œผ๋กœ ๋งŽ์ด ์“ฐ์ด๋Š” ๋ถ„ํ•  ๋ฐฉ์‹
        • ๋‹จ๋ฝ → ๋ฌธ์žฅ → ๋‹จ์–ด ์ˆœ์„œ๋กœ ๋ถ„ํ• ํ•˜๋ ค๊ณ  ์‹œ๋„ (๋‹จ๋ฝ ์ž์ฒด๊ฐ€ ํฐ ์˜๋ฏธ์ด๊ธฐ ๋•Œ๋ฌธ)
      3. TokenTextSplitter
        • ํ•œ๊ธ€ ์ฒ˜๋ฆฌ๊ฐ€ ๋ชจํ˜ธํ•จ
      4. HuggingFace
        • ๋‹ค์–‘ํ•œ ํ† ํฌ๋‚˜์ด์ € ์‚ฌ์šฉ
          • BPE
          • Subword Tokenizer
          • WordPiece
          • SentencePiece
          • spaCy
          • Moses
      5. SemanticChunker(experimental)
        • ์˜๋ฏธ ์œ ์‚ฌ์„ฑ์— ๋”ฐ๋ผ ๋ถ„ํ• 
        • OpenAIEmbedding ์„ ์ •
  • Dense Vector ํ˜•ํƒœ์˜ Sentence Embedding ๋ณ€ํ™˜ํ•˜๊ธฐ
    • Document Embedding / Query Embedding → ๋™์ผํ•œ ์ž„๋ฒ ๋”ฉ ๋ชจ๋ธ(๋ฒ„์ „)์„ ์‚ฌ์šฉํ•ด์•ผ ์œ ์‚ฌ๋„ ์ฐพ๋Š” ๋ถ€๋ถ„์—์„œ ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•˜์ง€ ์•Š๋Š”๋‹ค.
    1. OpenAIEmbedding(์œ ๋ฃŒ) - CacheBackedEmbeddings(๊ฐ์‹ธ์„œ ์‚ฌ์šฉํ•  ๊ฒƒ)
      • GPU๋ฅผ ์“ธ ํ•„์š”๊ฐ€ ์—†์Œ
      1. text-embedding-3-small
      2. text-embedding-3-large
      3. text-embedding-ada-002
      text-embedding-3-small
    2. OpenSource(HuggingFace)
      1. BGE
      2. Mistral
    3. Open LLM Leaderboard - a Hugging Face Space by HuggingFaceH4
  • ๋‚˜์ค‘์— Retrieval ๋‹จ๊ณ„์—์„œ ๋น ๋ฅด๊ฒŒ ๊ฒ€์ƒ‰ํ•ด์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก Indexingํ•˜์—ฌ Vector DB์— ์ €์žฅ(Store)ํ•˜๊ธฐ
    1. FAISS

2. ์ž…๋ ฅ ์ˆ˜์‹  (Input Reception)

3. ๋ฌธ์„œ ๊ฒ€์ƒ‰ (Document Retrieval)

  • ๊ฒ€์ƒ‰ ์‹œ์Šคํ…œ ํ™œ์„ฑํ™” (Retrieval System Activation): ์ฒซ ๋ฒˆ์งธ ์ฃผ์š” ๋‹จ๊ณ„๋Š” ๊ฒ€์ƒ‰ ์‹œ์Šคํ…œ์„ ํ™œ์„ฑํ™”ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด ์‹œ์Šคํ…œ์€ ๋Œ€๊ทœ๋ชจ ๋ฌธ์„œ ์ฝ”ํผ์Šค๋‚˜ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค(์œ„ํ‚คํ”ผ๋””์•„๋‚˜ ์ „๋ฌธํ™”๋œ ๋ฐ์ดํ„ฐ์…‹๊ณผ ๊ฐ™์€)๋ฅผ ๊ฒ€์ƒ‰ํ•˜๋„๋ก ์„ค๊ณ„๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • ์ฟผ๋ฆฌ ์ฒ˜๋ฆฌ (Retrieval System Activation): ์ž…๋ ฅ ์ฟผ๋ฆฌ๋Š” ๊ฒ€์ƒ‰ ์‹œ์Šคํ…œ์ด ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒ€์ƒ‰ ์ฟผ๋ฆฌ๋ฅผ ํ˜•์„ฑํ•˜๊ธฐ ์œ„ํ•ด ์ฒ˜๋ฆฌ๋ฉ๋‹ˆ๋‹ค.
    • ํ”„๋กœ์„ธ์Šค๋Š” ์ž…๋ ฅ ์ฟผ๋ฆฌ ๋˜๋Š” ํ”„๋กฌํ”„ํŠธ๋ฅผ ๋ฐ›๋Š” ๊ฒƒ์œผ๋กœ ์‹œ์ž‘๋ฉ๋‹ˆ๋‹ค. ์ด ์ฟผ๋ฆฌ๊ฐ€ RAG ํ”„๋กœ์„ธ์Šค๋ฅผ ํ™œ์„ฑํ™”ํ•ฉ๋‹ˆ๋‹ค.
  • ๋ฌธ์„œ ๊ฐ€์ ธ์˜ค๊ธฐ (Document Fetching): ๊ฒ€์ƒ‰ ์‹œ์Šคํ…œ์€ ์ฒ˜๋ฆฌ๋œ ์ฟผ๋ฆฌ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์ฝ”ํผ์Šค๋ฅผ ๊ฒ€์ƒ‰ํ•˜๊ณ  ๊ด€๋ จ ๋ฌธ์„œ๋‚˜ ์ •๋ณด ์Šค๋‹ˆํŽซ์„ ๊ฒ€์ƒ‰ํ•ฉ๋‹ˆ๋‹ค.
    1. Multi-Query Retriever
      • ๊ฑฐ๋ฆฌ ๊ธฐ๋ฐ˜ ๋ฒกํ„ฐ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ฒ€์ƒ‰์€ ์œ ์‚ฌํ•œ Embedding๋œ ๋ฌธ์„œ๋ฅผ ์ฐพ์Œ
      • Query ๋ฌธ๊ตฌ๊ฐ€ ๋ฏธ๋ฌ˜ํ•˜๊ฒŒ ๋ณ€๊ฒฝ๋˜๊ฑฐ๋‚˜ Embedding์ด ๋ฐ์ดํ„ฐ์˜ ์˜๋ฏธ๋ฅผ ์ œ๋Œ€๋กœ ํฌ์ฐฉํ•˜์ง€ ๋ชปํ•˜๋Š” ๊ฒฝ์šฐ, ๊ฒ€์ƒ‰ ๊ฒฐ๊ณผ๊ฐ€ ๋‹ฌ๋ผ์งˆ ์ˆ˜ ์žˆ์Œ
      ex) ‘Page Rank’์— ๋Œ€ํ•ด ์•Œ๋ ค์ค˜
    2. ๊ฒฐ๊ณผ : Page Rank ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ์ž‘๋™ ์›๋ฆฌ๋Š”? / Rank ์‚ฌ์šฉํ•˜๋Š” ์ด์œ ์™€ ํšจ๊ณผ์— ๋Œ€ํ•ด์„œ ์„ค๋ช…ํ•˜๋ผ / Rank ๊ธฐ์ˆ ์— ๋Œ€ํ•œ ์ƒ์„ธํ•œ ์ •๋ณด๋ฅผ ์ œ๊ณตํ•ด์ค˜๋ผ
    3. Ensemble Retriever(Spare + Dense)
      • Semantic Search๊ฐ€ ์œ ์‚ฌ ์˜๋ฏธ๋ฅผ ๊ฐ€์ง€๋Š” ๋ฌธ์„œ์˜ ๊ฒ€์ƒ‰์—์„œ๋Š” ์œ ๋ฆฌํ•˜์ง€๋งŒ, ํŠน์ • ํ‚ค์›Œ๋“œ๊ฐ€ ๋ฐ˜๋“œ์‹œ ํฌํ•จ๋˜์–ด์•ผ ํ•˜๋Š” ๊ฒ€์ƒ‰ ์‹œ ์œ ์‚ฌ ๋‹จ์–ด๊ฐ€ ํฌํ•จ๋œ ๋ฌธ์„œ๊ฐ€ ๊ฒ€์ƒ‰๋  ์ˆ˜ ์žˆ์Œ
        • ex) ๋น„ํƒ€๋ฏผ A ์˜์–‘์ œ ์ถ”์ฒœํ•ด์ค˜ → ๊ฒ€์ƒ‰๊ฒฐ๊ณผ๋กœ๋Š” ๋น„ํƒ€๋ฏผ D, ๋น„ํƒ€๋ฏผ C๊ฐ€ ๋‚˜์˜ฌ ์ˆ˜๋„ ์žˆ๋‹ค๋Š” ๊ฒƒ.
        ⇒ A๊ฐ€ ํฌํ•จ๋œ ๊ฒฐ๊ณผ(ํŠน์ • ํ‚ค์›Œ๋“œ๊ฐ€ ๊ผญ ์žˆ๋Š”)๋ฅผ ์–ป๊ณ  ์‹ถ์œผ๋ฉด, Sparse Retriever(BM25Retriever)์„ ์‚ฌ์šฉ
      • ⇒ ์˜๋ฏธ ๊ฒ€์ƒ‰์„ ํ•˜๊ณ  ์‹ถ์„ ๋•Œ์—๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ Dense Retriever(FAISSRetriever)์„ ์‚ฌ์šฉ
    4. Multi-Vector Retriever
      • ์—ฌ๋Ÿฌ VectorStore์˜ Retriever๋ฅผ ์•™์ƒ๋ธ”
    5. ContextualCompressor
      • ๊ธด ๊ธธ์ด์˜ ๋ฌธ์„œ ๊ฒ€์ƒ‰ ๊ฒฐ๊ณผ๋ฅผ ์••์ถ•
    6. LLMChainFilter
      • ๋ฌธ์„œ์˜ ๊ฒ€์ƒ‰ ๊ฒฐ๊ณผ๋ฅผ ํ•„ํ„ฐ๋ง

4. ์ •๋ณด ์ฆ๊ฐ• (Information Augmentation)

  • ๋งฅ๋ฝ ํ†ตํ•ฉ (Context Integration): ๊ฒ€์ƒ‰๋œ ๋ฌธ์„œ๋Š” ์ž…๋ ฅ ์ฟผ๋ฆฌ๋ฅผ ์ฆ๊ฐ•ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ์ด ๋‹จ๊ณ„๋Š” ์›๋ž˜ ์ž…๋ ฅ๊ณผ ๋ฌธ์„œ์—์„œ ์ถ”์ถœ๋œ ๊ด€๋ จ ์ •๋ณด๋ฅผ ๊ฒฐํ•ฉํ•˜๋Š” ๊ฒƒ์„ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค.
  • ์ฆ๊ฐ•๋œ ์ž…๋ ฅ ํ˜•์„ฑ (Context Integration): ์ฆ๊ฐ•๋œ ์ž…๋ ฅ์ด ํ˜•์„ฑ๋˜๋ฉฐ, ์ด์ œ ์›๋ž˜ ์ฟผ๋ฆฌ์™€ ๊ฒ€์ƒ‰๋œ ๋ฌธ์„œ์˜ ์ถ”๊ฐ€ ๋งฅ๋ฝ์„ ๋ชจ๋‘ ํฌํ•จํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

5. ์–ธ์–ด ๋ชจ๋ธ์ด ๋‹ต๋ณ€ ์ƒ์„ฑ (Language Model Generation)

  • ์ฆ๊ฐ•๋œ ์ž…๋ ฅ ๊ณต๊ธ‰ (Feeding Augmented Input): ์ด ์ฆ๊ฐ•๋œ ์ž…๋ ฅ์€ ์ผ๋ฐ˜์ ์œผ๋กœ GPT๋‚˜ BART์™€ ๊ฐ™์€ ์‹œํ€€์Šค-ํˆฌ-์‹œํ€€์Šค ๋ชจ๋ธ์ธ ์–ธ์–ด ๋ชจ๋ธ์— ๊ณต๊ธ‰๋ฉ๋‹ˆ๋‹ค.
  • ์‘๋‹ต ์ƒ์„ฑ (Response Generation): ์–ธ์–ด ๋ชจ๋ธ์€ ์ฆ๊ฐ•๋œ ์ž…๋ ฅ์„ ์ฒ˜๋ฆฌํ•˜๊ณ  ์‘๋‹ต์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. ์ด ์‘๋‹ต์€ ๋ชจ๋ธ์˜ ์‚ฌ์ „ ํ›ˆ๋ จ๋œ ์ง€์‹๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ๊ฒ€์ƒ‰ ๋‹จ๊ณ„์—์„œ ๊ฐ€์ ธ์˜จ ์™ธ๋ถ€ ์ •๋ณด์— ์˜ํ•ด ์ •๋ณด๋ฅผ ์ œ๊ณต๋ฐ›์Šต๋‹ˆ๋‹ค.

6. ์ถœ๋ ฅ ์ƒ์„ฑ (Output Production)

  • ์ •์ œ ๋ฐ ํ˜•์‹ํ™” (Refinement and Formatting): ์ƒ์„ฑ๋œ ์‘๋‹ต์€ ํ•„์š”์— ๋”ฐ๋ผ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์š”๊ตฌ ์‚ฌํ•ญ์— ๋งž๊ฒŒ ์ •์ œ๋˜๊ฑฐ๋‚˜ ํ˜•์‹ํ™”๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์•„์›ƒํ’‹ ์ „๋‹ฌ (Output Delivery): ์ตœ์ข… ์‘๋‹ต์€ RAG ํ”„๋กœ์„ธ์Šค์˜ ์ถœ๋ ฅ์œผ๋กœ ์ „๋‹ฌ๋ฉ๋‹ˆ๋‹ค. ์ด ์ถœ๋ ฅ์€ ์ผ๋ฐ˜์ ์œผ๋กœ ๋…๋ฆฝ์ ์ธ ์–ธ์–ด ๋ชจ๋ธ์— ์˜ํ•ด ์ƒ์„ฑ๋œ ์‘๋‹ต๋ณด๋‹ค ๋” ์ •๋ณด์— ๊ทผ๊ฑฐํ•˜๊ณ  ์ •ํ™•ํ•˜๋ฉฐ ๋งฅ๋ฝ์ ์œผ๋กœ ๊ด€๋ จ์„ฑ์ด ๋†’์Šต๋‹ˆ๋‹ค.

 

 

https://www.youtube.com/watch?v=KDM6UM-msZk

๊ฒ€์ƒ‰ ์ฆ๊ฐ• ์ƒ์„ฑ(Retrieval-augmented generation, RAG) - Google Search

 

๐Ÿ”Ž ๊ฒ€์ƒ‰ ์ฆ๊ฐ• ์ƒ์„ฑ(Retrieval-augmented generation, RAG): Google ๊ฒ€์ƒ‰

 

www.google.com

 

728x90
๋ฐ˜์‘ํ˜•