[파이썬 실험] RAG 개념과 GPT-3.5로 PDF 요약 실습하기

2025-06-14 08:16:57

퇴근 후, 조용히 취미처럼 파이썬을 끄적인다.

오늘은 오랜만에 기술적인 탐구를 해보고 싶어서,

AI 시스템과 협업해 샘플 코드를 완성했고,

그 과정을 기록으로 남겨두려 한다.

요즘은 정보 분석 과정에서 AI 모듈의 도움을 받는 흐름이 일반화되고 있다.

나도 그런 흐름에 맞춰 실험을 진행해봤는데,

AI와 대화하며 설계했던 내용이 놀랍게도

요즘 자주 언급되는 RAG (Retrieval-Augmented Generation) 구조와

일치한다는 걸 알게 되었다. 


RAG란?

간단히 말해,

외부 데이터 소스에서 정보를 불러와 텍스트 생성 모델(GPT 등)에 연결하는 기술이다.

→ 보고서, 문서, DB 같은 실질적 자료를 기반으로

AI가 보다 정확한 응답을 생성할 수 있도록 돕는 구조다.


이번 실습 내용


환경 구성 요약


 주의사항


실행 코드

from langchain.document_loaders import PyPDFLoader

from langchain.text_splitter import RecursiveCharacterTextSplitter

from langchain.vectorstores import FAISS

from langchain.embeddings import HuggingFaceEmbeddings

from langchain.chat_models import ChatOpenAI

from langchain.chains import RetrievalQA

import os

# 1. PDF 파일 경로

pdf_path = "./REPORT/2025_11013_KT밀리의서재_분기보고서 공시뷰어 새창.pdf"



# 2. PDF 로드

loader = PyPDFLoader(pdf_path)

documents = loader.load()



# 3. 청킹

text_splitter = RecursiveCharacterTextSplitter(chunk_size=1000, chunk_overlap=100)

docs = text_splitter.split_documents(documents)



# 4. 임베딩 모델 준비 (sentence-transformers)

embedding_model = HuggingFaceEmbeddings(model_name="sentence-transformers/all-MiniLM-L6-v2")



# 5. 벡터 저장소 생성

vectorstore = FAISS.from_documents(docs, embedding_model)



# 6. LLM 연결 (OpenAI GPT 사용)

#llm = OpenAI(temperature=0, model_name="gpt-3.5-turbo")  # OpenAI API key 필요



llm = ChatOpenAI(

    model="gpt-3.5-turbo",

    temperature=0,

    openai_api_key=os.getenv("OPENAI_API_KEY")

)



# 7. 질의 응답 체인 구성

qa_chain = RetrievalQA.from_chain_type(

    llm=llm,

    retriever=vectorstore.as_retriever(),

    return_source_documents=True

 

)



# 8. 질문 실행

query = "이 보고서는 어떤 기업의 무슨 년도 무슨 보고서인가요?"

#response = qa_chain.run(query)

response = qa_chain.invoke(query)










print(" AI 응답:", response["result"])


마무리 한 줄

기술은 어렵지만,

이렇게 하나하나 실험하고 기록하면 언젠가는 내 것이 된다.

이번 실습도 그 과정 중 하나였다.

목록
Facebook 이 댓글은 페이스북 로그인으로만 작성할 수 있어요.
페이스북 공유 이 글을 페이스북에 공유하기