RAG: embeddings en català

De wikijoan
Salta a la navegació Salta a la cerca

Si volem fer embeddings de textos en català, podem utilitzar models multilingües com sentence-transformers. Per exemple, paraphrase-multilingual-MiniLM-L12-v2 funciona amb català i és força lleuger.

Primer instal·lem la llibreria:

pip install sentence-transformers

I ja podem fer els embeddings d'unes frases d'exemple:

from sentence_transformers import SentenceTransformer

# Model multilingüe compatible amb català
model = SentenceTransformer("paraphrase-multilingual-MiniLM-L12-v2")

texts = [
    "Barcelona és la capital de Catalunya.",
    "El català és una llengua romànica.",
    "Avui fa un dia molt assolellat."
]

# Generar els embeddings
embeddings = model.encode(texts)

print("Nombre de textos:", len(embeddings))
print("Dimensions de cada embedding:", embeddings.shape[1])

print(embeddings[0])

Resposta:

Nombre de textos: 3

Dimensions de cada embedding: 384

[ 0.45152336 -0.17739134  0.33369076  0.32314456  0.01625137 -0.10211392
  0.02397913 -0.00964131 -0.02689971  0.1543721  -0.31138584 -0.53306985
 -0.3249653   0.06214958 -0.01033912 -0.36389765  0.1459078  -0.44203445
...

I això ens serveix per comparar textos, segons la seva similaritat:

from sentence_transformers import SentenceTransformer
from sklearn.metrics.pairwise import cosine_similarity

model = SentenceTransformer("paraphrase-multilingual-MiniLM-L12-v2")

texts = [
    "M'agrada molt anar a la muntanya.",
    "Disfruto molt fent excursions per la muntanya.",
    "Avui he menjat una paella."
]

embeddings = model.encode(texts)

similarity = cosine_similarity(embeddings)

print(similarity)

Resposta:

[[1.0000001  0.9182879  0.11477765]
 [0.9182879  1.0000001  0.11056139]
 [0.11477765 0.11056139 1.0000006 ]]

Podem veure com els resultats són els esperats. Les dues primeres frases tenen similaritat (parlen de muntanya), i no s'assemblen amb la tercera frase. És usual utilitzar el cosinus per calcular la similaritat.

Per a un projecte de RAG, cerca semàntica o una base de dades vectorial, també podem utilitzar models més moderns i específicament multilingües, i comparar quins funcionen millor per català. Però si amb aquest que m'he instal·lat ja obtenim bons resultats, doncs ja estaria.


creat per Joan Quintana Compte, octubre 2026