đŸŽčđŸŽ»đŸŽž 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