관리 메뉴

너와 나의 스토리

[LLM] Faiss 기본 개념과 사용법 본문

Data Analysis/LLM

[LLM] Faiss 기본 개념과 사용법

노는게제일좋아! 2024. 8. 10. 15:01
반응형

2024.08.10 - [Data Analysis/LLM] - [LLM] RAG with OpenAI 쉬운 구현 방법과 설명

 

Faiss

  • Facebook AI Research에서 개발한 효율적인 벡터 검색 및 클러스터링 라이브러리
  • 이는 대규모 디비에서 유사한 벡터를 빠르게 검색하는 데 사용된다.
  • 주요 기능
    • 고차원 벡터 근접 이웃 탐색(Approximate Nearest Neighbor Search, ANN)
    • 대규모 데이터 처리
    • 인덱스 및 클러스터링
    • 여러 가지 알고리즘을 조합하여 사용 가능 
    • CPU와 GPU 모두 동작할 수 있게 설계되어 있음
  • 이러한 기능을 CPU에서 실행할 수 있도록 한 버전 -> Faiss-cpu

 

LangChain에서 벡터 저장소를 이용해 문서를 검색할 때, 다양한 옵션을 설정하는 예제

1. MMR(Maximum Marginal Relevance)

  • 검색된 문서들 사이에서 다양성을 높이기 위한 알고리즘
  • 일반적인 검색에서는 가장 유사한 문서만 바환되지만, MMR을 사용하면 유사하면서도 서로 중복되지 않는 문서를 반환
vectorstore.as_retriever(
    search_type="mmr",
    search_kwargs={'k': 6, 'lambda_mult': 0.25}
)

 

2. MMR 검색

  • MMR 알고리즘이 다양한 문서를 선택할 수 있는 폭을 넓혀줌 
  • 예: 50개의 문서를 검색한 후, 그 중에서 가장 다양한 5개의 문서를 반환하라
vectorstore.as_retriever(
    search_type="mmr",
    search_kwargs={'k': 5, 'fetch_k': 50}
)

 

3. 유사성 점수 기준 검색

  • 유사성 점수 기준(score_threshold)을 설정하여, 특정 기준 점수 이상인 문서들만 반환
vectorstore.as_retriever(
    search_type="similarity_score_threshold",
    search_kwargs={'score_threshold': 0.8}
)

 

4. 가장 유사한 문서 하나만 검색

  • 검색 결과 중 가장 유사한 k개의 문서만 반환
vectorstore.as_retriever(search_kwargs={'k': 1})

 

5. 특정 조건을 가진 문서만 검색

  • 필터링된 검색을 통해 특정 조건을 만족하는 문서만 검색
  • 예: "GPT-4 Technical Report"라는 제목을 가진 논문에서만 문서를 검색
vectorstore.as_retriever(
    search_kwargs={'filter': {'paper_title':'GPT-4 Technical Report'}}
)
반응형
Comments