summaryrefslogtreecommitdiff
path: root/candle-examples/examples/bert/README.md
diff options
context:
space:
mode:
Diffstat (limited to 'candle-examples/examples/bert/README.md')
-rw-r--r--candle-examples/examples/bert/README.md44
1 files changed, 44 insertions, 0 deletions
diff --git a/candle-examples/examples/bert/README.md b/candle-examples/examples/bert/README.md
new file mode 100644
index 00000000..82ca5f40
--- /dev/null
+++ b/candle-examples/examples/bert/README.md
@@ -0,0 +1,44 @@
+# candle-bert
+
+Bert is a general large language model. In this example it can be used for two
+different tasks:
+- Compute sentence embeddings for a prompt.
+- Compute similarities between a set of sentences.
+
+
+## Sentence embeddings
+
+Bert is used to compute the sentence embeddings for a prompt. The model weights
+are downloaded from the hub on the first run.
+
+```bash
+cargo run --example bert --release -- --prompt "Here is a test sentence"
+
+> [[[ 0.0798, -0.0665, -0.0247, ..., -0.1082, -0.1000, -0.2751],
+> [ 0.4218, 0.2690, 0.2740, ..., 0.3889, 1.3503, 0.9908],
+> [ 0.0466, 0.3041, -0.1143, ..., 0.4427, 0.6926, -0.1515],
+> ...
+> [ 0.3396, 0.4320, -0.4408, ..., 0.9212, 0.2331, -0.6777],
+> [ 0.2789, 0.7539, 0.4306, ..., -0.0095, 0.3375, -1.7529],
+> [ 0.6737, 0.7882, 0.0548, ..., 0.1836, 0.7299, -0.6617]]]
+> Tensor[[1, 7, 384], f32]
+```
+
+## Similarities
+
+In this example, Bert is used to compute the sentence embeddings for a set of
+sentences (hardcoded in the examples). Then cosine similarities are computed for
+each sentence pair and they are reported by decreasing values, hence the first
+reported pair contains the two sentences that have the highest similarity score.
+The sentence embeddings are computed using average pooling through all the
+sentence tokens, including some potential padding.
+
+```bash
+cargo run --example bert --release
+
+> score: 0.85 'The new movie is awesome' 'The new movie is so great'
+> score: 0.61 'The cat sits outside' 'The cat plays in the garden'
+> score: 0.52 'I love pasta' 'Do you like pizza?'
+> score: 0.23 'The new movie is awesome' 'Do you like pizza?'
+> score: 0.22 'I love pasta' 'The new movie is awesome'
+```