Model setup recipes
Last updated
Search English documents with a small model: UIBK-Embedding-v1
Use this English checkpoint for English retrieval experiments.
UIBK-Embedding-v1 is a 179M English embedding model. It combines dense and token-level late-interaction scores, so evaluate corpus scale and index size together.
An encoder for English retrieval candidates
UIBK-Embedding-v1 is a 179M model that encodes English queries and passages for retrieval. It combines dense vectors with token-level late-interaction scores in a PLAID search path, so the experiment should follow the documented retrieval workflow.
For example, fix a query and its gold page in 500 product-support documents, then grow the index through 100, 500, and 2,000 pages. Track retrieval success and token-level index growth.

Use the PLAID path and supported language
This example follows the documented PyLate ColBERT + PLAID path. It does not include a dense-only ablation. Its separate ./uibk-plaid-demo folder and support-demo index name keep it away from existing indexes.
With four passages indexed and one query sent, it prints PLAID result IDs and scores. This small example checks the API1 path. For Recall@10 comparison, prepare a larger English query set with labeled gold documents.
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'
Separate vector size from total index size
As the corpus grows, record embedding time, query latency, Recall@10, and the size of the PLAID index directory. Late interaction retains token-level representations, so pooled vector bytes do not describe the full index.
For 200 queries, record the share whose gold passage appears in the top ten. If memory runs short, change batch size2 or index settings one at a time. Keep the checkpoint3 when quality and latency fit your current hardware.
If your documents are not in English, do not use this model as the baseline. Even for English, when retrieval scores fall short, change how you split passages and the chunk size first.

Terminology notes
API — A defined interface that lets other code call a program’s functions.
Back to the textBatch size — The number of inputs or requests processed together in one batch.
Back to the textCheckpoint — A file containing saved model weights and related state. Versions or tasks in one model family may use different checkpoints.
Back to the text
Frequently asked questions
- What should you check first in this article?
- UIBK-Embedding-v1 is a 179M English embedding model. It combines dense and token-level late-interaction scores, so evaluate corpus scale and index size together.
- How much memory does it need?
- For 200 queries, record the share whose gold passage appears in the top ten. If memory runs short, change batch size or index settings one at a time. Keep the checkpoint when quality and latency fit your current hardware.
Read next
Model setup recipes
Which embedding model should you use for Korean document search? Qwen3, BGE, and EmbeddingGemma 2
Model setup recipes
Add embeddings and a reranker to Korean PDF search
Model setup recipes
When OpenRouter Is Unavailable, How Do You Switch Your App to a Local LLM?
Model setup recipes
How to run Nemotron Bolt on an RTX 3090 or 5090
