반응형
이 글에서는 LangChain과 OpenAI Embeddings, 그리고 FAISS를 활용하여 PDF 문서를 기반으로 질문-응답 검색기를 구현하는 방법을 소개합니다.
이전에 진행했던 PDF 문서 파싱 및 청크 단위 분리 작업을 확장하여, 문서를 임베딩으로 변환한 후 검색 기능을 구현합니다.
주요 구현 과정
- PDF 문서 파싱
- 텍스트를 청크 단위로 분리
- 임베딩 변환 및 벡터 저장
- 질문을 벡터로 변환하여 유사도 기반 검색 수행
PDF 검색기 구현 코드
아래는 검색기를 구현하기 위한 Python 코드입니다:
from langchain_community.document_loaders import PyPDFLoader
from langchain.text_splitter import CharacterTextSplitter
from langchain_openai import OpenAIEmbeddings
from langchain_community.vectorstores import FAISS # FAISS는 벡터 DB 겸 검색기로 활용
import config
# OpenAI Embedding 모델 초기화
embedding_model = OpenAIEmbeddings(api_key=config.OPENAI_API_KEY)
# PDF 문서 로드
loader = PyPDFLoader("C:/LLM_project/investment assistant/test.pdf")
document = loader.load() # 전체 페이지 로드
# 텍스트를 청크 단위로 분리
text_splitter = CharacterTextSplitter(
separator='. ', # 문장 단위로 구분
chunk_size=500, # 청크 크기
chunk_overlap=100, # 청크 간 중복
length_function=len # 길이 측정 함수
)
texts = text_splitter.split_documents(document)
# 청크 텍스트를 임베딩으로 변환 후 벡터 DB에 저장
db = FAISS.from_documents(texts, embedding_model)
# 검색기로 활용하기 위한 설정
retriever = db.as_retriever()
# 검색 예제: 질문 입력
docs = retriever.invoke("2021년 출산율은?") # 유사도 비교를 통해 가장 유사한 벡터 반환
print(docs)
요약
이 글에서는 LangChain, OpenAI Embeddings, 그리고 FAISS를 사용해 PDF 문서 기반 검색기를 구현하는 방법을 알아보았습니다. 이 검색기는 PDF 문서를 분석하거나 특정 정보를 빠르게 찾는 데 유용합니다.
여러분도 직접 구현해 보고, 자신만의 PDF 기반 검색기를 만들어보세요! 🚀
위 과정을 통해 대규모 문서를 다루는 효율적인 검색 시스템을 구축할 수 있습니다.
반응형
'Investment-Assistant' 카테고리의 다른 글
LangChain으로 BM25와 FAISS를 활용한 Ensemble Retriever 실습 [11] (1) | 2024.11.26 |
---|---|
LangChain으로 BM25와 FAISS를 활용한 검색 알고리즘 비교 실습 [10] (0) | 2024.11.26 |
LangChain으로 문서를 쪼개는 방법: Splitter 실습 가이드 [8] (0) | 2024.11.22 |
LangChain의 PyPDF로 PDF 텍스트 추출하기: 간단한 실습 가이드 [7] (0) | 2024.11.22 |
OpenAI API를 활용한 RAG 아키텍처와 임베딩 실습 [6] (1) | 2024.11.21 |