eventpulse-bge-m3
A fine-tuned version of BAAI/bge-m3 for semantic matching of user search queries against event poster titles (concerts, films, theatre).
Trained for EventPulse_3.0 — a multilingual event discovery and aggregation application.
What it does
Maps user queries to event titles in embedding space so that semantically related pairs have high cosine similarity.
The model handles real-world search noise:
- Typos —
"metalica"→"Metallica" - Transliteration —
"колдплей"→"Coldplay","korj"→"Макс Корж" - Abbreviations —
"дюна 2"→"Дюна: Часть вторая" - Cross-language matching —
"john wick 4"→"Джон Уик 4" - Partial titles —
"кастанеда"→"KASTANEDA: ARENA ŠOU | Žalgirio arena"
Languages
English, Russian, Lithuanian, Polish — and mixed-language inputs.
Training data
~7 400 triplets (query, positive, negative) built from real event poster titles scraped from:
- biletai.lt — concerts in Vilnius
- concertful.pl — concerts in Warsaw
- afisha.me / relax.by — films in Minsk
Queries were generated via programmatic augmentation (typos, transliteration, truncation) and LLM-assisted generation (Gemini API).
Training
- Loss:
MultipleNegativesRankingLoss(sentence-transformers) - Base model:
BAAI/bge-m3 - Epochs: 1
- Batch size: 32
- Learning rate: 2e-5
Usage
from sentence_transformers import SentenceTransformer
import numpy as np
model = SentenceTransformer("OlegChausov/eventpulse-bge-m3")
query = "металика"
title = "Metallica"
q_emb = model.encode(query, normalize_embeddings=True)
t_emb = model.encode(title, normalize_embeddings=True)
score = float(np.dot(q_emb, t_emb))
print(f"Similarity: {score:.3f}") # ~0.85
Example scores
| Query | Title | Score |
|---|---|---|
metalica | Metallica | 0.741 |
металика | Metallica | 0.853 |
john wick 4 | Джон Уик 4 | 0.892 |
колдплей | Coldplay | 0.783 |
кастанеда | KASTANEDA: ARENA ŠOU | Žalgirio arena | 0.836 |
робоняня | Робоняня | 0.981 |
metalica | Джон Уик 4 | -0.017 |