🎹🎻🎸 Et si nous cherchions des morceaux de musique 🎼🎶 ?

A presentation at Meetup ElasticFR #88 in November 2023 in Paris, France by David Pilato

Slide 1

Slide 1

Et si nous cherchions des morceaux de musique ? David Pilato | @dadoonet

Slide 2

Slide 2

Elasticsearch You Know, for Vector Search

Slide 3

Slide 3

Exemple : vecteur 1 dimension Personnage Vecteur [ 1 ] ] Réaliste

[ Les embeddings représentent vos données Dessin 1

Slide 4

Slide 4

pour représenter plusieurs aspects Humain Personnage Vecteur [ 1, 1 Réaliste Dessin ] ] Machine

[ Plusieurs dimensions 1, 0

Slide 5

Slide 5

les données similaires sont regroupées Humain Personnage Vecteur [ 1.0, 1.0 Réaliste Dessin 1.0, 0.0 [ 1.0, 0.8 ] ] ]

Machine

[ Dans l’espace des embeddings

Slide 6

Slide 6

La recherche vectorielle classe les résultats par similarité (~pertinence) Humain Rank Requête 1 Réaliste Dessin 2 3 4 5 Machine Résultat

Slide 7

Slide 7

Similarité : cosinus (cosine) Humain q cos(θ) = d1 d2 Réaliste θ q⃗ × d ⃗ | q⃗ | × | d |⃗ _score = 1 + cos(θ) 2

Slide 8

Slide 8

Similarité : cosinus (cosine) rappel

Slide 9

Slide 9

Similarité : produit scalaire (dot_product) q⃗ × d ⃗ = | q⃗ | × cos(θ) × | d |⃗ q d θ | q⃗ | × co s (θ ) 1 + dot_ product(q, d) scorefloat = 2 0.5 + dot product(q, d) _scorebyte = 32768 × dims

Slide 10

Slide 10

Similarité : distance euclidienne (l2_norm) y 2 n i (x ∑ 1 i= − y i) q l2_normq,d = y1 d x1 y2 x2 n ∑ i=1 (xi − yi) 1 _score = 1 + (l2_normq,d )2 x 2

Slide 11

Slide 11

Indexer avec des vecteurs

Slide 12

Slide 12

Ingestion des données avec embeddings POST /_doc { “_id”:”product-1234”, “product_name”:”Summer Dress”, “description”:”Our best-selling…”, “Price”: 118, “color”:”blue”, “fabric”:”cotton”, “fabric”:”cotton” } “desc_embedding”:[0.452,0.3242,…], “desc_embedding”:[0.452,0.3242,…] } “img_embedding”:[0.012,0.0,…] } Source data POST /_doc

Slide 13

Slide 13

Chercher avec des vecteurs

Slide 14

Slide 14

Requête Vectorielle GET product-catalog/_search { “knn”: { “field”: “desc_embbeding”, “k”: 5, “num_candidates”: 50, “query_vector”: [0.123, 0.244,…], “filter”: { “term”: { “department”: “women” } } } }, “size”: 10

Slide 15

Slide 15

https://github.com/dadoonet/music-search/

Slide 16

Slide 16

Et si nous cherchions des morceaux de musique ? David Pilato | @dadoonet