태그: 벡터검색
이 태그가 포함된 글들입니다. (총 3개)
Faiss
Faiss - 벡터검색엔진 #
개요 - Overview #
Faiss(Facebook AI Similarity Search)는 Meta(구 Facebook)의 AI Research Lab에서 개발한 고성능 벡터 유사도 검색 라이브러리입니다. 대규모 벡터 데이터셋에서 효율적인 유사도 검색과 클러스터링을 수행할 수 있도록 설계되었습니다.
주요 특징 - Key Features #
1. 고성능 검색 #
- 빠른 검색 속도: 수십억 개의 벡터에서도 밀리초 단위의 검색 성능
- 메모리 효율성: 압축 기법을 통한 메모리 사용량 최적화
- GPU 가속: CUDA를 활용한 GPU 병렬 처리 지원
2. 다양한 인덱스 타입 #
- Flat Index: 정확한 검색을 위한 브루트 포스 방식
- IVF (Inverted File): 클러스터 기반 근사 검색
- HNSW (Hierarchical Navigable Small World): 그래프 기반 근사 검색
- PQ (Product Quantization): 벡터 압축을 통한 메모리 절약
3. 확장성 #
- 분산 처리: 여러 GPU와 노드에서의 병렬 처리
- 대용량 데이터: 수십억 개의 벡터 처리 가능
- 실시간 업데이트: 동적 인덱스 업데이트 지원
사용 사례 - Use Cases #
1. 추천 시스템 #
- 사용자 임베딩 기반 유사 사용자 찾기
- 아이템 임베딩 기반 상품 추천
- 콘텐츠 기반 필터링
2. 자연어 처리 #
- 문서 유사도 검색
- 의미적 검색 (Semantic Search)
- 질의응답 시스템
3. 컴퓨터 비전 #
- 이미지 유사도 검색
- 얼굴 인식 및 매칭
- 객체 검색 및 분류
4. 정보 검색 #
- 벡터 데이터베이스 구축
- 임베딩 기반 검색 엔진
- 지식 그래프 탐색
설치 및 기본 사용법 - Installation & Basic Usage #
설치 #
# CPU 버전
pip install faiss-cpu
# GPU 버전 (CUDA 필요)
pip install faiss-gpu
기본 사용 예제 #
import faiss
import numpy as np
# 벡터 데이터 준비
dimension = 128
nb = 100000
np.random.seed(1234)
xb = np.random.random((nb, dimension)).astype('float32')
xq = np.random.random((10, dimension)).astype('float32')
# 인덱스 생성 및 학습
index = faiss.IndexFlatL2(dimension)
index.add(xb)
# 검색 수행
k = 5 # 상위 5개 결과
distances, indices = index.search(xq, k)
성능 최적화 - Performance Optimization #
1. 인덱스 선택 가이드 #
- 정확도 우선:
IndexFlatL2
,IndexFlatIP
- 속도 우선:
IndexIVFFlat
,IndexIVFPQ
- 메모리 절약:
IndexPQ
,IndexIVFPQ
- 균형:
IndexHNSWFlat
2. 파라미터 튜닝 #
- nlist: IVF 인덱스의 클러스터 수 (√n 권장)
- nprobe: 검색 시 탐색할 클러스터 수
- M: PQ의 서브벡터 수
- efConstruction/efSearch: HNSW 파라미터
3. GPU 활용 #
# GPU 리소스 설정
res = faiss.StandardGpuResources()
gpu_index = faiss.index_cpu_to_gpu(res, 0, cpu_index)
장단점 - Pros and Cons #
장점 #
- 뛰어난 성능: 대규모 데이터에서도 빠른 검색 속도
- 다양한 옵션: 용도에 맞는 다양한 인덱스 타입 제공
- GPU 지원: CUDA를 통한 하드웨어 가속
- 활발한 커뮤니티: Meta의 지속적인 개발과 지원
단점 #
- 학습 곡선: 다양한 옵션으로 인한 초기 설정의 복잡성
- 메모리 요구사항: 대용량 데이터 처리 시 높은 메모리 사용량
- 정확도 트레이드오프: 속도 향상을 위한 근사 검색 시 정확도 손실
관련 도구 및 대안 - Related Tools and Alternatives #
유사 도구 #
- Annoy: Spotify에서 개발한 근사 최근접 이웃 라이브러리
- Hnswlib: HNSW 알고리즘의 효율적인 구현
- Milvus: 오픈소스 벡터 데이터베이스
- Pinecone: 관리형 벡터 데이터베이스 서비스
통합 솔루션 #
- Weaviate: GraphQL 기반 벡터 검색 엔진
- Qdrant: Rust로 작성된 벡터 검색 엔진
- Chroma: AI 애플리케이션을 위한 임베딩 데이터베이스
참고 자료 - References #
GPT
GPT (Generative Pretrained Transfoer) #
GPT는 “Generative Pretrained Transformer"의 줄임말로, OpenAI에서 개발한 대규모 언어모델이다. 트랜스포머(Transformer) 아키텍처를 기반으로 하여 대량의 텍스트 데이터로 사전 훈련된 생성형 인공지능 모델이다.
GPT의 발전 과정 #
GPT-1 (2018) #
- 1억 1700만 개의 매개변수
- 트랜스포머 디코더 구조를 사용한 최초의 GPT 모델
- 비지도 사전 훈련과 지도 미세 조정의 두 단계 학습 방식 도입
GPT-2 (2019) #
- 15억 개의 매개변수
- “무서울 정도로 좋다"는 평가를 받아 처음에는 전체 모델이 공개되지 않았음
- Zero-shot 학습 능력을 보여주며 별도의 미세 조정 없이도 다양한 작업 수행 가능
GPT-3 (2020) #
- 1750억 개의 매개변수
- Few-shot 학습 능력으로 몇 가지 예시만으로도 새로운 작업 수행 가능
- API 형태로 서비스되어 다양한 응용 프로그램 개발의 기반이 됨
GPT-4 (2023) #
- 매개변수 수는 공개되지 않았으나 GPT-3보다 훨씬 큰 규모
- 멀티모달 기능으로 텍스트와 이미지를 함께 처리 가능
- 더욱 향상된 추론 능력과 안전성
GPT의 핵심 기술 #
트랜스포머 아키텍처 #
GPT는 트랜스포머의 디코더 부분만을 사용하는 구조이다. 어텐션 메커니즘을 통해 문맥을 이해하고 다음 토큰을 예측하는 방식으로 작동한다.
LLM
LLM (Large Language Model) #
초거대언어모델이라고 할 수 있다. 언어모델은 원래 다른 모델에 비해서 용량이 크다. 초거대언어모델은 Large Lnaguage Model이 원어이지만 초거대언어모델이라고 하는 것이 맞다. 그 규모가 매우 크기 때문이다.
LLM의 특징 #
LLM은 수십억 개에서 수조 개의 매개변수를 가진 대규모 신경망 모델이다. 이러한 거대한 규모 덕분에 다음과 같은 특징을 보인다:
- 창발적 능력(Emergent Abilities): 모델의 크기가 일정 임계점을 넘으면 예상치 못한 새로운 능력이 나타난다
- 맥락 학습(In-Context Learning): 별도의 훈련 없이도 몇 가지 예시만으로 새로운 작업을 수행할 수 있다
- 다중 작업 수행: 번역, 요약, 질의응답, 코드 생성 등 다양한 언어 작업을 하나의 모델로 처리할 수 있다
주요 LLM 모델들 #
GPT 시리즈 #
- GPT-3: 1750억 개의 매개변수를 가진 OpenAI의 대표적인 LLM
- GPT-4: GPT-3의 후속 모델로 멀티모달 기능을 포함
- GPT-4.1: GPT-4의 후속 모델로 멀티모달 기능을 포함
- ChatGPT: GPT 모델을 대화형 인터페이스로 구현한 서비스
Claude 시리즈 #
- Claude: Anthropic에서 개발한 헌법적 AI(Constitutional AI) 기반의 안전성 중심 모델
- Claude 2: 향상된 성능과 더 긴 컨텍스트 윈도우를 제공하는 후속 모델
- Claude 3: Haiku, Sonnet, Opus 세 가지 버전으로 출시된 최신 시리즈
- Claude 3 Haiku: 빠른 응답 속도에 최적화된 경량 모델
- Claude 3 Sonnet: 성능과 속도의 균형을 맞춘 중간 모델
- Claude 3 Opus: 가장 강력한 성능을 제공하는 플래그십 모델
- Claude 3.5: Claude 3의 개선된 버전으로 더욱 향상된 추론 능력과 코딩 성능을 제공
- Claude 3.5 Sonnet: 기존 Claude 3 Opus와 비슷한 성능을 더 빠른 속도로 제공하는 모델
- Claude 3.5 Haiku: 경량화된 모델의 성능을 크게 향상시킨 버전
- Claude 4: Claude 4
- Claude 4: 2024년 후반에 출시 예정인 Anthropic의 차세대 모델로, 더욱 향상된 추론 능력과 안전성을 목표로 개발 중이다. 멀티모달 기능의 확장과 더 긴 컨텍스트 처리 능력이 기대되고 있다.
기타 주요 모델들 #
- BERT: Google에서 개발한 양방향 인코더 기반 모델
- T5: Text-to-Text Transfer Transformer
- PaLM: Google의 5400억 매개변수 모델
- LaMDA: Google의 대화 전용 언어모델
- Claude: Anthropic에서 개발한 안전성에 중점을 둔 모델
LLM의 훈련 과정 #
사전 훈련 (Pre-training) #
대량의 텍스트 데이터를 사용하여 언어의 패턴과 구조를 학습하는 단계이다. 주로 다음 단어 예측(Next Token Prediction) 작업을 통해 이루어진다.