[TIL] 내일배움캠프 85일차_[LLM] RAG(Retrieval-Augmented Generation)
👀Today I Learn
RAG
- RAG(Retrieval-Augmented Generation)는 기존의 자연어 생성(NLG) 모델과 검색(Retrieval) 시스템을 결합한 방식으로, 더욱 정확하고 신뢰할 수 있는 정보를 기반으로 텍스트를 생성하는 기법
- RAG는 검색 기반 증강 생성 모델로, OpenAI GPT 같은 언어 모델이 단순히 기존에 학습한 데이터에 의존하는 것이 아니라, 실시간 검색(Retrieval) 기능을 활용하여 최신 정보나 외부 문서를 참고할 수 있도록 함
- 이를 통해 생성된 응답의 정확성을 향상시키고, 더욱 신뢰할 수 있는 답변을 제공할 수 있음
RAG의 동작 방식
- 사용자의 입력을 받음 : 사용자가 질문을 입력하면 모델이 이를 분석
- 관련 문서 검색 : 질문과 관련된 문서를 외부 데이터베이스(Vector DB)나 검색 엔진에서 검색
- 언어 모델과 결합 : 검색된 문서를 참고하여 GPT와 같은 생성 모델이 답변을 생성
- 최종 응답 생성 : 검색된 정보와 언어 모델의 문맥적 이해를 조합하여 최종 답변을 제공
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도 어렵고.. 쉬운게 없는 나의 일상!🫠
댓글남기기