Sentence Transformers (embeddings și CrossEncoder) în Hugging Face Hub & Transformers

Embeddings, Interfețe & Cloud sentence-transformers 6.x (octombrie 2026)

Biblioteca pentru embeddings de text, reranking cu Cross-Encoder, embeddings sparse și multi-vector, folosită la căutare semantică și RAG.

Sintaxă & invocare Python
from sentence_transformers import SentenceTransformer

model = SentenceTransformer("BAAI/bge-m3")
embeddings = model.encode(["Ce este inteligența artificială?", "Ghid despre AI și LLM"])
similarities = model.similarity(embeddings, embeddings)

Ce face Sentence Transformers (embeddings și CrossEncoder)

Sentence Transformers calculează embeddings (vectori) pentru propoziții și paragrafe cu modele SentenceTransformer, iar model.similarity() calculează scorurile de similaritate între ele. Pe Hub există peste 15.000 de modele compatibile, inclusiv multe din clasamentul MTEB.

Pentru reranking, CrossEncoder primește perechi (întrebare, pasaj) și dă un scor; model.rank(query, passages) ordonează direct pasajele. Biblioteca are și SparseEncoder (embeddings sparse) și MultiVectorEncoder (embeddings pe tokeni, stil ColBERT).

encode() nu normalizează vectorii implicit. Dacă baza vectorială folosește produsul scalar și vrei echivalentul similarității cosinus, setezi normalize_embeddings=True (unele modele includ deja un modul de normalizare).

Sintaxă și opțiuni

Opțiune / Parametru Descriere
SentenceTransformer(model_id) Încarcă modelul de embeddings.
encode(texte, normalize_embeddings=...) Calculează vectorii; normalizarea este opțională.
similarity(a, b) Scorurile de similaritate dintre două seturi de vectori.
CrossEncoder(model_id) Model de reranking.
CrossEncoder.rank(query, passages, return_documents=True) Ordonează pasajele după relevanță.
SparseEncoder / MultiVectorEncoder Embeddings sparse / pe tokeni.

Exemple practice

Exemplul 1: Reranking cu CrossEncoder

from sentence_transformers import CrossEncoder

reranker = CrossEncoder("cross-encoder/ms-marco-MiniLM-L6-v2")
ranks = reranker.rank("Cum resetez parola?", ["Pasul 1: apasă pe Am uitat parola...", "Programul de lucru este 9-17."], return_documents=True)

Exemplul 2: Vectori normalizați pentru produs scalar

embeddings = model.encode(texte, normalize_embeddings=True)

Greșeli frecvente și bune practici

  • Presupui că vectorii sunt normalizați. encode() nu normalizează implicit; folosește normalize_embeddings=True când baza vectorială cere asta.
  • Folosești pentru română un model antrenat doar pe engleză. Alege un model multilingv și verifică-l pe date proprii.

Comenzi înrudite