项目介绍:Similarities
项目概述
Similarities 是一个相似度计算和语义搜索的工具包,支持文本和图像的处理。该项目的设计旨在帮助用户在大量数据中进行有效的相似度计算和语义匹配。用户可以使用此工具包进行文本到文本、文本到图像或图像到图像的搜索与匹配,适用于不同语言和大规模数据集。项目采用Python3开发,可通过pip轻松安装,实现即开即用的体验。
功能特性
文本相似度计算与文本搜索
- 语义匹配模型(推荐使用):基于text2vec实现CoSENT模型的文本相似度计算与文本搜索。
- 支持中英文及多语言的SentenceBERT类预训练模型。
- 提供多种相似度计算方法,包括余弦相似度、点积、汉明距离和欧几里得距离等。
- 成功地与SemanticSearch、Faiss、Annoy、Hnsw等文本搜索算法对接,适用于具有亿级数据规模的高效检索。
- 能在命令行环境下执行文本向量转换、索引构建、批量检索和启动服务等操作。
- 字面匹配模型:实现了Word2Vec、BM25、RankBM25、TFIDF、SimHash等字面匹配模型,此外,还包括同义词词林和知网Hownet义原匹配。
图像相似度计算与图像搜索
- 提供CLIP (Contrastive Language-Image Pre-Training) 模型,适用于图文间的匹配和检索,还可用于零样本图片分类。
- 支持openai和Chinese-CLIP系列模型,能够处理多种语言的文本与图像表达。
- 配置前后端分离部署,利用FastAPI进行后端服务,Gradio实现前端展示。
- 支持使用Faiss进行亿级数据量的高效检索,并可利用GPU加速。
- 提供命令行工具用于图像和文本向量的提取、索引构建和批量检索。
- 图像特征提取功能:基于cv2实现了pHash、dHash、wHash、aHash和SIFT等常用图像特征提取算法。
安装与使用
安装
用户可以通过如下命令进行安装:
pip install torch # or conda install pytorch
pip install -U similarities
使用示例
- 文本相似度计算
例如,要计算两段文本的相似度,可以利用以下代码:
from similarities import BertSimilarity
m = BertSimilarity(model_name_or_path="shibing624/text2vec-base-chinese")
r = m.similarity('如何更换花呗绑定银行卡', '花呗更改绑定银行卡')
print(f"similarity score: {float(r)}") # similarity score: 0.855146050453186
- 文本搜索
项目支持在海量文档中找到与给定查询最相似的文本,适用于问答匹配等场景,可使用SemanticSearch、Annoy、Hnsw等算法提高搜索效率。
- 图像相似度计算与搜索
用户可利用CLIP和其他特征提取算法进行图像到图像或图像到文本的相似度计算与搜索。项目中还提供了用于高效向量检索和后端服务启动的示例脚本。
贡献与参与
用户如有意贡献代码,可通过项目的GitHub页面提交建议和代码。在贡献之前,请确保添加相应的单元测试并通过所有测试。
联系方式
如需进一步了解项目或寻求支持,可通过以下方式联系:
- GitHub issue
- 发送邮件至:xuming624@qq.com
- 微信号:xuming624(备注:姓名-公司-NLP)
希望该项目能够为从事相关领域工作的开发者和研究人员提供便利和支持。