벡터 스토어 (Vector Store) 정리
이 비디오에서는 LangChain에서 사용되는 벡터 스토어에 대해 설명합니다. 벡터 스토어는 임베딩된 텍스트 벡터를 저장하여 검색 시스템에서 효율적인 유사도 검색을 가능하게 합니다. 주요 내용은 다음과 같습니다.
벡터 스토어의 역할
- 임베딩: 텍스트를 수치화된 벡터 형태로 변환합니다.
- 유사도 검색: 질문이나 입력과 가장 유사한 벡터를 찾고, 해당 벡터와 연결된 텍스트 청크를 반환합니다.
벡터 스토어 종류
크게 두 가지 유형으로 나뉩니다.
- 퓨어 벡터 데이터베이스 (Pure Vector Databases):
- 벡터 형태의 값만 저장 가능하며, 업데이트, 삭제, 이동 등의 기능을 제공합니다.
- 예시: Pinecone, Weaviate, Chroma
- 벡터 라이브러리 (Vector Libraries):
- 벡터 유사도 계산에 특화된 도구입니다.
- 예시: FAISS (Facebook AI Similarity Search)
Chroma
- 오픈 소스이며 무료로 사용할 수 있는 벡터 데이터베이스입니다.
- 임베딩된 문서를 저장하는 데 많이 활용됩니다.
- 임시 저장(변수) 또는 영구 저장(디스크)을 지원합니다.
persist_directory를 사용하여 로컬 디스크에 저장할 수 있습니다.
FAISS
- 페이스북에서 개발한 AI 시멘틱 검색 도구입니다.
- 고밀도 벡터의 효율적인 유사도 검색을 제공합니다.
- GPU 가 없는 환경에서도 CPU 버전 사용 가능합니다.
save_local함수로 로컬에 저장하고,load_local함수로 불러올 수 있습니다.
유사도 검색 (Similarity Search)
- 단순히 가장 유사한 문서를 찾는 것 외에, 유사도 점수를 함께 반환할 수 있습니다.
similarity_search_with_score함수를 사용해 유사도 점수를 함께 확인할 수 있습니다.max_marginal_relevance_search함수는 유사도와 다양성을 모두 고려하여 결과를 제공합니다.fetch_k파라미터는 다양성을 유지하기 위해 검색할 문서의 총 개수를 지정합니다.lambda_mult파라미터는 유사도와 다양성 중 어떤 것에 더 가중치를 둘지 결정합니다.
추가 내용
- 토큰화: 텍스트를 토큰으로 나누고 토큰 수를 세는 과정을 거쳐 청크 크기를 조절합니다.
- 문서 로딩 및 분할: PDF 문서를 로드하고 페이지별로 분할한 다음, 텍스트 스플리터를 사용하여 여러 청크로 나눕니다.
- 임베딩 모델: 허깅페이스(Hugging Face)에서 한국어 사전 학습된 모델을 사용하여 임베딩을 수행합니다.
이 비디오에서는 이러한 과정을 통해 RAG 시스템에서 질문에 대한 답변을 제공하는 방법을 설명합니다. 다양한 벡터 스토어와 검색 방법을 비교함으로써 필요에 맞는 솔루션을 선택할 수 있도록 안내합니다.