Downloads · 30 days
14
11% of all-time downloads
deebak14/embedding_gemma_ft_v1
embedding_gemma_ft_v1 is a sentence similarity model from deebak14. Use it when you need a score for how close two texts are. It is set up for sentence-transformers.
This is a sentence-transformers model finetuned from google/embeddinggemma-300m on the embeddingtupledatav1 dataset. It maps sentences & paragraphs to a 768-dimensional dense vector space and can be used for semantic…
Downloads · 30 days
14
11% of all-time downloads
All-time downloads
125
Public
Parameters
303M
1.3 GB on disk
Likes
0
Public
Click a slice to open those files.
.safetensors1.2 GB · 97%
From the Hugging Face model README
This is a sentence-transformers model finetuned from google/embeddinggemma-300m on the embedding_tuple_data_v1 dataset. 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.
SentenceTransformer(
(0): Transformer({'max_seq_length': 2048, 'do_lower_case': False, 'architecture': 'Gemma3TextModel'})
(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})
(2): Dense({'in_features': 768, 'out_features': 3072, 'bias': False, 'activation_function': 'torch.nn.modules.linear.Identity'})
(3): Dense({'in_features': 3072, 'out_features': 768, 'bias': False, 'activation_function': 'torch.nn.modules.linear.Identity'})
(4): Normalize()
)
First install the Sentence Transformers library:
pip install -U sentence-transformers
Then you can load this model and run inference.
from sentence_transformers import SentenceTransformer
# Download from the 🤗 Hub
model = SentenceTransformer("deebak14/embedding_gemma_ft_v1")
# Run inference
queries = [
"I need to find where a flat surface meets a sphere. How can I do that in Rhino?",
]
documents = [
'You can use the following methods to complete the task.\nmethod: PlaneSphereIntersection\ndescription: Calculates the intersection of a plane and a sphere.\nsyntax: PlaneSphereIntersection(plane, sphere_plane, sphere_radius)\nparameters: plane (plane): The plane to intersect; sphere_plane (plane): Equatorial plane of the sphere (origin is center); sphere_radius (float): Radius of the sphere.\nreturns: list: [type, point/plane, radius] where type=0 for point, 1 for circle. None on error.\n\nFollowing is the code that uses this method to complete the task as per user query.\n\n```python\nimport rhinoscriptsyntax as rs\n\n# Define a flat surface as a plane\nplane = rs.WorldXYPlane()\n# Define the radius of the sphere\nradius = 10\n# Calculate the intersection between the plane and the sphere\nresults = rs.PlaneSphereIntersection(plane, plane, radius)\n\n# Check if there are results and handle them accordingly\nif results:\n if results[0] == 0:\n # If the intersection is a point, add it to the document\n rs.AddPoint(results[1])\n else:\n # If the intersection is a circle, add it to the document\n rs.AddCircle(results[1], results[2])\n```',
'You cannot use the following methods LineSphereIntersection, IsSphere, AddSphere, LinePlaneIntersection, Angle, CircleCenterPoint, CurveCurveIntersection, CurveSurfaceIntersection, AddCircle3Pt',
'plane',
]
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.6658, 0.4819, -0.1617]])
<!--
### 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.*
-->
base-eval| Metric | Value |
|---|---|
| cosine_accuracy | 1.0 |
| anchor | positive | |
|---|---|---|
| type | string | string |
| details | <ul><li>min: 9 tokens</li><li>mean: 15.98 tokens</li><li>max: 50 tokens</li></ul> | <ul><li>min: 42 tokens</li><li>mean: 177.53 tokens</li><li>max: 810 tokens</li></ul> |
| anchor | positive |
|---|---|
| <code>Provide an example of using AddRectangle.</code> | <code>import rhinoscriptsyntax as rs<br>plane = rs.WorldXYPlane()<br>plane = rs.RotatePlane(plane, 45.0, [0,0,1])<br>rs.AddRectangle(plane, 5.0, 15.0) <br><br>Metadata: <br>Name: AddRectangle<br>Category: curve<br>Function Signature: rs.AddRectangle(plane: plane, width: number, height: number) -> guid<br>Description: Add a rectangular curve to the document</code> |
| <code>How do I search for the total number of linetypes in my document?</code> | <code><br><br>You can use the following method:<br>Name: LinetypeCount<br>Category: linetype<br>Function Signature: rs.LinetypeCount() -> int<br>Description: Description: Returns the number of linetypes in the document.<br>Parameters:<br> None<br>Returns:<br> int: The number of linetypes in the document.</code> |
| <code>How do I maintain the shape of a curve while fitting it?</code> | <code><br><br>You can use the following method:<br>Name: FitCurve<br>Category: curve<br>Function Signature: rs.FitCurve(curve_id: guid, degree: int = 3, distance_tolerance: float = -1, angle_tolerance: float = -1) -> guid<br>Description: Description: Reduces the number of control points of a curve while maintaining its general shape. This function is useful for replacing curves with many control points. For more information, see the Rhino help for the FitCrv command.<br>Parameters:<br> curve_id (guid): Identifier of the curve object to be fitted.<br> eg: '3D4F5A6B-7C8D-9E0F-1A2B-3C4D5E6F7A8B'<br> degree (int, optional): The degree of the curve, which must be greater than 1. The default is 3.<br> eg: 3<br> distance_tolerance (float, optional): The fitting tolerance. If not specified or <= 0.0, the document absolute tolerance is used.<br> eg: 0.01<br> angle_tolerance (float, optional): The kink smoothing tolerance in degrees. If 0.0, all kinks are smoothed. If > 0.0, kinks smaller than this value are smoothed. If ...</code> |
{
"scale": 20.0,
"similarity_fct": "cos_sim",
"gather_across_devices": false
}
| anchor | positive | negative | |
|---|---|---|---|
| type | string | string | string |
| details | <ul><li>min: 15 tokens</li><li>mean: 23.13 tokens</li><li>max: 38 tokens</li></ul> | <ul><li>min: 111 tokens</li><li>mean: 252.44 tokens</li><li>max: 1015 tokens</li></ul> | <ul><li>min: 32 tokens</li><li>mean: 42.48 tokens</li><li>max: 55 tokens</li></ul> |
| anchor | positive | negative |
|---|---|---|
| <code>I need to flatten a curved surface for laser cutting. How can I do that?</code> | <code>You can use the following methods to complete the task.<br>method: UnrollSurface<br>description: Flattens a developable surface or polysurface<br>syntax: UnrollSurface(surface_id, explode=False, following_geometry=None, absolute_tolerance=None, relative_tolerance=None)<br>parameters: <br>surface_id (guid): the surface's identifier | |
| <br>explode (bool, optional): If True, the resulting surfaces ar not joined | ||
| <br>following_geometry ({guid, ...]): List of curves, dots, and points which | ||
| <br> should be unrolled with the surface<br><br>returns: <br>list(guid, ...): of unrolled surface ids | ||
| <br>tuple((guid, ...),(guid, ...)): if following_geometry is not None, a tuple | ||
| <br> [1] is the list of unrolled surface ids | ||
| <br> [2] is the list of unrolled following geometry<br><br><br>Following is the code that uses this method to complete the task as per user query.<br><br>```python<br>import rhinoscriptsyntax as rs<br><br># Flatten a curved surface for laser cutting<br>surface = rs.GetObject("Select curved surface to flatten", rs.filter.surface)<br>if surface:<br> # Unrol...</code> | <code>You cannot use the following methods ConvertCurveToPolyline, MeshOutline, PullCurveToMesh, ExplodeText, MeshToNurb, IsCurvePlanar, Angle, AddFilletCurve, MeshVolume</code> | |
| <code>Can you show me how to rotate a plane by 30 degrees around its normal axis?</code> | <code>You can use the following methods to complete the task.<br>method: PlaneTransform<br>description: Transforms a plane.<br>syntax: PlaneTransform(plane, xform)<br>parameters: plane (plane): Plane to transform; xform (transform): Transformation to apply.<br>returns: plane: Resulting plane if successful, otherwise None.<br><br>Following is the code that uses this method to complete the task as per user query.<br><br>python<br>import rhinoscriptsyntax as rs<br><br># Get the current construction plane<br>plane = rs.ViewCPlane()<br><br># Create a rotation transformation of 30 degrees around the normal axis (Z-axis)<br>xform = rs.XformRotation(30.0, plane.ZAxis, plane.Origin)<br><br># Apply the transformation to the plane<br>plane = rs.PlaneTransform(plane, xform)<br><br># Set the new construction plane<br>rs.ViewCPlane(None, plane)<br></code> | <code>You cannot use the following methods RotatePlane, XformRotation1, PlaneFromNormal, VectorRotate, Angle, PlaneFromFrame, LinePlane, MovePlane, CreatePlane</code> |
| <code>I want to change the height of a text dot I just created. How can I do that?</code> | <code>You can use the following methods to complete the task.<br>method: TextDotHeight<br>description: Returns or modified the font height of a text dot<br>syntax: TextDotHeight(object_id, height=None)<br>parameters: <br>object_id (guid): identifier of a text dot object | |
| <br>height (number, optional) new font height<br><br>returns: <br>number: If height is not specified, the current text dot height | ||
| <br>number: If height is specified, the previous text dot height | ||
<br>None: on error<br><br><br>Following is the code that uses this method to complete the task as per user query.<br><br>python<br>import rhinoscriptsyntax as rs<br># Change the height of a text dot<br>obj = rs.GetObject("Select text dot")<br>if rs.IsTextDot(obj):<br> previous_height = rs.TextDotHeight(obj, 15.0) # Set new height to 15.0<br> print(f"Previous height was: {previous_height}")<br></code> | <code>You cannot use the following methods TextDotPoint, TextDotFont, TextDotText, TextObjectHeight, IsTextDot, AddTextDot, TextObjectFont, PointCoordinates, ExplodeText</code> |
{
"scale": 20.0,
"similarity_fct": "cos_sim",
"gather_across_devices": false
}
eval_strategy: stepsper_device_train_batch_size: 16per_device_eval_batch_size: 16learning_rate: 2e-05warmup_ratio: 0.1bf16: Trueprompts: task: sentence similarity | query:batch_sampler: no_duplicatesoverwrite_output_dir: Falsedo_predict: Falseeval_strategy: stepsprediction_loss_only: Trueper_device_train_batch_size: 16per_device_eval_batch_size: 16per_gpu_train_batch_size: Noneper_gpu_eval_batch_size: Nonegradient_accumulation_steps: 1eval_accumulation_steps: Nonetorch_empty_cache_steps: Nonelearning_rate: 2e-05weight_decay: 0.0adam_beta1: 0.9adam_beta2: 0.999adam_epsilon: 1e-08max_grad_norm: 1.0num_train_epochs: 3max_steps: -1lr_scheduler_type: linearlr_scheduler_kwargs: {}warmup_ratio: 0.1warmup_steps: 0log_level: passivelog_level_replica: warninglog_on_each_node: Truelogging_nan_inf_filter: Truesave_safetensors: Truesave_on_each_node: Falsesave_only_model: Falserestore_callback_states_from_checkpoint: Falseno_cuda: Falseuse_cpu: Falseuse_mps_device: Falseseed: 42data_seed: Nonejit_mode_eval: Falseuse_ipex: Falsebf16: Truefp16: Falsefp16_opt_level: O1half_precision_backend: autobf16_full_eval: Falsefp16_full_eval: Falsetf32: Nonelocal_rank: 0ddp_backend: Nonetpu_num_cores: Nonetpu_metrics_debug: Falsedebug: []dataloader_drop_last: Falsedataloader_num_workers: 0dataloader_prefetch_factor: Nonepast_index: -1disable_tqdm: Falseremove_unused_columns: Truelabel_names: Noneload_best_model_at_end: Falseignore_data_skip: Falsefsdp: []fsdp_min_num_params: 0fsdp_config: {'min_num_params': 0, 'xla': False, 'xla_fsdp_v2': False, 'xla_fsdp_grad_ckpt': False}fsdp_transformer_layer_cls_to_wrap: Noneaccelerator_config: {'split_batches': False, 'dispatch_batches': None, 'even_batches': True, 'use_seedable_sampler': True, 'non_blocking': False, 'gradient_accumulation_kwargs': None}parallelism_config: Nonedeepspeed: Nonelabel_smoothing_factor: 0.0optim: adamw_torch_fusedoptim_args: Noneadafactor: Falsegroup_by_length: Falselength_column_name: lengthddp_find_unused_parameters: Noneddp_bucket_cap_mb: Noneddp_broadcast_buffers: Falsedataloader_pin_memory: Truedataloader_persistent_workers: Falseskip_memory_metrics: Trueuse_legacy_prediction_loop: Falsepush_to_hub: Falseresume_from_checkpoint: Nonehub_model_id: Nonehub_strategy: every_savehub_private_repo: Nonehub_always_push: Falsehub_revision: Nonegradient_checkpointing: Falsegradient_checkpointing_kwargs: Noneinclude_inputs_for_metrics: Falseinclude_for_metrics: []eval_do_concat_batches: Truefp16_backend: autopush_to_hub_model_id: Nonepush_to_hub_organization: Nonemp_parameters:auto_find_batch_size: Falsefull_determinism: Falsetorchdynamo: Noneray_scope: lastddp_timeout: 1800torch_compile: Falsetorch_compile_backend: Nonetorch_compile_mode: Noneinclude_tokens_per_second: Falseinclude_num_input_tokens_seen: Falseneftune_noise_alpha: Noneoptim_target_modules: Nonebatch_eval_metrics: Falseeval_on_start: Falseuse_liger_kernel: Falseliger_kernel_config: Noneeval_use_gather_object: Falseaverage_tokens_across_devices: Falseprompts: task: sentence similarity | query:batch_sampler: no_duplicatesmulti_dataset_batch_sampler: proportionalrouter_mapping: {}learning_rate_mapping: {}| Epoch | Step | Training Loss | Validation Loss | base-eval_cosine_accuracy |
|---|---|---|---|---|
| -1 | -1 | - | - | 0.0147 |
| 0.1028 | 100 | 0.1601 | - | - |
| 0.2055 | 200 | 0.0474 | 0.2296 | 0.8971 |
| 0.3083 | 300 | 0.0749 | - | - |
| 0.4111 | 400 | 0.1037 | 0.1457 | 0.9265 |
| 0.5139 | 500 | 0.0564 | - | - |
| 0.6166 | 600 | 0.0706 | 0.3362 | 0.9475 |
| 0.7194 | 700 | 0.0549 | - | - |
| 0.8222 | 800 | 0.0427 | 0.2154 | 0.9538 |
| 0.9250 | 900 | 0.0599 | - | - |
| 1.0277 | 1000 | 0.0656 | 0.2439 | 0.9706 |
| 1.1305 | 1100 | 0.0409 | - | - |
| 1.2333 | 1200 | 0.0283 | 0.2422 | 0.9727 |
| 1.3361 | 1300 | 0.0336 | - | - |
| 1.4388 | 1400 | 0.0338 | 0.2397 | 0.9664 |
| 1.5416 | 1500 | 0.0384 | - | - |
| 1.6444 | 1600 | 0.0271 | 0.1048 | 0.9832 |
| 1.7472 | 1700 | 0.0305 | - | - |
| 1.8499 | 1800 | 0.024 | 0.1172 | 0.9916 |
| 1.9527 | 1900 | 0.014 | - | - |
| 2.0555 | 2000 | 0.018 | 0.0898 | 0.9958 |
| 2.1583 | 2100 | 0.0091 | - | - |
| 2.2610 | 2200 | 0.0154 | 0.0721 | 0.9916 |
| 2.3638 | 2300 | 0.0123 | - | - |
| 2.4666 | 2400 | 0.0119 | 0.0876 | 0.9937 |
| 2.5694 | 2500 | 0.0173 | - | - |
| 2.6721 | 2600 | 0.0091 | 0.0482 | 1.0 |
| 2.7749 | 2700 | 0.0211 | - | - |
| 2.8777 | 2800 | 0.0146 | 0.0550 | 1.0 |
| 2.9805 | 2900 | 0.0101 | - | - |
| -1 | -1 | - | - | 1.0 |
@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",
}
@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.*
-->