01. FAISS (Facebook AI Similarity Search)
- 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(1−cosθ) → 랭킹이 동일해질 수 있음
- 주의: 정규화 여부에 따라 결과가 달라질 수 있음
03. LangChain VectorStore & Retriever
- FAISS.from_documents(docs, embedding) 으로 인덱스 구성
- as_retriever(search_type=...)로 검색 모듈화
- 주요 인자
- k: 반환할 문서 수
- fetch_k: MMR에서 후보 풀 크기
- lambda_mult: 0(다양성↑) ~ 1(유사도↑) 조절
04. Similarity Search
- 함수: similarity_search() / similarity_search_with_score()
- 주의: score 의미는 백엔드별로 다름
- FAISS(FlatL2): L2 distance 반환 (낮을수록 유사)
- 임곗값 조절 시
- 높이면 → 노이즈 감소
- 낮추면 → 더 많은 후보 포함
05. Colab 실습 요약
- 텍스트 문서 로드 → 임베딩(OpenAI/HuggingFace 등) → FAISS 인덱스 생성
- similarity_search 실행 후 결과 점수 확인
- Retriever로 변환해 QA 체인 등 응용 가능