Package: similarities
🇨🇳中文|🌐English|📖文档/Docs|🤖模型/ModelsSimilarities: Similarity Calculation and Semantic Searchsimilarities: a toolkit for similarity calculation and semantic search, supports text and image. 相似度计算、语义匹配搜索工具包。similarities实现了多种文本和图片的相似度计算、语义匹配检索算法，支持亿级数据文搜文、文搜图、图搜图，python3开发，pip安装，开箱即用。GuideFeaturesInstallUsageContactAcknowledgementsFeatures文本相似度计算 + 文本搜索语义匹配模型【推荐】：本项目基于text2vec实现了CoSENT模型的文本相似度计算和文本搜索支持中英文、多语言多种SentenceBERT类预训练模型支持 Cos Similarity/Dot Product/Hamming Distance/Euclidean Distance 等多种相似度计算方法支持 SemanticSearch/Faiss/Annoy/Hnsw 等多种文本搜索算法支持亿级数据高效检索支持命令行文本转向量（多卡）、建索引、批量检索、启动服务字面匹配模型：本项目实现了Word2Vec、BM25、RankBM25、TFIDF、SimHash、同义词词林、知网Hownet义原匹配等多种字面匹配模型图像相似度计算/图文相似度计算 + 图搜图/文搜图CLIP(Contrastive Language-Image Pre-Training)模型：图文匹配模型，可用于图文特征（embeddings）、相似度计算、图文检索、零样本图片分类，本项目基于PyTorch实现了CLIP模型的向量表征、构建索引（基于AutoFaiss）、批量检索、后台服务（基于FastAPI）、前端展现（基于Gradio）功能支持openai/clip-vit-base-patch32等CLIP系列模型支持OFA-Sys/chinese-clip-vit-huge-patch14等Chinese-CLIP系列模型支持前后端分离部署，FastAPI后端服务，Gradio前端展现支持亿级数据高效检索，基于Faiss检索，支持GPU加速支持图搜图、文搜图、向量搜图支持图像embedding提取、文本embedding提取支持图像相似度计算、图文相似度计算支持命令行图像转向量（多卡）、建索引、批量检索、启动服务图像特征提取：本项目基于cv2实现了pHash、dHash、wHash、aHash、SIFT等多种图像特征提取算法DemoImage Search Demo:https://huggingface.co/spaces/shibing624/CLIP-Image-SearchText Search Demo:https://huggingface.co/spaces/shibing624/similaritiesInstallpip install torch # conda install pytorch
pip install -U similaritiesorgit clone https://github.com/shibing624/similarities.git
cd similarities
pip install -e .Usage1. 文本向量相似度计算example:examples/text_similarity_demo.pyfromsimilaritiesimportBertSimilaritym=BertSimilarity(model_name_or_path="shibing624/text2vec-base-chinese")r=m.similarity('如何更换花呗绑定银行卡','花呗更改绑定银行卡')print(f"similarity score:{float(r)}")# similarity score: 0.855146050453186model_name_or_path：模型名称或者路径，默认会从HF model hub下载并使用中文语义匹配模型shibing624/text2vec-base-chinese，如果需要多语言，可以替换为shibing624/text2vec-base-multilingual模型，支持中、英、韩、日、德、意等多国语言2. 文本向量搜索在文档候选集中找与query最相似的文本，常用于QA场景的问句相似匹配、文本搜索等任务。SemanticSearch精准搜索算法，Cos Similarity + topK 聚类检索，适合百万内数据集example:examples/text_semantic_search_demo.pyAnnoy、Hnswlib等近似搜索算法，适合百万级数据集example:examples/fast_text_semantic_search_demo.pyFaiss高效向量检索，适合亿级数据集文本转向量，建索引，批量检索，启动服务：examples/faiss_bert_search_server_demo.py前端python调用：examples/faiss_bert_search_client_demo.py3. 基于字面的文本相似度计算和文本搜索支持同义词词林（Cilin）、知网Hownet、词向量（WordEmbedding）、Tfidf、SimHash、BM25等算法的相似度计算和字面匹配搜索，常用于文本匹配冷启动。example:examples/literal_text_semantic_search_demo.py4. 图像相似度计算和图片搜索支持CLIP、pHash、SIFT等算法的图像相似度计算和匹配搜索，中文CLIP模型支持图搜图，文搜图、还支持中英文图文互搜。example:examples/image_semantic_search_demo.pyFaiss高效向量检索，适合亿级数据集图像转向量，建索引，批量检索，启动服务：examples/faiss_clip_search_server_demo.py前端python调用：examples/faiss_clip_search_client_demo.py前端gradio调用：examples/faiss_clip_search_gradio_demo.py命令行模式（CLI）支持批量获取文本向量、图像向量（embedding）支持构建索引（index）支持批量检索（filter）支持启动服务（server）code:cli.py> similarities -h                                    

NAME
    similarities

SYNOPSIS
    similarities COMMAND

COMMANDS
    COMMAND is one of the following:

     bert_embedding
       Compute embeddings for a list of sentences

     bert_index
       Build indexes from text embeddings using autofaiss

     bert_filter
       Entry point of bert filter, batch search index

     bert_server
       Main entry point of bert search backend, start the server

     clip_embedding
       Embedding text and image with clip model

     clip_index
       Build indexes from embeddings using autofaiss

     clip_filter
       Entry point of clip filter, batch search index

     clip_server
       Main entry point of clip search backend, start the serverrun：pipinstallsimilarities-U
similaritiesclip_embedding-h# examplecdexamples
similaritiesclip_embeddingdata/toy_clip/bert_embedding等是二级命令，bert开头的是文本相关，clip开头的是图像相关各二级命令使用方法见similarities clip_embedding -h上面示例中data/toy_clip/是clip_embedding方法的input_dir参数，输入文件目录（required）ContactIssue(建议)
：邮件我：xuming:xuming624@qq.com微信我： 加我微信号：xuming624, 备注：姓名-公司-NLP进NLP交流群。Citation如果你在研究中使用了similarities，请按如下格式引用：APA:Xu, M. Similarities: Compute similarity score for humans (Version 1.0.1) [Computer software]. https://github.com/shibing624/similaritiesBibTeX:@misc{Xu_Similarities_Compute_similarity,
  title={Similarities: similarity calculation and semantic search toolkit},
  author={Xu Ming},
  year={2022},
  howpublished={\url{https://github.com/shibing624/similarities}},
}License授权协议为The Apache License 2.0，可免费用做商业用途。请在产品说明中附加similarities的链接和授权协议。Contribute项目代码还很粗糙，如果大家对代码有所改进，欢迎提交回本项目，在提交之前，注意以下两点：在tests添加相应的单元测试使用python -m pytest来运行所有单元测试，确保所有单测都是通过的之后即可提交PR。AcknowledgementsA Simple but Tough-to-Beat Baseline for Sentence Embeddings[Sanjeev Arora and Yingyu Liang and Tengyu Ma, 2017]https://github.com/liuhuanyong/SentenceSimilarityhttps://github.com/qwertyforce/image_searchImageHash - Official Github repositoryhttps://github.com/openai/CLIPhttps://github.com/OFA-Sys/Chinese-CLIPhttps://github.com/UKPLab/sentence-transformershttps://github.com/rom1504/clip-retrievalThanks for their great work!