FAISS 5

Sentence Transformers를 활용한 문장 임베딩 및 FAISS 검색 시스템 구축 [16]

SBERT(Sentence-BERT)는 문장 수준의 임베딩을 생성하여 자연어 처리(NLP)에서 문장 간 유사도를 효율적으로 계산할 수 있도록 도와주는 강력한 도구입니다. 이번 블로그에서는 SBERT 모델 중 distiluse-base-multilingual-cased-v1을 활용하여 문장을 벡터화하고, FAISS(Vector Search Library)를 사용하여 효율적으로 유사 문장을 검색하는 시스템을 구축하는 방법을 알아보겠습니다.SBERT와 FAISS를 활용한 주요 작업 흐름문서 리스트 준비: 검색 대상이 되는 문서를 리스트 형태로 준비합니다.SBERT로 문장 임베딩 생성: 사전 학습된 다국어 SBERT 모델을 사용해 각 문장을 벡터화합니다.FAISS로 벡터 저장소 구성: 생성된 벡터를 FAISS ..

문서 검색 성능 평가: BM25와 FAISS를 활용한 Hybrid Search 분석 [12]

문서 검색 시스템에서 성능 평가(Evaluation)는 매우 중요한 작업입니다. 오늘은 BM25와 FAISS 알고리즘을 결합한 Hybrid Search를 구현하고, 이를 평가하는 과정을 소개합니다. 이 글에서는 Python 코드 예제와 함께 정확도(Precision), 재현율(Recall), F1 점수를 계산하여 검색 성능을 분석하는 방법을 다룹니다.문서 검색 시스템 구성우리는 두 가지 검색 알고리즘을 결합한 Hybrid Search를 사용합니다.BM25: 단어 기반 검색 알고리즘으로, 검색어와 문서의 단어 겹침 정도를 바탕으로 검색.FAISS: OpenAI API의 Embedding을 활용하여 의미 기반 검색을 수행.from langchain_community.retrievers import BM25R..

LangChain으로 BM25와 FAISS를 활용한 Ensemble Retriever 실습 [11]

이번 실습에서는 BM25와 FAISS를 결합한 Hybrid Search(Ensemble Retriever)를 구현하고, 검색 결과를 테스트해 보겠습니다. 이 방법은 두 검색 알고리즘의 장점을 조합하여 더 나은 검색 결과를 제공할 수 있습니다.Hybrid Search란?Hybrid Search는 다양한 검색 알고리즘의 결과를 조합하여 최종 검색 결과를 도출하는 방법입니다.이번 실습에서는 BM25와 FAISS를 활용하며, 두 검색기의 결과를 가중치(Weights) 기반으로 결합하는 Ensemble Retriever를 구현합니다.BM25: 단어 기반 검색 알고리즘으로, 검색어와 문서 간 단어 겹침 정도를 기준으로 유사도를 측정합니다.FAISS: OpenAI API Embedding을 활용하여 벡터화된 문서를 ..

LangChain으로 BM25와 FAISS를 활용한 검색 알고리즘 비교 실습 [10]

단어 기반 검색 알고리즘(BM25)과 OpenAI API Embedding(FAISS)를 활용하여 동일한 데이터에 대해 검색 성능과 특징을 비교해 보았습니다.실습에 사용한 알고리즘BM25: 단어 기반 검색 알고리즘으로, 텍스트 데이터의 단어 빈도와 검색어와의 겹치는 정도를 바탕으로 유사도를 측정합니다.FAISS: OpenAI API의 임베딩을 활용하여 문서를 벡터화하고, 의미적으로 유사한 문서를 검색합니다.BM25와 FAISS 검색기를 설정하고 동일한 문서 리스트를 각각의 알고리즘에 입력하였습니다.BM25Retriever: 단어 빈도를 기반으로 검색FAISS: OpenAI API 임베딩을 활용하여 문서를 벡터화from langchain_community.retrievers import BM25Retrie..

LangChain으로 PDF 기반 검색기 구현하기: OpenAI Embeddings와 FAISS 활용 [9]

이 글에서는 LangChain과 OpenAI Embeddings, 그리고 FAISS를 활용하여 PDF 문서를 기반으로 질문-응답 검색기를 구현하는 방법을 소개합니다.이전에 진행했던 PDF 문서 파싱 및 청크 단위 분리 작업을 확장하여, 문서를 임베딩으로 변환한 후 검색 기능을 구현합니다.주요 구현 과정PDF 문서 파싱텍스트를 청크 단위로 분리임베딩 변환 및 벡터 저장질문을 벡터로 변환하여 유사도 기반 검색 수행PDF 검색기 구현 코드아래는 검색기를 구현하기 위한 Python 코드입니다:from langchain_community.document_loaders import PyPDFLoaderfrom langchain.text_splitter import CharacterTextSplitterfrom la..