BioPlayground

🧬
목록으로

정렬 알고리즘이 사라진다면 — Foundation Model이 재편하는 유전체 검색

정확하지만 느린 정렬 기반 검색과, 빠르지만 근사적인 파운데이션 모델 임베딩 검색의 근본적 차이를 MIT 6.874 최신 논의와 함께 다룹니다.

심화
|
22
|
검증 완료 (2026-07-29)
protein embeddingapproximate nearest neighborhomology searchsequence alignment
진행률0/120 (0%)

에이전트가 도구를 고른다면, 그 도구 자체가 바뀌고 있습니다

F33에서 에이전트가 어떤 도구를 호출할지 스스로 판단하는 것을 봤습니다. 그런데 정작 그 도구함 안의 도구 자체가 바뀌고 있습니다. 40년 넘게 서열 유사성 검색의 표준이던 BLAST류 정렬 알고리즘 옆에, 파운데이션 모델의 임베딩 공간에서 최근접 이웃을 찾는 방식이 나란히 놓이기 시작했습니다. F34에서는 이 두 접근의 근본적 차이와, 어느 지점에서 서로를 대체하기보다 보완하는지를 다룹니다.

원리 — 정확한 정렬과 근사적 임베딩 검색

BLAST/MMseqs2가 하는 일

BLAST와 그 후속인 MMseqs2는 서열 사이의 **명시적 정렬(alignment)**을 계산해 유사도를 점수화합니다. 시드를 찾고, 시드 주변을 확장하며, 삽입·결실·치환에 벌점을 매기는 동적계획법 기반 점수 함수를 사용합니다. 결과는 "몇 번째 위치에서 몇 개 불일치로 정렬됐다"는 해석 가능한 근거를 그대로 남깁니다.

임베딩 검색이 하는 일

ESM2(F11) 같은 단백질 언어 모델은 서열을 고정 길이 벡터(임베딩)로 변환합니다. 두 서열의 유사도는 정렬 점수가 아니라 두 벡터 사이의 거리(코사인 유사도 등)로 정의됩니다.

similarity(x,y)=exeyexey\text{similarity}(x, y) = \frac{\mathbf{e}_x \cdot \mathbf{e}_y}{\lVert \mathbf{e}_x \rVert \, \lVert \mathbf{e}_y \rVert}

이 방식의 강점은 서열이 크게 달라도 구조·기능이 비슷하면 임베딩 공간에서는 가까울 수 있다는 것입니다. 정렬 기반 검색은 서열 동일성이 일정 수준 이하로 떨어지면(흔히 "트와일라잇 존", 서열 동일성 20~30% 이하) 유의미한 정렬 자체를 찾지 못하는 반면, 임베딩은 진화적으로 멀리 떨어진 상동체(remote homolog)도 종종 포착합니다. 대가는 해석 가능성입니다 — "왜 이 두 서열이 가깝다고 판단했는가"를 정렬처럼 위치 단위로 설명하기 어렵습니다.

손 계산 예제: 탐색 복잡도의 차이

길이 nn인 쿼리를 평균 길이 mm인 데이터베이스 서열 NN개와 비교한다고 합시다. 고전적 동적계획법 정렬을 전수 수행하면 서열 쌍마다 O(nm)O(nm), 전체는

O(Nnm)O(N \cdot nm)

BLAST·MMseqs2류는 시딩과 후보 필터링으로 실제 계산량을 크게 줄이고, 통과한 후보만 정밀 정렬합니다. 반면 임베딩을 미리 계산해 HNSW 같은 근사 최근접 이웃(ANN) 인덱스에 넣으면, 데이터 분포와 인덱스 파라미터가 맞는 조건에서 전수 벡터 비교보다 훨씬 적은 후보를 방문할 수 있습니다.

HNSW 탐색을 보편적으로 O(logN)O(\log N)이라고 보장할 수는 없습니다. 실무 지연시간과 recall은 그래프 구성, efSearch, 임베딩 차원과 데이터 분포에 따라 달라집니다. NN이 매우 커질수록 이 경험적 가속은 유용하지만, 진짜 최근접 이웃을 놓칠 수 있으므로 정확 탐색 표본과 대조해 recall을 측정해야 합니다.

대체가 아니라 재편 — 하이브리드 파이프라인

실무에서는 임베딩 검색으로 수억 개 후보를 수백~수천 개로 빠르게 좁힌 뒤, 그 좁혀진 후보에 대해서만 전통적 정렬을 돌려 정밀한 근거를 확보하는 2단계 구조가 자리 잡고 있습니다. 즉 파운데이션 모델이 정렬을 완전히 대체한다기보다, **"어디를 볼지 빠르게 좁히고, 최종 판단은 여전히 정렬로 확인한다"**는 재편에 가깝습니다.

전체 후보 N  임베딩 ANN  압축 후보 k  정렬, O(knm)  최종 판정\text{전체 후보 } N \;\xrightarrow{\text{임베딩 ANN}}\; \text{압축 후보 } k \;\xrightarrow{\text{정렬, } O(k \cdot nm)}\; \text{최종 판정}

실습: ESM2 임베딩으로 근사 상동체 탐색 (Colab T4)

python
# Colab T4에서 실행. ESM2 소형 모델로 몇 개 서열을 임베딩하고 최근접 이웃을 찾습니다.
!pip install -q fair-esm faiss-cpu
import torch, esm, faiss
import numpy as np
model, alphabet = esm.pretrained.esm2_t12_35M_UR50D() # 소형 모델(35M)로 실습
model.eval()
batch_converter = alphabet.get_batch_converter()
sequences = [
("query", "MKTAYIAKQRQISFVKSHFSRQLEERLGLIEVQAPILSRVGDGTQDNLSGAEKAVQVKVKALPDAQFEVVHSLAKWKR"),
("cand_1", "MKTAYIAKQRQISFVKSHFSRQLEERLGLIEVQAPILSRVGDGTQDNLSGAEKAVQVKVKALPDAQFEVVHSLAKWKR"),
("cand_2", "MSTNPKPQRKTKRNTNRRPQDVKFPGGGQIVGGVYLLPRRGPRLGVRATRKTSERSQPRGRRQPIPKARRPEGRTWA"),
]
_, _, tokens = batch_converter(sequences)
with torch.no_grad():
out = model(tokens, repr_layers=[12])
token_reps = out["representations"][12]
# BOS/EOS와 패딩을 제외하고 실제 잔기만 평균 풀링
reps = torch.stack([
token_reps[i, 1:len(seq) + 1].mean(0)
for i, (_, seq) in enumerate(sequences)
]).cpu().numpy().astype("float32")
index = faiss.IndexFlatIP(reps.shape[1]) # 코사인 유사도 대용 내적 인덱스
faiss.normalize_L2(reps)
index.add(reps[1:]) # 후보만 인덱싱
D, I = index.search(reps[0:1], k=2) # 쿼리로 최근접 이웃 검색
print("유사도 순위:", I, "점수:", D)

이 실습에서 후보 두 개 중 어느 쪽이 쿼리와 더 가까운지, 그리고 그 순위가 실제 서열 동일성 순위와 일치하는지를 직접 비교해보면, 임베딩 거리가 서열 동일성과 항상 정확히 비례하지는 않는다는 점을 체감할 수 있습니다.

CS 매핑

  • 근사 최근접 이웃 탐색(ANN): HNSW·FAISS는 정확한 최근접 이웃 대신 확률적으로 높은 정확도의 근사해를 빠르게 찾는 자료구조로, 로그 시간 탐색과 정확도 사이의 트레이드오프를 명시적으로 다룹니다.
  • 차원의 저주: 임베딩 차원이 커질수록 거리 기반 판별력이 떨어지는 현상은 고차원 기하학의 표준 문제이며, 임베딩 모델 설계 시 차원 축소나 정규화가 필요한 이유입니다.
  • 편집 거리 vs 임베딩 거리: 정렬은 이산적인 편집 거리(edit distance) 공간에서, 임베딩은 연속적인 벡터 공간에서 유사도를 정의합니다 — 서로 다른 거리 공간이 반드시 같은 순위를 내지 않는다는 점이 두 접근의 근본적 차이입니다.

자주 만나는 결함

  • 임베딩 유사도를 상동성(homology)의 증거로 그대로 채택: 임베딩이 가깝다고 반드시 진화적으로 상동 관계는 아닙니다. 구조·기능이 수렴 진화된 경우에도 임베딩이 가까울 수 있어, 중요한 결론에는 정렬 기반 재확인이 필요합니다.
  • ANN 인덱스의 근사 오차를 무시: HNSW 등은 파라미터(ef_search 등)에 따라 재현율이 달라집니다. 재현율을 검증하지 않고 "빠르니까 정확하겠지"라고 가정하면 중요한 후보를 놓칠 수 있습니다.

더 깊게 파고 싶다면

본문은 BPD 연구진이 직접 재구성한 서술입니다. 원 논문과 공식 자료로 심화해봅시다.

  • MIT 6.874 (Manolis Kellis) 최신 강의 자료: 계산생물학에서의 파운데이션 모델 흐름.
  • ESM2 원 논문 (Lin et al., 2023, Science): 언어 모델 임베딩으로 구조를 예측하는 근거.
  • FAISS 공식 문서: 근사 최근접 이웃 인덱스 종류와 파라미터.
  • MMseqs2 공식 GitHub: 대규모 서열 검색의 현재 표준 구현.

다음 편 F35에서는 이런 모델을 여러 기관이 데이터를 공유하지 않고도 함께 학습시키는 방법, 연합학습을 다룹니다.