모델별 실행 레시피

최종 업데이트

작은 모델로 영어 문서를 검색하기, UIBK-Embedding-v1

영어 체크포인트이므로 영어 문서 검색 실험에만 넣어요.

UIBK-Embedding-v1은 영어 검색을 위한 179M 임베딩 모델이에요. dense 점수와 토큰1 단위 late-interaction 점수를 결합해 검색하며 문서 수와 인덱스 크기를 함께 비교해야 해요.

실행 조건과 핵심 내용
  • 영어 전용 179M 체크포인트예요.
  • 색인 벡터 외에 토큰별 late-interaction 저장 공간도 측정해요.

영어 문서의 검색 후보를 만드는 모델

UIBK-Embedding-v1은 영어 질의와 문서를 검색 표현으로 바꾸는 179M 모델이에요. dense 벡터와 토큰 단위 late-interaction 점수를 함께 사용해 PLAID 검색에서 결과를 고릅니다. 문서 글자만 비교하는 실험이 아니라 모델 카드의 검색 경로를 따라야 합니다.

예를 들어 제품 지원 문서 500개에서 ‘battery health report’ 질문에 답하는 페이지를 찾는다면, 질문과 정답 페이지를 고정하고 100·500·2,000개로 색인을 늘려 봅니다. 문서가 늘수록 찾은 정답률과 토큰별 색인 파일이 얼마나 변하는지 비교할 수 있어요.

문서가 여러 검색 조각으로 나뉘고 일부가 로컬 컴퓨터로 향하는 장면
문서가 늘면 벡터만 아니라 토큰별 표현도 쌓입니다.

PLAID 경로와 언어를 맞춰요

이 예제는 PyLate ColBERT와 PLAID를 연결하는 공식 검색 경로예요. dense 단독 ablation은 포함하지 않습니다. ./uibk-plaid-demo라는 별도 폴더와 support-demo 색인 이름을 사용해 기존 색인을 건드리지 않아요.

문서 네 개를 등록하고 질문 한 개를 보내면 PLAID 검색 결과의 ID와 점수를 출력해요. 이 작은 예는 API2 연결을 확인하는 용도입니다. Recall@10을 비교하려면 정답 문서가 지정된 더 큰 영어 질의 집합을 준비하세요.

독립된 PLAID demo 색인에 문서 4개를 넣고 검색
from pylate import indexes, models, retrieve

model = models.ColBERT("DataScience-UIBK/uibk-embedding-v1", trust_remote_code=True)
document_ids = ["refund", "delivery", "battery", "warranty"]
documents = [
    "Refund requests are processed within five business days after cancellation.",
    "Delivery addresses can be changed before an order is prepared.",
    "The battery health report is available in Settings under Power.",
    "The limited warranty lasts for two years from the purchase date.",
]
index = indexes.PLAID(index_folder="./uibk-plaid-demo", index_name="support-demo", override=False)
doc_vectors = model.encode(documents, is_query=False, prompt_name="document")
index.add_documents(documents_ids=document_ids, documents_embeddings=doc_vectors)
search = retrieve.ColBERT(index=index)
query_vectors = model.encode(
    ["Where can I see the battery health report?"],
    is_query=True,
    prompt_name="query",
)
for result in search.retrieve(queries_embeddings=query_vectors, k=3)[0]:
    print(result)
UIBK 공식 PyLate 경로 설치
python -m venv .venv
source .venv/bin/activate
python -m pip install -U pylate 'transformers>=5.3' 'sentence-transformers>=5.3'
질문별 기대 근거가 카드로 정리된 모습
정답 질의를 고정해 영어 검색 결과를 비교해요.

작은 벡터 크기와 전체 색인을 나눠 봐요

문서 수가 늘 때 임베딩 시간, 검색 지연, Recall@10, 실제 PLAID 색인 폴더 크기를 함께 기록하세요. late-interaction은 문서 토큰의 표현을 유지하므로 pooled dense 벡터만 계산한 저장량이 전체 색인 크기를 나타내지 않습니다.

200개 질의에 대해 정답 문서가 상위 10개에 들어온 비율을 기록하고, 메모리 부족이 생기면 batch 크기와 색인 설정을 한 번에 하나만 조정합니다. 품질이 필요한 수준이고 현재 장비에서 검색 시간이 맞을 때 이 체크포인트3를 유지하면 됩니다.

영어가 아닌 문서를 다룬다면 이 모델을 기준으로 삼지 마세요. 같은 영어 문서라도 검색 지표가 목표에 못 미치면 문장을 쪼개는 방식과 청크 크기부터 바꿔 보세요.

두 장비에서 문서 색인과 검색 결과를 비교하는 장면
정확도와 실제 색인 용량을 같이 측정합니다.

용어 각주

  1. 토큰 — 모델이 입력이나 출력을 나누어 처리하는 단위입니다.

    본문으로 돌아가기
  2. API — 프로그램의 기능을 다른 코드에서 호출하기 위한 약속된 인터페이스입니다.

    본문으로 돌아가기
  3. 체크포인트 — 학습된 모델의 가중치 등을 저장한 파일입니다. 같은 모델 계열도 버전이나 용도에 따라 다른 체크포인트를 쓸 수 있습니다.

    본문으로 돌아가기

자주 묻는 질문

이 글에서 가장 먼저 확인할 것은 무엇인가요?
UIBK-Embedding-v1은 영어 검색을 위한 179M 임베딩 모델이에요. dense 점수와 토큰 단위 late-interaction 점수를 결합해 검색하며 문서 수와 인덱스 크기를 함께 비교해야 해요.
필요한 메모리는 어느 정도인가요?
200개 질의에 대해 정답 문서가 상위 10개에 들어온 비율을 기록하고, 메모리 부족이 생기면 batch 크기와 색인 설정을 한 번에 하나만 조정합니다. 품질이 필요한 수준이고 현재 장비에서 검색 시간이 맞을 때 이 체크포인트를 유지하면 됩니다.