| --- |
| tags: |
| - sentence-transformers |
| - sentence-similarity |
| - feature-extraction |
| - dense |
| - generated_from_trainer |
| - dataset_size:100 |
| - loss:MatryoshkaLoss |
| - loss:MultipleNegativesRankingLoss |
| base_model: nomic-ai/nomic-embed-text-v1.5 |
| widget: |
| - source_sentence: "func SetFactory(ctx context.Context, f Factory) context.Context\ |
| \ {\n\treturn" |
| sentences: |
| - rm -r path |
| - 'Transforms an array into a DateTime. |
| |
| |
| @param array $value Array value. |
| |
| |
| @return DateTime DateTime value.' |
| - ' context.WithValue(ctx, &clockKey, f) |
| |
| }' |
| - source_sentence: "public function hyvesTipUrl($title, $body, $categoryId = 12, $rating\ |
| \ = 5) {\n\n $url = 'http://www.hyves-share.nl/button/tip/?tipcategoryid=%s&rating=%s&title=%s&body=%s';\n" |
| sentences: |
| - " by a TLS client to\n\t// authenticate itself to the TLS server.\n\ttemplate.ExtKeyUsage\ |
| \ = append(template.ExtKeyUsage, x509.ExtKeyUsageClientAuth)\n\n\tt := time.Now().UnixNano()\n\ |
| \ttemplate.SerialNumber = pki.BuildPKISerial(t)\n\n\tcertificate, err := pki.SignNewCertificate(privateKey,\ |
| \ template, caCert.Certificate, caKey)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"\ |
| error signing certificate for master kubelet: %v\", err)\n\t}\n\n\tcaBytes, err\ |
| \ := caCert.AsBytes()\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"failed\ |
| \ to get certificate authority data: %s\", err)\n\t}\n\tcertBytes, err := certificate.AsBytes()\n\ |
| \tif err != nil {\n\t\treturn nil, fmt.Errorf(\"failed to get certificate data:\ |
| \ %s\", err)\n\t}\n\tkeyBytes, err := privateKey.AsBytes()\n\tif err != nil {\n\ |
| \t\treturn nil, fmt.Errorf(\"failed to get private key data: %s\", err)\n\t}\n\ |
| \n\tcontent, err := b.BuildKubeConfig(\"kubelet\", caBytes, certBytes, keyBytes)\n\ |
| \tif err != nil {\n\t\treturn nil, err\n\t}\n\n\treturn &nodetasks.File{\n\t\t\ |
| Path: b.KubeletKubeConfig(),\n\t\tContents: fi.NewStringResource(content),\n\ |
| \t\tType: nodetasks.FileType_File,\n\t\tMode: s(\"600\"),\n\t}, nil\n}" |
| - 'Executes the current query and returns the response |
| |
| |
| @throws \Cassandra\Response\Exception |
| |
| @return \Cassandra\Response' |
| - " $title = $title;\n $body = $body;\n return sprintf($url,\ |
| \ $categoryId, $rating, $title, $body);\n }" |
| - source_sentence: "public function get($key, $default = null, $dot_syntax = true)\n\ |
| \ {\n if ($dot_syntax === true) {\n $paths = explode('.',\ |
| \ $key);\n $node =& $this->_data;\n \n foreach\ |
| \ ($paths as $path) {\n if (!is_array($node) || !isset($node[$path]))\ |
| \ {\n // error occurred\n return $default;\n\ |
| \ }\n $node =& $node[$path];\n }\n \ |
| \ \n return $node;\n \n } else {\n \ |
| \ \n return isset($this->_data[$key]) ? $this->_data[$key] :\ |
| \ $default;\n \n }\n }" |
| sentences: |
| - // PrintShortName turns a pkix.Name into a string of RDN tuples. |
| - "Here is the code to create an array, add elements, sort in ascending order, and\ |
| \ print the elements in reverse order in Java:\n\n```java\nimport java.util.Arrays;\n\ |
| \npublic class Main {\n public static void main(String[] args) {\n //\ |
| \ Create an array\n int[] array = {5, 7, 3};\n\n // Sort the array\ |
| \ in ascending order\n Arrays.sort(array);\n\n // Print the elements\ |
| \ in reverse order\n for (int i = array.length - 1; i >= 0; i--) {\n \ |
| \ System.out.println(array[i]);\n }\n }\n}\n```\n\nOutput:\n\ |
| ```\n7\n5\n3\n```\n\nIn the code above, we import the `Arrays` class from the\ |
| \ `java.util` package to use the `sort()` method for sorting the array. We create\ |
| \ an integer array `array` with the given elements. The `Arrays.sort(array)` method\ |
| \ sorts the array in ascending order. Finally, we loop through the array in reverse\ |
| \ order starting from the last index (`array.length - 1`) and print each element\ |
| \ using `System.out.println()`." |
| - 'Returns a single item from the collection data. |
| |
| |
| @param string $key |
| |
| @return mixed' |
| - source_sentence: "def iter(self, query, *parameters, **kwargs):\n \"\"\"\ |
| Returns a generator for records from the query.\"\"\"\n cursor = self._cursor()\n\ |
| \ try:\n self._execute(cursor, query, parameters or None, kwargs)\n\ |
| \ if cursor.description:\n column_names = [column.name\ |
| \ for column in cursor.description]\n while True:\n \ |
| \ record = cursor.fetchone()\n if not record:\n \ |
| \ break\n yield Row(zip(column_names, record))\n\ |
| \ raise StopIteration\n\n except:\n cursor.close()\n\ |
| \ raise" |
| sentences: |
| - "def exit(exit_code=0):\n r\"\"\"A function to support exiting from exit hooks.\n\ |
| \n Could also be used to exit from the calling scripts in a thread safe manner.\n\ |
| \ \"\"\"\n core.processExitHooks()\n\n if state.isExitHooked and not hasattr(sys,\ |
| \ 'exitfunc'): # The function is called from the exit hook\n sys.stderr.flush()\n\ |
| \ sys.stdout.flush()\n os._exit(exit_code) #pylint: disable=W0212\n\n sys.exit(exit_code)" |
| - Returns a generator for records from the query. |
| - " \"\"\"\n\n url = self.file['url']\n args = ['{0}={1}'.format(k,\ |
| \ v) for k, v in kwargs.items()]\n\n if args:\n url += '?{0}'.format('&'.join(args))\n\ |
| \n return url" |
| - source_sentence: What is the total CO2 emission from all aquaculture farms in the |
| year 2021? |
| sentences: |
| - " && value.size == value.uniq.size\n else\n result\n end\n \ |
| \ end" |
| - "\n\treturn c.postJSON(\"joberror\", args)\n}" |
| - SELECT SUM(co2_emission) FROM co2_emission WHERE year = 2021; |
| pipeline_tag: sentence-similarity |
| library_name: sentence-transformers |
| --- |
| |
| # SentenceTransformer based on nomic-ai/nomic-embed-text-v1.5 |
|
|
| This is a [sentence-transformers](https://www.SBERT.net) model finetuned from [nomic-ai/nomic-embed-text-v1.5](https://huggingface.co/nomic-ai/nomic-embed-text-v1.5). It maps sentences & paragraphs to a 768-dimensional dense vector space and can be used for semantic textual similarity, semantic search, paraphrase mining, text classification, clustering, and more. |
|
|
| ## Model Details |
|
|
| ### Model Description |
| - **Model Type:** Sentence Transformer |
| - **Base model:** [nomic-ai/nomic-embed-text-v1.5](https://huggingface.co/nomic-ai/nomic-embed-text-v1.5) <!-- at revision e5cf08aadaa33385f5990def41f7a23405aec398 --> |
| - **Maximum Sequence Length:** 8192 tokens |
| - **Output Dimensionality:** 768 dimensions |
| - **Similarity Function:** Cosine Similarity |
| <!-- - **Training Dataset:** Unknown --> |
| <!-- - **Language:** Unknown --> |
| <!-- - **License:** Unknown --> |
|
|
| ### Model Sources |
|
|
| - **Documentation:** [Sentence Transformers Documentation](https://sbert.net) |
| - **Repository:** [Sentence Transformers on GitHub](https://github.com/UKPLab/sentence-transformers) |
| - **Hugging Face:** [Sentence Transformers on Hugging Face](https://huggingface.co/models?library=sentence-transformers) |
|
|
| ### Full Model Architecture |
|
|
| ``` |
| SentenceTransformer( |
| (0): Transformer({'max_seq_length': 8192, 'do_lower_case': False, 'architecture': 'NomicBertModel'}) |
| (1): Pooling({'word_embedding_dimension': 768, 'pooling_mode_cls_token': False, 'pooling_mode_mean_tokens': True, 'pooling_mode_max_tokens': False, 'pooling_mode_mean_sqrt_len_tokens': False, 'pooling_mode_weightedmean_tokens': False, 'pooling_mode_lasttoken': False, 'include_prompt': True}) |
| ) |
| ``` |
|
|
| ## Usage |
|
|
| ### Direct Usage (Sentence Transformers) |
|
|
| First install the Sentence Transformers library: |
|
|
| ```bash |
| pip install -U sentence-transformers |
| ``` |
|
|
| Then you can load this model and run inference. |
| ```python |
| from sentence_transformers import SentenceTransformer |
| |
| # Download from the 🤗 Hub |
| model = SentenceTransformer("JahnaviKumar/nomic-embed-text1.5-ftcode") |
| # Run inference |
| queries = [ |
| "What is the total CO2 emission from all aquaculture farms in the year 2021?", |
| ] |
| documents = [ |
| 'SELECT SUM(co2_emission) FROM co2_emission WHERE year = 2021;', |
| '\n\treturn c.postJSON("joberror", args)\n}', |
| ' && value.size == value.uniq.size\n else\n result\n end\n end', |
| ] |
| query_embeddings = model.encode_query(queries) |
| document_embeddings = model.encode_document(documents) |
| print(query_embeddings.shape, document_embeddings.shape) |
| # [1, 768] [3, 768] |
| |
| # Get the similarity scores for the embeddings |
| similarities = model.similarity(query_embeddings, document_embeddings) |
| print(similarities) |
| # tensor([[0.7075, 0.3913, 0.3213]]) |
| ``` |
|
|
| <!-- |
| ### Direct Usage (Transformers) |
|
|
| <details><summary>Click to see the direct usage in Transformers</summary> |
|
|
| </details> |
| --> |
|
|
| <!-- |
| ### Downstream Usage (Sentence Transformers) |
|
|
| You can finetune this model on your own dataset. |
|
|
| <details><summary>Click to expand</summary> |
|
|
| </details> |
| --> |
|
|
| <!-- |
| ### Out-of-Scope Use |
|
|
| *List how the model may foreseeably be misused and address what users ought not to do with the model.* |
| --> |
|
|
| <!-- |
| ## Bias, Risks and Limitations |
|
|
| *What are the known or foreseeable issues stemming from this model? You could also flag here known failure cases or weaknesses of the model.* |
| --> |
|
|
| <!-- |
| ### Recommendations |
|
|
| *What are recommendations with respect to the foreseeable issues? For example, filtering explicit content.* |
| --> |
|
|
| ## Training Details |
|
|
| ### Training Dataset |
|
|
| #### Unnamed Dataset |
|
|
| * Size: 100 training samples |
| * Columns: <code>query</code> and <code>corpus</code> |
| * Approximate statistics based on the first 100 samples: |
| | | query | corpus | |
| |:--------|:-------------------------------------------------------------------------------------|:------------------------------------------------------------------------------------| |
| | type | string | string | |
| | details | <ul><li>min: 6 tokens</li><li>mean: 138.88 tokens</li><li>max: 1004 tokens</li></ul> | <ul><li>min: 6 tokens</li><li>mean: 95.76 tokens</li><li>max: 1151 tokens</li></ul> | |
| * Samples: |
| | query | corpus | |
| |:---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|:--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| |
| | <code>def add_data_file(data_files, target, source):<br> """Add an entry to data_files"""<br> for t, f in data_files:<br> if t == target:<br> break<br> else:<br> </code> | <code> data_files.append((target, []))<br> f = data_files[-1][1]<br> if source not in f:<br> f.append(source)</code> | |
| | <code>function verify (token, options) {<br> options = options \|\| {}<br> options.issuer = options.issuer \|\| this.issuer<br> options.client_id = options.client_id \|\| this.client_id<br> options.client_secret = options.client_secret \|\| this.client_secret<br> options.scope = options.scope \|\| this.scope<br> options.key = options.key \|\| this.jwks.sig<br><br> return new Promise(function (resolve, reject) {<br> AccessToken.verify(token, options, function (err, claims) {<br> if (err) { return reject(err) }<br> resolve(claims)<br> })<br> })<br>}</code> | <code>Verifies a given OIDC token<br>@method verify<br>@param token {String} JWT AccessToken for OpenID Connect (base64 encoded)<br>@param [options={}] {Object} Options hashmap<br>@param [options.issuer] {String} OIDC Provider/Issuer URL<br>@param [options.key] {Object} Issuer's public key for signatures (jwks.sig)<br>@param [options.client_id] {String}<br>@param [options.client_secret {String}<br>@param [options.scope] {String}<br>@throws {UnauthorizedError} HTTP 401 or 403 errors (invalid tokens etc)<br>@return {Promise}</code> | |
| | <code>def _combine_lines(self, lines):<br> """<br> Combines a list of JSON objects into one JSON object.<br> """<br> </code> | <code> lines = filter(None, map(lambda x: x.strip(), lines))<br> return '[' + ','.join(lines) + ']'</code> | |
| * Loss: [<code>MatryoshkaLoss</code>](https://sbert.net/docs/package_reference/sentence_transformer/losses.html#matryoshkaloss) with these parameters: |
| ```json |
| { |
| "loss": "MultipleNegativesRankingLoss", |
| "matryoshka_dims": [ |
| 768, |
| 512, |
| 256, |
| 128, |
| 64 |
| ], |
| "matryoshka_weights": [ |
| 1, |
| 1, |
| 1, |
| 1, |
| 1 |
| ], |
| "n_dims_per_step": -1 |
| } |
| ``` |
| |
| ### Framework Versions |
| - Python: 3.10.12 |
| - Sentence Transformers: 5.1.1 |
| - Transformers: 4.54.1 |
| - PyTorch: 2.9.0+cu128 |
| - Accelerate: 1.10.1 |
| - Datasets: 4.2.0 |
| - Tokenizers: 0.21.4 |
|
|
| ## Citation |
|
|
| ### BibTeX |
|
|
| #### Sentence Transformers |
| ```bibtex |
| @inproceedings{reimers-2019-sentence-bert, |
| title = "Sentence-BERT: Sentence Embeddings using Siamese BERT-Networks", |
| author = "Reimers, Nils and Gurevych, Iryna", |
| booktitle = "Proceedings of the 2019 Conference on Empirical Methods in Natural Language Processing", |
| month = "11", |
| year = "2019", |
| publisher = "Association for Computational Linguistics", |
| url = "https://arxiv.org/abs/1908.10084", |
| } |
| ``` |
|
|
| #### MatryoshkaLoss |
| ```bibtex |
| @misc{kusupati2024matryoshka, |
| title={Matryoshka Representation Learning}, |
| author={Aditya Kusupati and Gantavya Bhatt and Aniket Rege and Matthew Wallingford and Aditya Sinha and Vivek Ramanujan and William Howard-Snyder and Kaifeng Chen and Sham Kakade and Prateek Jain and Ali Farhadi}, |
| year={2024}, |
| eprint={2205.13147}, |
| archivePrefix={arXiv}, |
| primaryClass={cs.LG} |
| } |
| ``` |
|
|
| #### MultipleNegativesRankingLoss |
| ```bibtex |
| @misc{henderson2017efficient, |
| title={Efficient Natural Language Response Suggestion for Smart Reply}, |
| author={Matthew Henderson and Rami Al-Rfou and Brian Strope and Yun-hsuan Sung and Laszlo Lukacs and Ruiqi Guo and Sanjiv Kumar and Balint Miklos and Ray Kurzweil}, |
| year={2017}, |
| eprint={1705.00652}, |
| archivePrefix={arXiv}, |
| primaryClass={cs.CL} |
| } |
| ``` |
|
|
| <!-- |
| ## Glossary |
|
|
| *Clearly define terms in order to be accessible across audiences.* |
| --> |
|
|
| <!-- |
| ## Model Card Authors |
|
|
| *Lists the people who create the model card, providing recognition and accountability for the detailed work that goes into its construction.* |
| --> |
|
|
| <!-- |
| ## Model Card Contact |
|
|
| *Provides a way for people who have updates to the Model Card, suggestions, or questions, to contact the Model Card authors.* |
| --> |