RAG (검색 증강 생성)

RAGλž€?

RAG(Retrieval-Augmented Generation)λŠ” 정보 검색(Retrieval)κ³Ό ν…μŠ€νŠΈ 생성(Generation)을 κ²°ν•©ν•œ AI λͺ¨λΈ μ•„ν‚€ν…μ²˜μž…λ‹ˆλ‹€. μ™ΈλΆ€ 지식 μ†ŒμŠ€μ—μ„œ 정보λ₯Ό κ²€μƒ‰ν•œ ν›„, 이 정보λ₯Ό λ°”νƒ•μœΌλ‘œ 닡변을 μƒμ„±ν•˜λŠ” λ°©μ‹μœΌλ‘œ μž‘λ™ν•©λ‹ˆλ‹€.

RAG의 μ£Όμš” ꡬ성 μš”μ†Œ

  1. Retriever: μ‚¬μš©μž 쿼리와 κ΄€λ ¨λœ λ¬Έμ„œλ‚˜ 정보λ₯Ό μ™ΈλΆ€ μ†ŒμŠ€μ—μ„œ 검색
  2. Generator: κ²€μƒ‰λœ 정보λ₯Ό λ°”νƒ•μœΌλ‘œ μžμ—°μŠ€λŸ¬μš΄ 응닡 생성
  3. Vector Database: λ¬Έμ„œλ₯Ό 벑터 ν˜•νƒœλ‘œ μ €μž₯ν•˜κ³  μœ μ‚¬λ„ 기반 검색을 지원

RAG의 μž₯점

κ°„λ‹¨ν•œ RAG κ΅¬ν˜„ 예제 (Python)

from transformers import RagTokenizer, RagRetriever, RagSequenceForGeneration
import torch

# λͺ¨λΈκ³Ό ν† ν¬λ‚˜μ΄μ € λ‘œλ“œ
tokenizer = RagTokenizer.from_pretrained("facebook/rag-sequence-nq")  
retriever = RagRetriever.from_pretrained("facebook/rag-sequence-nq", index_name="exact")
model = RagSequenceForGeneration.from_pretrained("facebook/rag-sequence-nq", retriever=retriever)

# 질문 μ„€μ •
input_text = "RAGκ°€ λ¬΄μ—‡μΈκ°€μš”?"

# λͺ¨λΈμ— μž…λ ₯ μ „μ²˜λ¦¬
inputs = tokenizer(input_text, return_tensors="pt")

# λ‹΅λ³€ 생성
outputs = model.generate(inputs["input_ids"])
# μƒμ„±λœ λ‹΅λ³€ λ””μ½”λ”©
print(tokenizer.decode(outputs[0], skip_special_tokens=True))

RAG ν™œμš© 사둀

  1. μ§ˆμ˜μ‘λ‹΅ μ‹œμŠ€ν…œ
  2. 고객 μ„œλΉ„μŠ€ 챗봇
  3. 기술 λ¬Έμ„œ 검색 및 μš”μ•½
  4. 지식 기반 λŒ€ν™” μ‹œμŠ€ν…œ

RAG의 ν•œκ³„

참고 자료

What Else?
inflearn react api server -50% 할인쿠폰: 20652-ab1f1cd4c373 buy me a coffee