alt.freeweights.embed / poiss-bge-m3-retriever
From: amazon <huggingface.co/amazon>Newsgroups: alt.freeweights.embedSubject:

poiss-bge-m3-retriever

Date: 2026-11-15Commit: c04bb23Signed: 2DC28CC7B26A283B ✓

Sentence similarity model with 567M parameters. Safetensors weights, 2.29 GB in all. Published by amazon under MIT.

567M params2.29GBpoiss-bge-m3-retrieversafetensorspermissive
FactsParams567MSize2.29 GBFormatssafetensorsTasksentence similarityLicenseMITFrom sourcepermissive
$ fw get amazon/poiss-bge-m3-retriever
# manifest sha256 1dc875ad7010… · 2.29 GB · 12 files
$ fw verify ./poiss-bge-m3-retriever amazon/poiss-bge-m3-retriever
From sourceHosted (signed)amazon/poiss-bge-m3-retrieverLast check: 2026-11-15 04:14 UTC

Get help: custom fine-tune or private deploy. We review your setup before we quote.

Fine-tune of bge-m3.

Works with

Evaluate with

Overview

Size
2.29 GB
Weights
2.27 GB (safetensors)
Parameters
567M
Formats
safetensors
Task
sentence similarity
License
MIT (permissive)
Files
12, each with a sha256
Publisher
amazon
Added
2026-11-15
Section
alt.freeweights.embed
Lineage

Original release from the publisher.

Base model: BAAI/bge-m3

Where these bytes come from
Publisher at the pinned commit→You

Sources are tried in order. A file counts only when its size and sha256 match the manifest. Sources are checked when you ask for them, not on a timer.

Sources
BadgeHostLast checkResult
From sourcehuggingface.co2026-11-15 04:14 UTCpassed

Model card

From the publisher at commit c04bb23. Shown as plain text with links; images open at the publisher.

POISS BGE-M3 retriever#

BAAI/bge-m3 fine-tuned on POISS for point-of-interest retrieval over the full Overture Maps Places corpus (72M+ POIs). It is a bi-encoder: queries and POIs are encoded independently, so POI embeddings can be built offline and searched with an ANN index.

The distinguishing feature of this task is that a query carries the coordinate it was issued from, and relevance depends jointly on semantics and geography. The coordinate is given to the model as text, at four-decimal precision, in both the query and the POI representation.

Companion cross-encoder: amazon/poiss-bge-m3-reranker.

Results#

Full-corpus retrieval on the POISS test split (42,018 queries, percentages):

SystemR@10R@100R@1kN@5N@20
BM2517.829.942.816.018.0
BGE-M3 zero-shot15.226.440.013.715.3
this model45.283.295.658.360.3

Per-language R@100: EN 82.4, ES 83.9, FR 85.1, PT 80.5, DE 86.1, IT 84.7, NL 79.8. Fine-tuning shrinks the cross-language spread from 2.2× to 1.08×.

Per-intent R@100: Search 89.1, Detail 88.0, Recommend 77.3, Things-to-do 74.0. Open-ended intents remain the harder half of the benchmark.

Used as a reranker over its own top-1000 (the setting the cross-encoder is compared against): P@5 57.6, P@20 35.5, MRR 85.5, nDCG@5 61.5, nDCG@20 62.6.

Usage#

Embeddings are the CLS token of the last layer, L2-normalized; score with a dot product. Both sides must follow the templates below, including the coordinate formatting, or accuracy drops sharply.

With sentence-transformers, pooling and normalization are already configured:

from sentence_transformers import SentenceTransformer

model = SentenceTransformer("amazon/poiss-bge-m3-retriever")
query = "User Query: pizzeria near the colosseum; Coordinate: 41.8902N 12.4922E;"
pois = [
    "Location Name: Pizzeria Da Enzo; Address: Via dei Fori Imperiali 1; Position: Rome, "
    "Lazio, IT, 00184; Coordinate: 41.8925N 12.4853E; Categories: pizza restaurant, restaurant;",
    "Location Name: Oslo Dental Clinic; Address: Storgata 10; "
    "Position: Oslo, Oslo, NO, 0155; Coordinate: 59.9139N 10.7522E; Categories: dentist;",
]
print(model.similarity(model.encode([query]), model.encode(pois)))

Or with transformers directly, which is what the formatting helpers below are for:

import torch
from transformers import AutoModel, AutoTokenizer

model_id = "amazon/poiss-bge-m3-retriever"
tokenizer = AutoTokenizer.from_pretrained(model_id)
# add_pooling_layer=False: the checkpoint has no pooler, and pooled output is unused
model = AutoModel.from_pretrained(model_id, add_pooling_layer=False).eval()


def encode(texts, max_length):
    batch = tokenizer(texts, padding=True, truncation=True,
                      max_length=max_length, return_tensors="pt")
    with torch.no_grad():
        hidden = model(**batch).last_hidden_state[:, 0, :]
    return torch.nn.functional.normalize(hidden, dim=1)


def format_query(text, lat, lng):
    lat_dir, lng_dir = "N" if lat >= 0 else "S", "E" if lng >= 0 else "W"
    return (f"User Query: {text}; "
            f"Coordinate: {abs(lat):.4f}{lat_dir} {abs(lng):.4f}{lng_dir};").strip()


def format_poi(name, street, city, state, country, postcode, lat, lng, categories):
    parts = ["Location "]
    if name:
        parts.append(f"Name: {name}; ")
    if street:
        parts.append(f"Address: {street}; ")
    position = [v for v in (city, state, country, postcode) if v]
    parts.append("Position: " + ", ".join(position) + "; ")
    lat_dir, lng_dir = "N" if lat >= 0 else "S", "E" if lng >= 0 else "W"
    parts.append(f"Coordinate: {abs(lat):.4f}{lat_dir} {abs(lng):.4f}{lng_dir}; ")
    if categories:
        parts.append(f"Categories: {categories}; ")
    return "".join(parts).strip()


query = format_query("pizzeria near the colosseum", 41.8902, 12.4922)
pois = [
    format_poi("Pizzeria Da Enzo", "Via dei Fori Imperiali 1", "Rome", "Lazio", "IT",
               "00184", 41.8925, 12.4853, "pizza restaurant, restaurant"),
    format_poi("Oslo Dental Clinic", "Storgata 10", "Oslo", "Oslo", "NO",
               "0155", 59.9139, 10.7522, "dentist"),
]

query_vec = encode([query], max_length=128)
poi_vecs = encode(pois, max_length=160)
print((query_vec @ poi_vecs.T).squeeze(0))

Notes on the templates:

  • Categories is the Overture primary category followed by the alternates, comma-separated, with underscores and slashes replaced by spaces.
  • Truncation lengths at training and evaluation time were 128 tokens for queries and 160 for POIs.
  • Strip the final string. Training inputs were stripped, so a trailing space after the last ; adds a token and shifts the embedding. sentence-transformers strips for you; with plain transformers do it yourself, as the helpers above do.
  • No rating, review-count or quality signal appears in either input: this model is purely semantic + geographic. The cross-encoder is the component that consumes the quality score.

For corpus-scale use, embed POIs offline and index them (the paper used FAISS).

Training#

Fine-tuned from BAAI/bge-m3 on the POISS train split: 254,089 training records and 13,374 validation records, with POI content resolved from Overture Places release 2026-03-18.

ObjectiveInfoNCE with in-batch negatives, learnable temperature initialized at 0.01
Hard negatives100 mined per query, 4 sampled per step
OptimizerAdamW, lr 2e-5, linear schedule, gradient clipping 1.0
Batch size16 per GPU × 8 GPUs
Precision / hardwarebf16 mixed precision, 8× NVIDIA A100 40GB
Scheduleup to 20 epochs, early stopping on validation MRR
Selected checkpointepoch 19, validation MRR 0.8828

Negatives are mined by taking the candidates the LLM judge marked non-relevant and padding from the cross-encoder's reranked top-300 starting at rank 30 — semantically related POIs that are nonetheless wrong, typically differing in quality score, distance or prominence.

Training supervision is derived from POISS labels: positives are the graded relevant POIs.

Reproducibility note#

The published weights are numerically identical to the ones used for the paper: they were converted from the training checkpoint by re-expressing a fused-QKV flash-attention layout in the standard XLMRobertaModel layout, and the conversion round-trips bit-exactly through the original remapping function.

Metrics reproduce to about 1e-3 rather than exactly, because the reported numbers were computed in bf16 with flash attention. Near-tied candidates around rank 20 can swap order across precisions, which moves nDCG@20 slightly while leaving the top of the ranking unchanged.

Intended use and limitations#

Intended for research on POI search and geospatial retrieval. Coverage is limited to 7 languages concentrated in the Americas and Europe, so behaviour outside those locales is untested.

Citation#

@inproceedings{maritan-etal-2026-poiss,
    title = "{POISS}: A Large-Scale Multilingual Dataset for Point-of-Interest Search",
    author = "Maritan, Nicola  and
      Moschitti, Alessandro  and
      Borazio, Federico  and
      Zhou, Xiaokun  and
      Bai, Zhengwei",
    booktitle = "Proceedings of the 2026 Conference on Empirical Methods in Natural Language Processing",
    month = oct,
    year = "2026",
    address = "Budapest, Hungary",
    publisher = "Association for Computational Linguistics",
    note = "To appear",
}

License#

These weights are a derivative work of BAAI/bge-m3, distributed by BAAI under the MIT License, and are released under the same license; see LICENSE. The base model derives from XLM-RoBERTa, also MIT.

Modification with respect to the base model: all weights were modified by supervised fine-tuning on the POISS train split with an InfoNCE objective. Architecture, configuration, vocabulary and tokenizer are unchanged.

The training data, POISS, is Apache-2.0 and places no additional restriction on these weights.

Files

12 files · 2.29 GBWeights 2.27 GB (safetensors). Sizes and sha256 from the signed manifest.
Hide all 12 files with their sha256
FileSizesha256
.gitattributes1.57 KB34448b82c17d60fec9b65b1f093c115ddbaadc04beb1b0140b6bfed2e012a930
1_Pooling/config.json192 B25362df2fe37613440d9450603bdd8955f41b0836e82361e8c08759c4fd2522d
LICENSE1.73 KBdbc500a4f6f5902e239924e25da4c12fa6d4bddbbe6e85224c48cda6615de0a1
README.md9.78 KBd1636a5244f0cbb2a1e33a118e29e26729ce91b61bdf4325d47cb531f5bca0bd
config.json658 B70dae5884ced999af00244f776ac9eaa71538d68497d3d6a6091e0318cd32905
model.safetensors2.27 GBce5418d32e3a5faabf1ca828430836f0a0e79baa2601b908a998ea8fa9bf0acd
modules.json350 B21ddb3037a55ebf4549eb5c1dc44c3f28f10b56ec7f1335c92fd90e5b30d88ac
sentence_bert_config.json54 B494f849f8d2e39e56b8abfdd2e82513c663ecfadb056f9b280e1dbf0a85c3dee
sentencepiece.bpe.model5.07 MBcfc8146abe2a0488e9e2a0c56de7952f7c11ab059eca145a0a727afce0db2865
special_tokens_map.json964 B8c785abebea9ae3257b61681b4e6fd8365ceafde980c21970d001e834cf10835
tokenizer.json17.1 MB249df0778f236f6ece390de0de746838ef25b9d6954b68c2ee71249e0a9d8fd4
tokenizer_config.json1.20 KBb87c8703482b0300d3da30e201519aa641f6a450f5eb5bf1e624afbf70c74d80
VersionsEach time the pinned upstream commit or file list changed in this repo. Newest first.
Upstream commitDateContents
c04bb23815 pinned now2026-11-15 04:14 UTC12 files · 2.29 GB

Use it

$ fw get amazon/poiss-bge-m3-retriever
# manifest sha256 1dc875ad7010… · 2.29 GB · 12 files
$ fw verify ./poiss-bge-m3-retriever amazon/poiss-bge-m3-retriever
fw.pyChecks the signature and every sha256, tries each source in order, resumes.
$ python3 fw.py get https://freeweights.allternit.com/manifests/amazon/poiss-bge-m3-retriever.json --dir ./poiss-bge-m3-retriever $ python3 fw.py verify ./poiss-bge-m3-retriever ./amazon__poiss-bge-m3-retriever.json
hfThe Hugging Face CLI with one setting. Same repo id.
$ HF_ENDPOINT=https://freeweights.allternit.com hf download amazon/poiss-bge-m3-retriever --revision c04bb2381540c2e757a57f7ea15d618c6c790840 --local-dir ./poiss-bge-m3-retriever
transformersLoad the weights in Python.
import os os.environ["HF_ENDPOINT"] = "https://freeweights.allternit.com" from transformers import AutoModel, AutoTokenizer tok = AutoTokenizer.from_pretrained("amazon/poiss-bge-m3-retriever", revision="c04bb2381540c2e757a57f7ea15d618c6c790840") model = AutoModel.from_pretrained("amazon/poiss-bge-m3-retriever", revision="c04bb2381540c2e757a57f7ea15d618c6c790840", device_map="auto")
sentence-transformersEmbed text with sentence-transformers.
import os os.environ["HF_ENDPOINT"] = "https://freeweights.allternit.com" from sentence_transformers import SentenceTransformer model = SentenceTransformer("amazon/poiss-bge-m3-retriever", revision="c04bb2381540c2e757a57f7ea15d618c6c790840") vectors = model.encode(["Hello"])

License

Name
MIT License
Id
MIT
Class
Permissive
Redistribution
yes
Listing
Hosted (signed)
Decided
License as declared by the publisher. No person read it. 2026-11-15
Text in
LICENSE
Text sha256
dbc500a4f6f5902e239924e25da4c12fa6d4bddbbe6e85224c48cda6615de0a1
Terms gate
No extra terms beyond the license.

Read the license text

Licenses are checked against the license table. A custom license passes only after a person reads it.

Provenance

From: amazon <huggingface.co/amazon>Newsgroups: alt.freeweights.embedSubject: poiss-bge-m3-retrieverDate: 2026-11-15Commit: c04bb23Signed: 2DC28CC7B26A283B ✓
Upstream
amazon/poiss-bge-m3-retriever
Pinned commit
c04bb2381540c2e757a57f7ea15d618c6c790840
Manifest
poiss-bge-m3-retriever.json · .minisig
Manifest sha256
1dc875ad70107096775e636559c7db1e3ddcf6621d39a17739835142753e7b5a
Signature
minisign, Ed25519, key 2DC28CC7B26A283B
Created
2026-11-15 04:14 UTC
Generator
freeweights-manifest/0.1.0
Takedowns
None.

How to verify

$ curl -O https://freeweights.allternit.com/manifests/amazon/poiss-bge-m3-retriever.json $ curl -O https://freeweights.allternit.com/manifests/amazon/poiss-bge-m3-retriever.json.minisig $ minisign -Vm poiss-bge-m3-retriever.json -P RWQ7KGqyx4zCLXtUFOqvfv8L3g+8fpKJ1FsuxPyOYMF+4KufbUxKq1Oq $ shasum -a 256 <file> # compare with the Files tab

A manifest whose signature fails must be rejected. A file whose size or sha256 does not match must be discarded. Verify a download

Model tree

Parent

BAAI/bge-m3 · this model is a finetune of it

No model in the catalog names this one as its parent.

Get it
Download
$ HF_ENDPOINT=https://freeweights.allternit.com hf download amazon/poiss-bge-m3-retriever
Open in Freeweights Studio

Pull, verify and run it in the Allternit app on Desktop, web or phone.

Signed manifest
minisign, key 2DC28CC7B26A283B. poiss-bge-m3-retriever.json. Provenance. Takedown history: none.
From: sentence-transformers <huggingface.co/sentence-transformers>Subject: all-MiniLM-L6-v1
From: unsloth <huggingface.co/unsloth>Subject: all-MiniLM-L6-v2
From: mlx-community <huggingface.co/mlx-community>Subject: all-MiniLM-L6-v2-4bit
From: sentence-transformers <huggingface.co/sentence-transformers>Subject: all-mpnet-base-v1
From: sentence-transformers <huggingface.co/sentence-transformers>Subject: allenai-specter
From: sentence-transformers <huggingface.co/sentence-transformers>Subject: bert-base-nli-max-tokens