• Meta AI(구 Facebook AI) 개발 오픈소스 라이브러리
  • 고차원 벡터 유사도 검색 & 클러스터링에 최적화
  • CPU/GPU 모두 지원 → 검색 속도 향상 + 메모리 절약
  • 핵심 작동 원리
    • Indexing: 대량 벡터를 검색 친화적 자료구조로 변환
    • IVF(공간 분할/클러스터링): 전체 벡터 공간을 Voronoi cell로 나누어 탐색 범위 축소
    • Quantization: 벡터를 8-bit 등 저차원 표현으로 압축
    • Search: 쿼리 벡터가 속한 구역에서만 유사 벡터 탐색

02. 거리 함수 (Similarity Metrics)

  • Cosine similarity: 각도 기반
  • L2 distance: 직선거리 기반
  • 정규화(unit vector) 시 두 값은 일정 관계
    L22=2(1cosθ)L_{2}^{2} = 2(1-cos\theta)
    → 랭킹이 동일해질 수 있음
  • 주의: 정규화 여부에 따라 결과가 달라질 수 있음

03. LangChain VectorStore & Retriever

  • FAISS.from_documents(docs, embedding) 으로 인덱스 구성
  • as_retriever(search_type=...)로 검색 모듈화
  • 주요 인자
    • k: 반환할 문서 수
    • fetch_k: MMR에서 후보 풀 크기
    • lambda_mult: 0(다양성↑) ~ 1(유사도↑) 조절
  • 함수: similarity_search() / similarity_search_with_score()
  • 주의: score 의미는 백엔드별로 다름
    • FAISS(FlatL2): L2 distance 반환 (낮을수록 유사)
  • 임곗값 조절 시
    • 높이면 → 노이즈 감소
    • 낮추면 → 더 많은 후보 포함

05. Colab 실습 요약

  • 텍스트 문서 로드 → 임베딩(OpenAI/HuggingFace 등) → FAISS 인덱스 생성
  • similarity_search 실행 후 결과 점수 확인
  • Retriever로 변환해 QA 체인 등 응용 가능
profile
2025화이팅!

0개의 댓글