모델별 실행 레시피
최종 업데이트
작은 모델로 영어 문서를 검색하기, UIBK-Embedding-v1
영어 체크포인트이므로 영어 문서 검색 실험에만 넣어요.
UIBK-Embedding-v1은 영어 검색을 위한 179M 임베딩 모델이에요. dense 점수와 토큰1 단위 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을 비교하려면 정답 문서가 지정된 더 큰 영어 질의 집합을 준비하세요.
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)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를 유지하면 됩니다.
영어가 아닌 문서를 다룬다면 이 모델을 기준으로 삼지 마세요. 같은 영어 문서라도 검색 지표가 목표에 못 미치면 문장을 쪼개는 방식과 청크 크기부터 바꿔 보세요.

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