PageSourceSearch

https://weaviate.io/assets/js/db9f9ecb.8032d06f.js

js weaviate.io collected 2026-10-01 08:39:26 UTC 26,256 bytes, 1 lines download raw bytes

1"use strict";(globalThis.webpackChunkmy_website=globalThis.webpackChunkmy_website||[]).push([[9737],{36056(e,n,t){t.r(n),t.d(n,{assets:()=>c,contentTitle:()=>l,default:()=>g,frontMatter:()=>o,metadata:()=>a,toc:()=>d});var a=t(572),s=t(74848),i=t(28453),r=t(73284);const o={title:"How to choose a Sentence Transformer from Hugging Face",slug:"how-to-choose-a-sentence-transformer-from-hugging-face",authors:["connor"],date:new Date("2022-10-04T00:00:00.000Z"),tags:["integrations"],image:"./img/hero.png",description:"Learn about the various Sentence Transformers from Hugging Face!"},l=void 0,c={image:t(92884).A,authorsImageUrls:[void 0]},d=[{value:"Differences in Deep Learning models",id:"differences-in-deep-learning-models",level:2},{value:"Domain",id:"domain",level:2},{value:"Color-coded details",id:"color-coded-details",level:3},{value:"Private models",id:"private-models",level:3},{value:"Domain recap",id:"domain-recap",level:3},{value:"Task",id:"task",level:2},{value:"Task Benchmarks",id:"task-benchmarks",level:3},{value:"Real human query-based datasets",id:"real-human-query-based-datasets",level:3},{value:"Question Answering vs Fact Verification",id:"question-answering-vs-fact-verification",level:3},{value:"Task construction",id:"task-construction",level:3},{value:"Task recap",id:"task-recap",level:3},{value:"Scale",id:"scale",level:2},{value:"The appeal of Weakly-Suppervised or Self-Supervised learning techniques",id:"the-appeal-of-weakly-suppervised-or-self-supervised-learning-techniques",level:3},{value:"Scale vs model fit",id:"scale-vs-model-fit",level:3},{value:"Scale recap",id:"scale-recap",level:3},{value:"Modality",id:"modality",level:2},{value:"Conclusion",id:"conclusion",level:2},...r.RM];function h(e){const n={a:"a",code:"code",h2:"h2",h3:"h3",img:"img",li:"li",ol:"ol",p:"p",strong:"strong",ul:"ul",...(0,i.R)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(n.p,{children:(0,s.jsx)(n.img,{alt:"How to choose a Sentence Transformer from Hugging Face",src:t(98479).A+"",width:"1201",height:"630"})}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.a,{href:"https://docs.weaviate.io/weaviate/",children:"Weaviate"})," has recently unveiled a new module which allows users to easily ",(0,s.jsx)(n.a,{href:"/blog/hugging-face-inference-api-in-weaviate",children:"integrate models from Hugging Face"})," to vectorize their data and incoming queries. At the time of this writing, there are ",(0,s.jsx)(n.a,{href:"https://huggingface.co/models?pipeline_tag=sentence-similarity&sort=downloads",children:"over 700 models"})," that can be easily plugged into Weaviate."]}),"\n",(0,s.jsxs)(n.p,{children:["You may ask: ",(0,s.jsx)(n.strong,{children:"Why are there so many models and how do they differ?"}),(0,s.jsx)("br",{}),"\nAnd more importantly: ",(0,s.jsx)(n.strong,{children:"How to choose a Sentence Transformer for Semantic Search?"})]}),"\n",(0,s.jsxs)(n.p,{children:["There are too many models to summarize in one flowchart. So instead, we will describe factors that differentiate these models and give you tools to ",(0,s.jsx)(n.strong,{children:"choose the perfect model for your use case"}),"."]}),"\n",(0,s.jsx)("img",{src:t(39549).A,alt:"Weaviate Sentence Transformers",style:{maxWidth:"70%"}}),"\n",(0,s.jsx)(n.h2,{id:"differences-in-deep-learning-models",children:"Differences in Deep Learning models"}),"\n",(0,s.jsx)(n.p,{children:'Not too long ago, Deep Learning models were typically differentiated based on architectural decisions. For example, ResNet differs from DenseNet based on how frequently they implement skip connections between layers. Fast forward to today, the Deep Learning community has fallen in love with attention layers and the transformer network architecture. Transformers mostly differ between encoder, decoder, and encoder-decoder designs. They additionally vary at the level of details such as the number of layers and hidden dimension sizes. However, the consideration of these kinds of details is mostly a thing of the past thanks to the beauty of the Hugging Face transformers library and the success of this particular model architecture. These details can generally be summarized into the "parameter count" metric, of which most sentence transformers contain about 22 million parameters.'}),"\n",(0,s.jsxs)(n.p,{children:["These days, neural nets differ from each other more so based on ",(0,s.jsx)(n.strong,{children:"what"})," they were trained on with respect to ",(0,s.jsx)(n.strong,{children:"data"})," -- as well as some subtleties with ",(0,s.jsx)(n.strong,{children:"how"})," they were trained, which we will save for a future article. This article will focus on ",(0,s.jsx)(n.strong,{children:"4 key dimensions"}),":"]}),"\n",(0,s.jsxs)(n.ol,{children:["\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.a,{href:"#domain",children:"Domain"})}),"\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.a,{href:"#task",children:"Task"})}),"\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.a,{href:"#scale",children:"Scale"})}),"\n",(0,s.jsx)(n.li,{children:(0,s.jsx)(n.a,{href:"#modality",children:"Modality"})}),"\n"]}),"\n",(0,s.jsx)(n.h2,{id:"domain",children:"Domain"}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Domain"})," largely describes the high-level notion of what the dataset is about. This is a common term in Machine Learning research to describe differences in large collections of objects. For example, in Computer Vision one ",(0,s.jsx)(n.strong,{children:"Domain"})," could be Paintbrush illustrations, and another ",(0,s.jsx)(n.strong,{children:"Domain"})," could be Photorealistic images. Both Paintbrush illustrations and Photorealistic images may have been labeled for the same ",(0,s.jsx)(n.strong,{children:"Task"}),", i.e. classify images as cats or dogs. The model trained to classify cats in the Paintbrush illustration will not perform as well as the model trained to classify cats in Photorealistic images, if the final use case is Photorealistic images!"]}),"\n",(0,s.jsx)(n.p,{children:"Domain differences are very common in Natural Language Processing (NLP), such as the difference between Legal Contracts, Financial Statements, Biomedical Scientific Papers, Wikipedia, or Reddit Conversations to give a few examples."}
1),"\n",(0,s.jsx)(n.h3,{id:"color-coded-details",children:"Color-coded details"}),"\n",(0,s.jsxs)(n.p,{children:["For every model, Hugging Face displays a list of important ",(0,s.jsx)(n.strong,{children:"color-coded"})," details, such as:"]}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsxs)(n.li,{children:["Blue - the ",(0,s.jsx)(n.strong,{children:"dataset"})," it was trained on"]}),"\n",(0,s.jsxs)(n.li,{children:["Green - the ",(0,s.jsx)(n.strong,{children:"language"})," of the dataset"]}),"\n",(0,s.jsxs)(n.li,{children:["White or Purple - ",(0,s.jsx)(n.strong,{children:"additional details"})," about the model"]}),"\n"]}),"\n",(0,s.jsxs)(n.p,{children:["So, if we look at two Deep Learning models, we can see that ",(0,s.jsx)(n.a,{href:"https://huggingface.co/dangvantuan/sentence-camembert-large",children:"dangvantuan/sentence-camembert-large"})," was trained on ",(0,s.jsx)(n.strong,{children:"stsb_multi_mt"}),", which is a ",(0,s.jsx)(n.strong,{children:"French"})," dataset."]}),"\n",(0,s.jsx)(n.p,{children:(0,s.jsx)(n.img,{alt:"Camembert Hugging Face Model Card",src:t(96166).A+"",width:"1336",height:"180"})}),"\n",(0,s.jsxs)(n.p,{children:["While ",(0,s.jsx)(n.a,{href:"https://huggingface.co/sentence-transformers/all-MiniLM-L6-v2",children:"sentence-transformers/all-MiniLM-L6-v2"})," was trained on ",(0,s.jsx)(n.strong,{children:"several datasets"})," in ",(0,s.jsx)(n.strong,{children:"English"}),"."]}),"\n",(0,s.jsx)(n.p,{children:(0,s.jsx)(n.img,{alt:"all-MiniLM Hugging Face Model Card",src:t(80231).A+"",width:"1362",height:"278"})}),"\n",(0,s.jsxs)(n.p,{children:["To put it as bluntly as possible, what makes ",(0,s.jsx)(n.code,{children:"dangvantuan/sentence-camembert-large"})," better at French sentence embeddings than ",(0,s.jsx)(n.code,{children:"sentence-transformers/all-MiniLM-L6-v2"})," is that\u2026 it was trained on ",(0,s.jsx)(n.strong,{children:"French"})," sentences! There are many examples like this, models trained on ",(0,s.jsx)(n.strong,{children:"biomedical text"}),", ",(0,s.jsx)(n.strong,{children:"legal documents"}),", or ",(0,s.jsx)(n.strong,{children:"Spanish"})," are generally going to perform better when tested on that domain compared to models that haven't been explicitly trained for the domain."]}),"\n",(0,s.jsxs)(n.p,{children:["Note that these tags are a part of Hugging Face\u2019s ",(0,s.jsx)(n.strong,{children:"model cards"}),", an impressive effort to continue advancing the organization of Machine Learning models. At the time of this writing, model cards still rely on ",(0,s.jsx)(n.strong,{children:"manual tagging"}),". It may be the case that the developer uploading the model hasn\u2019t filled out these details. If you are new to Hugging Face, please consider annotating your uploaded models by adding a model card - YAML sections in the ",(0,s.jsx)(n.code,{children:"README.md"}),", like this:"]}),"\n",(0,s.jsx)("img",{src:t(37887).A,alt:"How to populate a Hugging Face model card",style:{maxWidth:"70%"}}),"\n",(0,s.jsx)(n.h3,{id:"private-models",children:"Private models"}),"\n",(0,s.jsxs)(n.p,{children:["A large part of the beauty of Weaviate's integration with Hugging Face is that ",(0,s.jsx)(n.strong,{children:"anyone"})," can upload their models to Hugging Face and use them in Weaviate's vector database. For example, I am doing research on COVID-19 literature, so I have fine-tuned a model on CORD-19 title to abstract matching and uploaded it to ",(0,s.jsx)(n.a,{href:"https://huggingface.co/CShorten/CORD-19-Title-Abstracts-1-more-epoch",children:"CShorten/CORD-19-Title-Abstracts"}),"."]}),"\n",(0,s.jsx)(n.h3,{id:"domain-recap",children:"Domain recap"}),"\n",(0,s.jsxs)(n.p,{children:["As a quick recap, ",(0,s.jsx)(n.strong,{children:"Domain"})," largely describes the high-level notion of ",(0,s.jsx)(n.strong,{children:"what"})," the dataset is about. In addition to Domain, there are many ",(0,s.jsx)(n.strong,{children:"Tasks"}),' used to produce vector embeddings. Unlike language models, in which most models use the training task of "predict the masked out token", embedding models are trained in a much broader set of ways. For example, ',(0,s.jsx)(n.strong,{children:"Duplicate Question Detection"})," might perform better with a different model than one trained with ",(0,s.jsx)(n.strong,{children:"Question Answering"}),"."]}),"\n",(0,s.jsxs)(n.p,{children:["It is a good rule of thumb to find models that have been trained within the same domain as your use case. Another important consideration for this is the task used to label the data and whether this labeling al
1igns with the task of interest or not. If we have two models trained on ",(0,s.jsx)(n.strong,{children:"French Legal Contracts"})," and we are looking to develop a ",(0,s.jsx)(n.strong,{children:"Question Answering"})," system\u2026 ideally it would be best if the HuggingFace model has not only been trained on ",(0,s.jsx)(n.strong,{children:"French Legal Contracts"}),", but ",(0,s.jsx)(n.strong,{children:"Question Answering"})," as well."]}),"\n",(0,s.jsx)(n.h2,{id:"task",children:"Task"}),"\n",(0,s.jsxs)(n.p,{children:["A ",(0,s.jsx)(n.strong,{children:"Task"})," is the function for which a model was trained, such as Question Answering or Image Classification. Sentence Transformers and other embedding models such as CLIP solve the ",(0,s.jsx)(n.strong,{children:"Task"})," of predicting which data point is ",(0,s.jsx)(n.strong,{children:"similar to the query"})," and which data point or data points are ",(0,s.jsx)(n.strong,{children:"dissimilar to the query"}),". This is different from GPT and BERT style models that complete the ",(0,s.jsx)(n.strong,{children:"Task"})," of predicting a masked out token."]}),"\n",(0,s.jsx)(n.p,{children:"Supervised Learning datasets play a prevalent role in Deep Learning applications, especially for many of the Sentence Transformer models. A dataset labeled for Question Answering is very different from Image Classification, or even Duplicate Question Detection."}),"\n",(0,s.jsx)(n.h3,{id:"task-benchmarks",children:"Task Benchmarks"}),"\n",(0,s.jsxs)(n.p,{children:["Two excellent benchmarks that collect Supervised Learning tasks to evaluate Sentence Transformers are Knowledge Intensive Language Tasks (",(0,s.jsx)(n.a,{href:"https://ai.facebook.com/tools/kilt/",children:"KILT"}),") and Benchmarking Information Retrieval (",(0,s.jsx)(n.a,{href:"https://arxiv.org/abs/2104.08663",children:"BEIR"}),")."]}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"KILT"})," uses the same domain for all tasks, Wikipedia. Each task is labeled with a different task: Slot Filling, Question Answering, Dialogue, Fact Checking, or Entity Linking."]}),"\n",(0,s.jsx)(n.p,{children:(0,s.jsx)(n.img,{alt:"KILT Benchmark",src:t(92641).A+"",width:"1386",height:"946"})}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"BEIR"})," tests many different tasks: Fact Checking, Citation Prediction, Duplicate Question Retrieval, Argument Retrieval and more.  BEIR also tests a diverse set of domains such as Wikipedia, Scientific Papers, Quora, Stack Exchange, Internet scrapes, News, Financial Documents, and Tweets."]}),"\n",(0,s.jsx)(n.p,{children:(0,s.jsx)(n.img,{alt:"BEIR Benchmark",src:t(39022).A+"",width:"1386",height:"446"})}),"\n",(0,s.jsx)(n.h3,{id:"real-human-query-based-datasets",children:"Real human query-based datasets"}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:(0,s.jsx)(n.a,{href:"https://arxiv.org/abs/1611.09268",children:"MS MARCO"})})," is another influential dataset containing real human queries on Microsoft Bing\u2019s search engine paired with passages that the human user clicked on in hope of answering their query. As another example, ",(0,s.jsx)(n.strong,{children:(0,s.jsx)(n.a,{href:"https://arxiv.org/abs/1907.01041",children:"Quora Question Pairs"})})," contains human labels of whether or not two questions are asking the same thing. The Sentence Transformer documentation presents 5 main categories of training data: Semantic Textual Similarity (STS), Natural Language Inference (NLI), Paraphrase Data, Quora Duplicate Questions (QQP), and MS MARCO."]}),"\n",(0,s.jsxs)(n.p,{children:["These datasets can be simplified into 2 categories: (1) ",(0,s.jsx)(n.strong,{children:"Exact Semantic Match"})," and (2) ",(0,s.jsx)(n.strong,{children:"Relational Inference"}),". I believe the adoption of these categories can simplify the organization of text datasets used in embedding optimization."]}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Exact Semantic Match"})," is designed to encapsulate datasets like STS and Quora Question Pairs, as well as the miscellaneous Mono- and Multilingual Paraphrase datasets."]}),"\n",(0,s.jsxs)(n.p,{children:[(0,s.jsx)(n.strong,{children:"Relational Inference"}
1)," is intended to capture Natural Language Inference, Fact Verification, Question Answering datasets, click logs like MS MARCO, and the massive pool of weakly supervised datasets extracted from web scraping, such as Reddit conversations and Stack Exchange discussions."]}),"\n",(0,s.jsxs)(n.p,{children:["I believe the core difference between ",(0,s.jsx)(n.strong,{children:"Exact Semantic Match"})," and ",(0,s.jsx)(n.strong,{children:"Relational Inference"}),' is whether the task requires some level of intermediate relational processing. For example, in the Natural Language Inference task, it isn\u2019t enough to say "Bowen likes Ice Cream" is equivalent to "I saw Bowen eating Ice Cream". The model must learn an intermediate function of entailment. These intermediate functions must be learned for Natural Language Inference, Fact Verification, Question Answering, and so on more so than tasks like aligning English to French translations or detecting Question paraphrases.']}),"\n",(0,s.jsx)(n.h3,{id:"question-answering-vs-fact-verification",children:"Question Answering vs Fact Verification"}),"\n",(0,s.jsxs)(n.p,{children:["These two high-level categories are a good starting place for taxonomizing these datasets. However, there are still noticeable differences within each category. For example, what makes ",(0,s.jsx)(n.strong,{children:"Question Answering"})," different from ",(0,s.jsx)(n.strong,{children:"Fact Verification"})," for evaluating the quality of a Sentence Transformer? Quite simply, questions have a unique style compared to facts. So while the retrieval task is similar in returning the most suitable answers or evidence, the slight difference in question versus stated fact will have an impact on performance. We advise readers to look for these subtle differences when choosing a Sentence Transformer for their use case."]}),"\n",(0,s.jsx)(n.h3,{id:"task-construction",children:"Task construction"}),"\n",(0,s.jsxs)(n.p,{children:["Another important idea in ",(0,s.jsx)(n.strong,{children:"Task"})," construction \u2013 that leads nicely to the next topic of ",(0,s.jsx)(n.strong,{children:"Scale"})," \u2013 is to discuss Supervised and Self-Supervised Learning. Supervised Learning requires humans to annotate the data, whereas Self-Supervised does not. Self-Supervised lets us take advantage of Internet-scale data. However, unlike the autoregressive GPT style algorithm, embedding learning hasn\u2019t converged to a single task within Self-Supervised data."]}),"\n",(0,s.jsxs)(n.p,{children:["The most common Self-Supervised ",(0,s.jsx)(n.strong,{children:"Task"})," heuristic is to use neighboring passages as positive pairs. This works pretty well since most neighboring passages tend to be semantically related. As shown in the 1B training pairs example below, there are many natural cases of this on the Internet as well \u2013 such as Reddit post-comment pairs or Stack Exchange question-answer pairs."]}),"\n",(0,s.jsx)(n.h3,{id:"task-recap",children:"Task recap"}),"\n",(0,s.jsxs)(n.p,{children:["So generally when choosing a Sentence Transformer for your use case, you want to find the best alignment between ",(0,s.jsx)(n.strong,{children:"Domain"})," and ",(0,s.jsx)(n.strong,{children:"Task"})," with one of the many pre-trained models. Another key element to understand when looking at the datasets used in training is the ",(0,s.jsx)(n.strong,{children:"Scale"}),". Deep Learning models generally benefit from larger-scale datasets, but this may come at the cost of noisy labeling \u2013 especially when the model size is not scaled up with the dataset."]}),"\n",(0,s.jsx)(n.h2,{id:"scale",children:"Scale"}),"\n",(0,s.jsxs)(n.p,{children:["In Deep Learning, ",(0,s.jsx)(n.strong,{children:"scale"})," typically refers to larger models, but here we are using a scale to describe the size of the dataset. But of course, these factors are entangled with one another. At the time of this writing, we generally would need to scale up the model size to take advantage of a larger dataset. Thus, if we are constrained by budget \u2013 a high-quality dataset becomes much more important."]}),"\n",(0,s.jsxs)(n.p,{children:["Something I found very interesting while researching the ",(0,s.jsx)(n.strong,{children:"Scale"}),' of embedding datasets for this article, was the Hugging Face community event to "Train the Best Sentence Embedding Model Ever with 1B Training Pairs" led by Nils Reimers. Of the 1 billion pairs, some of the following sub-datasets stood out to me: Reddit Comments from 2015-2018 with ',(0,s.jsx)(n.strong,{children:"~730 million pairs"}),"! S2ORC Citation pairs at ",(0,s.jsx)(n.strong,{children:"~116 million"}),", WikiAnswers duplicate question pairs at ",(0,s.jsx)(n.strong,{children:"~77 million"}),", Stack Exchange pairs at ",(0,s.jsx)(n.strong,{children:"~25 million"}),", and some labeled datasets like Quora Question Triplets and Natural Questions at around ",(0,s.jsx)(n.strong,{children:"~100,000"})," pairs each. I highly recommend checking out this full list, which can be found ",(0,s.jsx)(n.a,{href:"https://huggingface.co/sentence-transformers/all-MiniLM-L12-v2",children:"here"}),"."]}),"\n",(0,s.jsx)(n.h3,{id:"the-appeal-of-weakly-suppervised-or-self-supervised-learning-techniques",children:"The appeal of Weakly-Suppervised or Self-Supervised learning techniques"}),"\n",(0,s.jsx)(n.p,{children:"The list of datasets from the 1B training pairs challenge illustrates the appeal of Weakly Supervised or Self-Supervised Learning techniques. To contrast, Natural Questions is one of the larger Supervised datasets for the Question Answering Task. Natural Questions (NQ) requires humans to derive questions given a Wikipedia context as input. As a result of this slow process, the dataset contains 100,231 question-context-answer tuples\u2026 Which is quite impressive, but much smaller than the ~730 million pairs extracted from Reddit without human intervention."}),"\n",(0,s.jsx)(n.h3,{id:"scale-vs-model-fit",children:"Scale vs model fit"}),"\n",(0,s.jsxs)(n.p,{children:["Large-scale and ",(0,s.jsx)(n.strong,{children:"expensive"})," models can achieve remarkable abilities with datasets like 730 million Reddit conversations. However, if we are constrained to the average ~22 million parameters in Sentence Transformers, and are using ",(0,s.jsx)(n.strong,{children:"Weaviate"})," for a general question-answering app, the 100,000 examples in Natural Questions will produce a better model than Reddit conversations ",(0,s.jsx)(n.strong,{children:"for that particular use case"}),"."]}),"\n",(0,s.jsx)(n.h3,{id:"scale-recap",children:"Scale recap"}),"\n",(0,s.jsxs)(n.p,{children:["So with respect to ",(0,s.jsx)(n.strong,{children:"Scale"}),", we generally want as much data as possible. But if we are getting the data from noisy sources like Internet conversation threads, it\u2019s probably not worth the cost of scaling it up."]}),"\n",(0,s.jsx)(n.h2,{id:"modality",children:"Modality"}),"\n",(0,s.jsxs)(n.p,{children:["Modality is one of the most exciting emerging trends in Deep Learning that would be a shame to leave out of this discu
1ssion. Models such as DALL-E, which generates unbelievable images from text prompts, or CLIP, that searches through massive scales of images with natural language interfaces, have captured our imagination about the future of Deep Learning. Readers may be happy to know that ",(0,s.jsx)(n.a,{href:"https://huggingface.co/sentence-transformers/clip-ViT-B-32",children:"the Sentence Transformer library has support for CLIP models"}),"."]}),"\n",(0,s.jsxs)(n.p,{children:["Deep Learning research has mainly been focused on Text, Image, and Image-Text modality combinations, but this space is ",(0,s.jsx)(n.strong,{children:"quickly emerging"})," with successes in Video, Audio, Proteins, Chemicals, and many more. I am particularly captivated by Text-Code multimodal spaces and the opportunities of this modality combination plugged into the features of Weaviate's vector database."]}),"\n",(0,s.jsx)(n.h2,{id:"conclusion",children:"Conclusion"}),"\n",(0,s.jsxs)(n.p,{children:["To recap, the HuggingFace Sentence Transformer checkpoints mostly differ in the ",(0,s.jsx)(n.strong,{children:"data"})," they were trained on. Picking the model that best aligns with your use case is a matter of identifying the most similar Domain and Task, while mostly welcoming additional scale in the dataset size. Most applications of Weaviate that involve Sentence Transformers are mostly concerned with ",(0,s.jsx)(n.strong,{children:"Modalities"})," of Text, Image, or Image-Text space, but the number of these categories seems likely to explode in the near future."]}),"\n","\n",(0,s.jsx)(r.Ay,{})]})}function g(e={}){const{wrapper:n}={...(0,i.R)(),...e.components};return n?(0,s.jsx)(n,{...e,children:(0,s.jsx)(h,{...e})}):h(e)}},92884(e,n,t){t.d(n,{A:()=>a});const a=t.p+"assets/images/hero-cea8d2d262e6e25a0cc66af5097da85d.png"},37887(e,n,t){t.d(n,{A:()=>a});const a=t.p+"assets/images/how-to-populate-model-card-min-d157c371ce4e2905feb41d69c2c4f837.png"},39549(e,n,t){t.d(n,{A:()=>a});const a=t.p+"assets/images/huggingface-sentence-transformers-7e1b6750daf16cca74476b02c2e96213.png"},39022(e,n,t){t.d(n,{A:()=>a});const a=t.p+"assets/images/BEIR-min-6d2d877f01c39d46fdf1b883875217d6.png"},92641(e,n,t){t.d(n,{A:()=>a});const a=t.p+"assets/images/KILT-min-correct-716fa68068f62771e81747c4771991b3.png"},96166(e,n,t){t.d(n,{A:()=>a});const a=t.p+"assets/images/camembert-model-card-min-94d8c014771a1e7765158ab52137624b.png"},98479(e,n,t){t.d(n,{A:()=>a});const a=t.p+"assets/images/hero-cea8d2d262e6e25a0cc66af5097da85d.png"},80231(e,n,t){t.d(n,{A:()=>a});const a=t.p+"assets/images/minilm-model-card-min-bb4a24d9b7c62bac5abe1c764dcc94ad.png"},572(e){e.exports=JSON.parse('{"permalink":"/blog/how-to-choose-a-sentence-transformer-from-hugging-face","editUrl":"https://github.com/weaviate/weaviate-io/tree/main/blog/2022-10-04-how-to-choose-a-sentence-transformer-from-hugging-face/index.mdx","source":"@site/blog/2022-10-04-how-to-choose-a-sentence-transformer-from-hugging-face/index.mdx","title":"How to choose a Sentence Transformer from Hugging Face","description":"Learn about the various Sentence Transformers from Hugging Face!","date":"2022-10-04T00:00:00.000Z","tags":[{"inline":true,"label":"integrations","permalink":"/blog/tags/integrations"}],"readingTime":12.1,"hasTruncateMarker":true,"authors":[{"name":"Connor Shorten","title":"Product Researcher","url":"https://github.com/CShorten","imageURL":"/img/people/icon/connor.jpg","key":"connor","page":null}],"frontMatter":{"title":"How to choose a Sentence Transformer from Hugging Face","slug":"how-to-choose-a-sentence-transformer-from-hugging-face","authors":["connor"],"date":"2022-10-04T00:00:00.000Z","tags":["integrations"],"image":"./img/hero.png","description":"Learn about the various Sentence Transformers from Hugging Face!"},"unlisted":false,"prevItem":{"title":"Vamana vs. HNSW - Exploring ANN algorithms Part 1","permalink":"/blog/ann-algorithms-vamana-vs-hnsw"},"nextItem":{"title":"Support for Hugging Face Inference API in Weaviate","permalink":"/blog/hugging-face-inference-api-in-weaviate"}}')}}]);

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.