Papers with Code를 위한 Hugging Face 검색 아키텍처
Hugging Face는 AI 연구의 접근성을 높이기 위해 키워드 기반의 어휘 검색(lexical search)과 벡터 기반의 의미론적 검색(semantic search)을 결합한 Papers with Code용 하이브리드 검색 시스템을 구현했습니다. 이 아키텍처를 통해 사용자는 정확한 제목이나 arXiv 식별자를 통해 연구를 찾을 수 있을 뿐만 아니라, 논문에 특정 키워드가 없더라도 개념적으로 관련된 연구를 검색할 수 있습니다.
하이브리드 검색 아키텍처
Papers with Code는 정확한 언급을 위한 키워드 검색과 의미적 유사성을 위한 벡터 검색의 장점을 결합한 하이브리드 검색 시스템을 활용합니다. 이 시스템은 빠른 어휘 베이스라인을 위해 PostgreSQL 데이터베이스를 사용하고, 밀집 임베딩(dense embeddings)을 위해 pgvector를 사용하여 이 두 가지를 Reciprocal Rank Fusion (RRF) 알고리즘으로 결합합니다.
검색 파이프라인
모든 쿼리에 대해 시스템은 두 개의 병렬 브랜치를 실행합니다:
- Lexical Branch: 가중치가 적용된 PostgreSQL full-text search를 사용하여 최대 50개의 후보를 검색합니다.
- Semantic Branch: 활성화된 임베딩 생성물에 대해 코사인 거리(cosine-distance) 검색을 사용하여
pgvector에서 최대 50개의 후보를 검색합니다.
이 결과들은 동일한 브랜치 가중치와 $k=60$의 랭크 상수를 가진 가중치 적용 RRF를 사용하여 병합됩니다. 결정론적 정체성 동작(deterministic identity behavior)을 유지하기 위해, 시스템은 정확한 제목과 arXiv ID가 결과 상단에 유지되도록 보장하며, 방법론 분류 체계(method taxonomy)가 탐색 요청(예: "the original BERT paper")을 처리합니다.
기술 스택 및 인프라
Hugging Face는 코퍼스 구축을 위한 처리량(throughput)과 실시간 쿼리를 위한 낮은 지연 시간(low latency) 사이의 균형을 맞추기 위해 검색 인프라를 오프라인 및 온라인 구성 요소로 분리했습니다.
오프라인 코퍼스 구축 (Hugging Face Jobs)
전체 코퍼스 임베딩은 배치 작업으로 처리됩니다. Hugging Face Jobs는 논문 코퍼스를 처리하기 위해 버스트 가능한 GPU 컴퓨팅(특히 NVIDIA L4 GPU)을 제공합니다. 프로세스는 다음과 같습니다:
- PostgreSQL 스냅샷에서 논문 데이터를 JSONL 샤드(shards)로 내보내기.
Qwen/Qwen3-Embedding-0.6B의 고정된 모델 리비전(revision) 로드.- 패딩을 줄이기 위해 텍스트 길이에 따라 문서를 배치 단위로 인코딩하고 정렬.
- Matryoshka Representation Learning (MRL)을 사용하여 벡터를 256차원으로 축소하고 L2 정규화 적용.
내구성이 있는 저장소 (Hugging Face Storage Buckets)
Storage Buckets는 데이터베이스, 일시적인 Jobs, 그리고 프로덕션 인덱스 사이의 연결 고리 역할을 합니다. 아티팩트를 불변의 실행 접두사(immutable run prefixes)와 매니페스트 및 체크섬으로 구성함으로써 시스템은 다음과 같은 이점을 얻습니다:
- 재현성: 특정 스냅샷 및 모델 리비전으로 생성물을 추적.
- 안전한 재시도: 완료된 샤드로부터 작업을 재개.
- 제어된 롤아웃: 새로운 세대를 활성화하기 전에 커버리지 검증 및 HNSW 인덱스 구축.
온라인 검색 (Hugging Face Inference Endpoints)
실시간 쿼리는 Text Embeddings Inference (TEI)를 기반으로 인증된 Inference Endpoint를 사용하여 임베딩됩니다. 이 엔드포인트는 Qwen3 모델의 query 프롬프트를 사용하여 정규화된 256차원 벡터를 생성합니다.
엔드포인트의 "scale-to-zero" 특성과 콜드 스타트로 인한 지연 시간 급증을 방지하기 위해, 시스템은 엄격한 클라이언트 측 정책을 구현합니다: 1초의 프로덕션 타임아웃과 서킷 브레이커(circuit breaker). 만약 의미론적 엔드포인트가 사용 불가능하거나 타임아웃이 발생하면, 시스템은 즉시 어휘 검색 결과로 폴백(fallback)합니다.
임베딩 계약 및 모델 선택
임베딩 파이프라인의 미세한 오류를 방지하기 위해, Hugging Face는 임베딩 형식을 버전 관리된 API로 취급합니다.
모델 사양:
- 모델:
Qwen/Qwen3-Embedding-0.6B(정확한 리비전으로 고정됨). - 차원: 256 (속도와 저장소의 균형을 맞추기 위해 MRL을 통해 선택됨).
- 정규화: L2-정규화된 벡터.
- 프롬프트: 코퍼스 임베딩을 위한 별도의
document프롬프트와 실시간 검색을 위한query프롬프트.
모든 논문은 normalized title + "\n\n" + normalized abstract로 인코딩됩니다.
운영 인사이트 및 학습된 교훈
처리량 vs. 지연 시간
처리량 중심의 작업(Jobs)과 지연 시간 민감한 작업(Inference Endpoints)을 분리함으로써 시스템은 비용과 가용성을 독립적으로 최적화할 수 있습니다.
벡터 차원성
Matryoshka 임베딩을 사용하여 차원을 256로 줄일 수 있었습니다. 5,000개의 논문에 대한 파일럿 테스트 결과, 이 구성은 1024차원 벡터를 위한 데가 필요한 저장소의 27%만 사용하면서도 정확한 검색에 대해 0.9955 Recall@20을 달성했습니다.
증분 업데이트
Jobs는 전체 재구축을을 위해 처리하지만, 시간 단위의 증분 프로세스는 동일한 Inference Endpoint(with the document 프롬프트)를 사용하여 최대 500개의 새로운 또는 수정된 논문을 배치 단위로 임베딩하여, 전체 GPU Job의 오버헤드 없이 인덱스를 최신 상태로 유지합니다.
관련 논문 기능
문서 임베딩은 이미 PostgreSQL에 저장되어 있으므로, 개별 논문 페이지의 "Related Papers" 기능은 단순한 최근접 이웃(nearest-neighbor) 쿼리로 구현되어 실시간 모델 추론이 필요하지 않습니다.
Sources
관련
- Dispatch
- Dispatch
- Dispatch
- Dispatch
- Dispatch