TIL

👀Today I Learn

RAG

  • RAG(Retrieval-Augmented Generation)는 기존의 자연어 생성(NLG) 모델과 검색(Retrieval) 시스템을 결합한 방식으로, 더욱 정확하고 신뢰할 수 있는 정보를 기반으로 텍스트를 생성하는 기법
  • RAG는 검색 기반 증강 생성 모델로, OpenAI GPT 같은 언어 모델이 단순히 기존에 학습한 데이터에 의존하는 것이 아니라, 실시간 검색(Retrieval) 기능을 활용하여 최신 정보나 외부 문서를 참고할 수 있도록 함
  • 이를 통해 생성된 응답의 정확성을 향상시키고, 더욱 신뢰할 수 있는 답변을 제공할 수 있음

RAG의 동작 방식

Image

  1. 사용자의 입력을 받음 : 사용자가 질문을 입력하면 모델이 이를 분석
  2. 관련 문서 검색 : 질문과 관련된 문서를 외부 데이터베이스(Vector DB)나 검색 엔진에서 검색
  3. 언어 모델과 결합 : 검색된 문서를 참고하여 GPT와 같은 생성 모델이 답변을 생성
  4. 최종 응답 생성 : 검색된 정보와 언어 모델의 문맥적 이해를 조합하여 최종 답변을 제공


RAG 모델 구축 과정

1. 환경 설정

  • RAG를 활용한 AI 모델을 개발하기 위해 필요한 패키지를 설치

      !pip install langchain_openai
      !pip install langchain-community
      !pip install pypdf
      !pip install faiss-cpu
    

2. API 키 설정

  • OpenAI API를 활용하기 위해 환경 변수에 API 키를 설정

      import os
      from getpass import getpass
    
      os.environ["OPENAI_API_KEY"] = getpass("OpenAI API key 입력: ")
    

3. DB 및 검색 시스템 구축

  • FAISS: 벡터 검색을 위해 Facebook AI의 FAISS 라이브러리를 활용하여 문서를 인덱싱함
  • LangChain: 검색과 생성 모델을 연결하는 프레임워크를 활용하여 문서를 검색하고 적절한 응답을 생성

      from langchain.vectorstores import FAISS
      from langchain.embeddings.openai import OpenAIEmbeddings
    
      # 벡터 데이터베이스 생성
      vector_db = FAISS.load_local("./data", OpenAIEmbeddings())
    

4. 검색 기반 답변 생성

from langchain.chains import RetrievalQA
from langchain.chat_models import ChatOpenAI

# 검색 기반 QA 시스템을 생성
qa_chain = RetrievalQA.from_chain_type(
    # OpenAI의 언어 모델을 사용
    llm=ChatOpenAI(),
    # 벡터 데이터베이스에서 검색
    retriever=vector_db.as_retriever()
)

# 사용자 질문 입력
question = "RAG 모델의 장점은 무엇인가요?"

# RAG 기반 답변 생성
answer = qa_chain.run(question)

# 결과 출력
print(answer)


RAG의 장점 및 활용 가능성

장점

  • 최신 정보 반영: 모델이 훈련 데이터에 의존하지 않고 실시간으로 최신 정보를 검색하여 반영할 수 있음
  • 신뢰도 향상: 검색된 문서를 기반으로 답변을 생성하므로 정보의 신뢰도가 높음
  • 특정 도메인에 적합: 특정 분야의 문서를 참고하여 더 정확한 답변을 제공 가능

활용 가능성

  • 의료, 법률, 연구 논문 등의 전문 분야에서 신뢰할 수 있는 AI 어시스턴트
  • 고객 지원 시스템에서 사용자 질문에 대한 정확한 답변 제공



💡Today I Thought

오늘의 체크리스트

  • 알고리즘 코드카타 321
  • SQL 코드카타 119
  • Chatbot UI 구현 ➡️ 틀 만들기
  • TIL 작성

회고

 오늘 하루도 팀플로 하루가 호다닥 지나갔다. 깃헙도 어렵구,, Streamlit도 어렵고 chatbot도 어렵고.. 쉬운게 없는 나의 일상!🫠

댓글남기기