Hi

I recently started to explore sparse embeddings using the sbert / sentence_transformers library

https://sbert.net/docs/sparse_encoder/usage/usage.html

whereas for example the following sentence "He drove to the stadium" gets embedded as follows:

tensor(indices=tensor([[    0,     0,     0,     0,     0,  0,     0,     0,
                            0,     0,     0,     0,     0,     0,    0,     0,                             0,     0,     0,     0,     0,     0,    0,     0,                             0,     0,     0,     0,     0,     0,    0,     0,                             0,     0,     0,     0,     0,     0,    0,     0,                             0,     0,     0,     0,     0,     0,    0,     0,                             0,     0,     0,     0,     0,     0,    0,     0,
                            0,     0,     0],
                       [ 1996,  2000,  2001,  2002,  2010,  2018, 2032,  2056,                          2180,  2209,  2253,  2277,  2288,  2299, 2343,  2346,                          2359,  2365,  2374,  2380,  2441,  2482, 2563,  2688,                          2724,  2778,  2782,  2958,  3116,  3230, 3298,  3309,                          3346,  3478,  3598,  3942,  4019,  4062, 4164,  4306,                          4316,  4322,  4439,  4536,  4716,  5006, 5225,  5439,                          5533,  5581,  5823,  6891,  7281,  7467, 7921,  8514,
                         9065, 11037, 21028]]),
       values=tensor([0.2426, 1.2840, 0.4095, 1.3777, 0.6331, 0.7404, 0.2711,                       0.3561, 0.0691, 0.0325, 0.1355, 0.3256, 0.0203, 0.7970,                       0.0535, 0.1135, 0.0227, 0.0375, 0.8167, 0.5986, 0.3390,                       0.2573, 0.1621, 0.2597, 0.2726, 0.0191, 0.0752, 0.0597,                       0.2644, 0.7811, 1.4855, 0.0663, 2.8099, 0.4074, 0.0778,                       1.0642, 0.1952, 0.7472, 0.7306, 0.1108, 0.5747, 1.5341,                       1.9030, 0.2264, 0.0995, 0.3023, 1.1830, 0.1279, 0.7824,                       0.4283, 0.0288, 0.3535, 0.1833, 0.0554, 0.2662, 0.0574,
                      0.4963, 0.2751, 0.0340]),
       device='mps:0', size=(1, 30522), nnz=59, layout=torch.sparse_coo)

The zeros just mean, that all tokens belong to the first sentence "He drove to the stadium" denoted by 0.

Then the 59 relevant token Ids (of the vocabulary of size 30522) are listed and third the importance weights for the relevant tokens.

IIUC OpenSearch and Elasticsearch are both supporting sparse embeddings

https://sbert.net/examples/sparse_encoder/applications/semantic_search/README.html#opensearch-integration
https://sbert.net/examples/sparse_encoder/applications/semantic_search/README.html#elasticsearch-integration

but are sparse embeddings also supported by Lucene itself?

Thanks

Michael






---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to