본문 바로가기
프로그래밍/AI 머신러닝,LLM

RAG(Retrieval-Augmented Generation)

by -현's- 2025. 4. 26.
반응형

●RAG

RAG는 검색 기반 생성(Retrieval-Augmented Generation)의 약자로 LLM이 외부 DB에서 정보를 검색한 후 이를 기반으로 더 정확한 정보를 생성하는 방식입니다.

LLM은 고정된 데이터를 학습했기 때문에 최신 정보나 훈련 데이터에 없는 내용은 모를 수 있기 때문에 DB에서 검색후 찾아와서 답변하는 기법입니다.

RAG를 사용하면 할루시네이션(잘못된 답변)으르 줄일 수 있고, 정확도가 향상되고 최신 정보를 반영할 수 있습니다.

#먼저, RAG를 구현하기 위해 아래 패키지를 설치합니다.

!pip install -U langchain langchain-community faiss-cpu sentence-transformers


#벡터 DB에 데이터 저장 

from langchain_community.vectorstores import FAISS
from langchain_community.embeddings import HuggingFaceEmbeddings
from langchain.text_splitter import RecursiveCharacterTextSplitter

# (1) 검색할 텍스트 데이터 (샘플 문서)
text_data = """
인공지능(AI)은 현대 사회에서 중요한 기술 중 하나로, 
자연어 처리, 컴퓨터 비전, 로보틱스 등의 다양한 분야에서 활용되고 있다.
특히, OpenAI의 GPT 모델은 자연어 이해 및 생성에 탁월한 성능을 보여준다.
"""

# (2) 문서를 작은 청크로 분할
splitter = RecursiveCharacterTextSplitter(chunk_size=100, chunk_overlap=10)
documents = splitter.create_documents([text_data])

# (3) OpenAIEmbeddings 대신 HuggingFaceEmbeddings 사용 (API 불필요)
embedding_model = HuggingFaceEmbeddings(model_name="sentence-transformers/all-MiniLM-L6-v2")
vectorstore = FAISS.from_documents(documents, embedding_model)

print("✅ 벡터 DB 생성 완료!")


# 벡터 검색 및 간단한 응답 생성

# (1) 유사한 문서 검색
query = "GPT 모델은 어떤 역할을 하나요?"
retrieved_docs = vectorstore.similarity_search(query, k=1)  # 가장 유사한 문서 1개 검색

# (2) 검색된 문서 출력
for i, doc in enumerate(retrieved_docs):
    print(f"\n🔍 검색된 문서 {i+1}:\n{doc.page_content}")

# (3) LLM 없이 간단한 응답 생성
context = "\n".join([doc.page_content for doc in retrieved_docs])
mock_response = f"'{context}' 내용을 참고하면, GPT 모델은 자연어 이해 및 생성에 탁월한 성능을 보여줍니다."

print("\n📝 테스트 답변:\n", mock_response)

반응형

 

반응형

'프로그래밍 > AI 머신러닝,LLM' 카테고리의 다른 글

LLM 기초  (0) 2025.04.23
심층신경망, cnn, rnn  (0) 2025.04.20
딥러닝, 신경망, 활성화 함수  (0) 2025.04.16
결정트리,군집화,차원축소  (0) 2025.04.12
파이썬 numpy, pandas  (0) 2025.04.07

댓글