Views
No views yet
pip install -U sentence-transformers1from sentence_transformers import SentenceTransformer, util
2
3query = "How many people live in London?"
4docs = ["Around 9 Million people live in London", "London is known for its financial district"]
5
6# Load the model
7model = SentenceTransformer('sentence-transformers/multi-qa-mpnet-base-dot-v1')
8
9# Encode query and documents
10query_emb = model.encode(query)
11doc_emb = model.encode(docs)
12
13# Compute dot score between query and all document embeddings
14scores = util.dot_score(query_emb, doc_emb)[0].cpu().tolist()
15
16# Combine docs & scores
17doc_score_pairs = list(zip(docs, scores))
18
19# Sort by decreasing score
20doc_score_pairs = sorted(doc_score_pairs, key=lambda x: x[1], reverse=True)
21
22# Output passages & scores
23for doc, score in doc_score_pairs:
24 print(score, doc)1from transformers import AutoTokenizer, AutoModel
2import torch
3
4# CLS Pooling - Take output from first token
5def cls_pooling(model_output):
6 return model_output.last_hidden_state[:,0]
7
8# Encode text
9def encode(texts):
10 # Tokenize sentences
11 encoded_input = tokenizer(texts, padding=True, truncation=True, return_tensors='pt')
12
13 # Compute token embeddings
14 with torch.no_grad():
15 model_output = model(**encoded_input, return_dict=True)
16
17 # Perform pooling
18 embeddings = cls_pooling(model_output)
19
20 return embeddings
21
22
23# Sentences we want sentence embeddings for
24query = "How many people live in London?"
25docs = ["Around 9 Million people live in London", "London is known for its financial district"]
26
27# Load model from HuggingFace Hub
28tokenizer = AutoTokenizer.from_pretrained("sentence-transformers/multi-qa-mpnet-base-dot-v1")
29model = AutoModel.from_pretrained("sentence-transformers/multi-qa-mpnet-base-dot-v1")
30
31# Encode query and docs
32query_emb = encode(query)
33doc_emb = encode(docs)
34
35# Compute dot score between query and all document embeddings
36scores = torch.mm(query_emb, doc_emb.transpose(0, 1))[0].cpu().tolist()
37
38# Combine docs & scores
39doc_score_pairs = list(zip(docs, scores))
40
41# Sort by decreasing score
42doc_score_pairs = sorted(doc_score_pairs, key=lambda x: x[1], reverse=True)
43
44# Output passages & scores
45for doc, score in doc_score_pairs:
46 print(score, doc)1docker run -p 8080:80 -v hf_cache:/data --pull always ghcr.io/huggingface/text-embeddings-inference:cpu-latest \
2 --model-id sentence-transformers/multi-qa-mpnet-base-dot-v1 \
3 --pooling cls \
4 --dtype float161docker run --gpus all -p 8080:80 -v hf_cache:/data --pull always ghcr.io/huggingface/text-embeddings-inference:cuda-latest \
2 --model-id sentence-transformers/multi-qa-mpnet-base-dot-v1 \
3 --pooling cls \
4 --dtype float16/v1/embeddings to generate embeddings via the OpenAI Embeddings API:1curl http://localhost:8080/v1/embeddings \
2 -H "Content-Type: application/json" \
3 -d '{
4 "model": "sentence-transformers/multi-qa-mpnet-base-dot-v1",
5 "input": "How many people live in London?"
6 }'| Setting | Value |
|---|---|
| Dimensions | 768 |
| Produces normalized embeddings | No |
| Pooling-Method | CLS pooling |
| Suitable score functions | dot-product (e.g. util.dot_score) |
train_script.py.mpnet-base model. Please refer to the model card for more detailed information about the pre-training procedure.data_config.json file.| Dataset | Number of training tuples |
|---|---|
| WikiAnswers Duplicate question pairs from WikiAnswers | 77,427,422 |
| PAQ Automatically generated (Question, Paragraph) pairs for each paragraph in Wikipedia | 64,371,441 |
| Stack Exchange (Title, Body) pairs from all StackExchanges | 25,316,456 |
| Stack Exchange (Title, Answer) pairs from all StackExchanges | 21,396,559 |
| MS MARCO Triplets (query, answer, hard_negative) for 500k queries from Bing search engine | 17,579,773 |
| GOOAQ: Open Question Answering with Diverse Answer Types (query, answer) pairs for 3M Google queries and Google featured snippet | 3,012,496 |
| Amazon-QA (Question, Answer) pairs from Amazon product pages | 2,448,839 |
| Yahoo Answers (Title, Answer) pairs from Yahoo Answers | 1,198,260 |
| Yahoo Answers (Question, Answer) pairs from Yahoo Answers | 681,164 |
| Yahoo Answers (Title, Question) pairs from Yahoo Answers | 659,896 |
| SearchQA (Question, Answer) pairs for 140k questions, each with Top5 Google snippets on that question | 582,261 |
| ELI5 (Question, Answer) pairs from Reddit ELI5 (explainlikeimfive) | 325,475 |
| Stack Exchange Duplicate questions pairs (titles) | 304,525 |
| Quora Question Triplets (Question, Duplicate_Question, Hard_Negative) triplets for Quora Questions Pairs dataset | 103,663 |
| Natural Questions (NQ) (Question, Paragraph) pairs for 100k real Google queries with relevant Wikipedia paragraph | 100,231 |
| SQuAD2.0 (Question, Paragraph) pairs from SQuAD2.0 dataset | 87,599 |
| TriviaQA (Question, Evidence) pairs | 73,346 |
| Total | 214,988,242 |