基础模型:
- google-bert/bert-base-uncased
数据集:
- microsoft/ms_marco
语言:
- en
库名称: transformers
管道标签: feature-extraction
许可证: mit
模型卡片
这是论文Hypencoder: 信息检索的超网络中的官方模型。
模型详情
这是一个Hypencoder双编码器。它包含两个主干:文本编码器和Hypencoder。文本编码器将项目转换为768维向量,而Hypencoder将文本转换为一个小型神经网络,该网络以文本编码器生成的768维向量作为输入。这个小网络随后用于输出相关性分数。要使用此模型,请查看Github页面,其中包含所需的代码和运行模型的详细信息。
模型变体
我们发布了论文中使用的四个模型。每个模型除了小型神经网络(我们称为q-nets)的隐藏层数量不同外,其余部分完全相同。
使用方法
from hypencoder_cb.modeling.hypencoder import Hypencoder, HypencoderDualEncoder, TextEncoder
from transformers import AutoTokenizer
dual_encoder = HypencoderDualEncoder.from_pretrained("jfkback/hypencoder.6_layer")
tokenizer = AutoTokenizer.from_pretrained("jfkback/hypencoder.6_layer")
query_encoder: Hypencoder = dual_encoder.query_encoder
passage_encoder: TextEncoder = dual_encoder.passage_encoder
queries = [
"印度有多少个邦",
"脑震荡症状何时出现",
]
passages = [
"印度有28个邦和8个中央直辖区。",
"脑震荡症状可能在受伤后立即出现,或在72小时内出现。",
]
query_inputs = tokenizer(queries, return_tensors="pt", padding=True, truncation=True)
passage_inputs = tokenizer(passages, return_tensors="pt", padding=True, truncation=True)
q_nets = query_encoder(input_ids=query_inputs["input_ids"], attention_mask=query_inputs["attention_mask"]).representation
passage_embeddings = passage_encoder(input_ids=passage_inputs["input_ids"], attention_mask=passage_inputs["attention_mask"]).representation
passage_embeddings_single = passage_embeddings.unsqueeze(1)
scores = q_nets(passage_embeddings_single)
passage_embeddings_double = passage_embeddings.repeat(2, 1).reshape(2, 2, -1)
scores = q_nets(passage_embeddings_double)
引用
BibTeX:
@misc{killingback2025hypencoderhypernetworksinformationretrieval,
title={Hypencoder: 信息检索的超网络},
author={Julian Killingback and Hansi Zeng and Hamed Zamani},
year={2025},
eprint={2502.05364},
archivePrefix={arXiv},
primaryClass={cs.IR},
url={https://arxiv.org/abs/2502.05364},
}