SGPT项目介绍
SGPT项目,全称为“GPT句子嵌入用于语义搜索”,是一个基于GPT(生成式预训练变换模型)的自然语言处理项目,旨在通过句子嵌入技术提升语义搜索的效果。该项目提供了实现论文SGPT: GPT Sentence Embeddings for Semantic Search的代码、结果和预训练模型。
更新日志
- 2024年2月:发布了GRIT & GritLM模型,这些模型在性能上全面优于SGPT模型,建议用户切换使用新模型。
- 2022年9月:SGPT双编码器可以通过句子转换器轻松使用。
- 2022年8月:发布了多语言BLOOM SGPT模型,包含非对称(7.1亿参数)和对称(1.7亿参数)两种版本。
- 2022年6月:公开了OpenAI的搜索终端机制,与SGPT交叉编码器进行对比。
- 2022年3月:5.8亿双编码器模型在USEB和BEIR的性能分别提升了4%和1%。
- 2022年2月:正式发布了SGPT相关论文。
项目结构
SGPT项目的代码采用文件夹组织,主要分为以下几个部分:
- biencoder:处理双编码器的训练和推理。
- crossencoder:处理交叉编码器的推理。
- other:存放项目中使用的图表和其他相关文件。
- 各子目录中都提供了各自的README文件,详细说明了结构、下载数据集和模型的方式以及生成数据集和模型所用的命令。
使用SGPT与Huggingface集成
SGPT项目还提供了使用Huggingface平台进行语义搜索的Python示例,包括对称和非对称语义搜索。更大的模型如 Muennighoff/SGPT-5.8B-weightedmean-nli-bitfit
可以提供更好的性能。
双编码器
- 对称语义搜索:通过加权平均池化生成句子嵌入,计算句子间的余弦相似度来衡量语义相似性。
- 非对称语义搜索:同样使用加权平均池化技术,适用于查询与文档的匹配场景。
交叉编码器
- 对称与非对称语义搜索:使用GPT模型的对数概率进行预测,无需微调。
使用SGPT与Sentence Transformers集成
SGPT模型也可以与句子转换器集成。对称双编码器可以与最新的句子转换器完全兼容,而非对称版本需要进行一些特定的设置。
致谢
SGPT项目得到了多个团队的支持与合作,特别感谢OpenAI的学术访问计划、UKPLab的工具库(如SBERT、BEIR、USEB)、Eleuther AI的模型和Huggingface的Transformers库。
引用
如果SGPT对你的工作有所帮助,欢迎引用我们的论文:
@article{muennighoff2022sgpt,
title={SGPT: GPT Sentence Embeddings for Semantic Search},
author={Muennighoff, Niklas},
journal={arXiv preprint arXiv:2202.08904},
year={2022}
}
通过SGPT项目,研究人员和开发者可以更好地利用大规模语言模型提升语义搜索的精度和效率,实现更智能的信息检索和语义识别。