robwhelan's picture
Upload fine-tuned BGE embeddings model for nuclear licensing search
58c1d9a verified
metadata
tags:
  - sentence-transformers
  - sentence-similarity
  - feature-extraction
  - generated_from_trainer
  - dataset_size:3157
  - loss:TripletLoss
  - dataset_size:2525
  - loss:MultipleNegativesRankingLoss
base_model: BAAI/bge-base-en-v1.5
widget:
  - source_sentence: >-
      What is the role of the Public Information Officer during a radiological
      emergency?
    sentences:
      - >-
        The Public Information Officer (PIO), assigned duties at the Emergency
        Operations Center (EOC), and the Parish Spokesperson will be responsible
        for implementation of this procedure.
      - >-
        Be prepared to report to the Parish EOC if requested by the Director of
        the Office of Homeland Security and Emergency Preparedness.
      - >-
        HRI may proceed with its planned mining-related activities in these
        areas to the extent authorized by its NRC Materials License SUA-1508.
  - source_sentence: >-
      The NRC also regulates the licensing and reporting obligations for
      materials that are byproducts in the medical field.
    sentences:
      - Parts 30, 31, 32 and 150
      - >-
        Exemptions From Licensing, General Licenses, and Distribution of
        Byproduct Material: Licensing and Reporting Requirements
      - >-
        Containment vessel (CNV) pressure/temperature response analysis method,
        similar to method used in DCA technical report, responds to LOCA pipe
        break, secondary line breaks, IORV events, or inadvertent ECCS
        actuation.
  - source_sentence: What is the aging management program for concrete in nuclear facilities?
    sentences:
      - >-
        Further evaluation is required to determine if a plant-specific aging
        management program is needed.
      - >-
        The DCPP Structures Monitoring AMP (B.2.3.33) is credited with managing
        cracking due to reaction with aggregates (such as ASR), for DCPP group
        1, 3, 4, 5, and 7 structures, including inaccessible areas.
      - >-
        The Survey Units listed in Figure 4 measure various acreage sizes,
        detailing the land area covered by each unit within the
        Non-Industrialized section of the site.
  - source_sentence: >-
      What is the purpose of an emergency core cooling system in nuclear
      reactors?
    sentences:
      - >-
        The Commission issued Staff Requirements Memorandum (SRM) SECY-10-0113
        directing the staff to consider alternative options for resolving
        GSI-191 (Reference 5).
      - >-
        preclude the formulation or implementation of reasonable and prudent
        alternatives to avoid jeopardizing the continued existence of endangered
        or threatened species or destroying or modifying critical habitat
        [Section 7(d)].
      - >-
        ECCS must be designed so that calculated cooling performance following
        postulated loss-of-coolant accidents conforms to the criteria set forth
        in paragraph (b) of this section.
  - source_sentence: corrosion related to nuclear components
    sentences:
      - >-
        This alternative is requested for the duration of the Brunswick Steam
        Electric Plant, Units 1 & 2, Third Ten-Year Containment Inservice
        Inspection Interval, which is currently scheduled to end no later than
        May 10, 2028.
      - >-
        *Note: Initiation of Reactor Enclosure isolation starts Reactor
        Enclosure Recirculation System (RERS) and SGTS. Ref: UFSAR 6.2.3.2.3*
      - >-
        In the proposed alternative by the Owner (Duke Energy), corrosion or
        erosion that has reduced the component wall thickness to less than 145%
        of the minimum design wall thickness will be considered a relevant
        condition that will require evaluation or corrective measures to the
        extent necessary to meet the acceptance standards of IWE-3500 prior to
        continued service.
pipeline_tag: sentence-similarity
library_name: sentence-transformers
metrics:
  - cosine_accuracy
model-index:
  - name: SentenceTransformer based on BAAI/bge-base-en-v1.5
    results:
      - task:
          type: triplet
          name: Triplet
        dataset:
          name: validation
          type: validation
        metrics:
          - type: cosine_accuracy
            value: 0.8797468543052673
            name: Cosine Accuracy
          - type: cosine_accuracy
            value: 0.9556962251663208
            name: Cosine Accuracy
          - type: cosine_accuracy
            value: 0.9588607549667358
            name: Cosine Accuracy

SentenceTransformer based on BAAI/bge-base-en-v1.5

This is a sentence-transformers model finetuned from BAAI/bge-base-en-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: BAAI/bge-base-en-v1.5
  • Maximum Sequence Length: 512 tokens
  • Output Dimensionality: 768 dimensions
  • Similarity Function: Cosine Similarity

Model Sources

Full Model Architecture

SentenceTransformer(
  (0): Transformer({'max_seq_length': 512, 'do_lower_case': True}) with Transformer model: BertModel 
  (1): Pooling({'word_embedding_dimension': 768, 'pooling_mode_cls_token': True, 'pooling_mode_mean_tokens': False, '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): Normalize()
)

Usage

Direct Usage (Sentence Transformers)

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("sentence_transformers_model_id")
# Run inference
sentences = [
    'corrosion related to nuclear components',
    'In the proposed alternative by the Owner (Duke Energy), corrosion or erosion that has reduced the component wall thickness to less than 145% of the minimum design wall thickness will be considered a relevant condition that will require evaluation or corrective measures to the extent necessary to meet the acceptance standards of IWE-3500 prior to continued service.',
    'This alternative is requested for the duration of the Brunswick Steam Electric Plant, Units 1 & 2, Third Ten-Year Containment Inservice Inspection Interval, which is currently scheduled to end no later than May 10, 2028.',
]
embeddings = model.encode(sentences)
print(embeddings.shape)
# [3, 768]

# Get the similarity scores for the embeddings
similarities = model.similarity(embeddings, embeddings)
print(similarities.shape)
# [3, 3]

Evaluation

Metrics

Triplet

Metric Value
cosine_accuracy 0.8797

Triplet

Metric Value
cosine_accuracy 0.9557

Triplet

Metric Value
cosine_accuracy 0.9589

Training Details

Training Dataset

Unnamed Dataset

  • Size: 2,525 training samples
  • Columns: sentence_0, sentence_1, and sentence_2
  • Approximate statistics based on the first 1000 samples:
    sentence_0 sentence_1 sentence_2
    type string string string
    details
    • min: 4 tokens
    • mean: 15.01 tokens
    • max: 44 tokens
    • min: 6 tokens
    • mean: 45.67 tokens
    • max: 512 tokens
    • min: 4 tokens
    • mean: 33.2 tokens
    • max: 228 tokens
  • Samples:
    sentence_0 sentence_1 sentence_2
    What is the significance of groundwater monitoring wells in nuclear safety assessments? Locations of monitoring wells B-22 and B-36 that showed groundwater “mounding” supported by maps of the stormwater drainage system near the wells (Related to Need GW-5) To the extent that these components of the intake and discharge systems are accessible/viewable: - Submerged multi-port intake and intake tunnel, including depiction of location of intake - Traveling screens - Service water pumphouse - Emergency service water forebay - Cooling towers and cooling tower basin - Discharge tunnel and discharge outfall
    An analysis of the stresses experienced by reactor vessel studs is crucial for evaluating operational safety. Table 2. Calculation of Primary Stresses in Reactor Vessel Studs, Two Studs Out of Service provides detailed calculations of primary stresses for each stud in the reactor vessel. Regulatory filings often require extensive documentation to demonstrate compliance with safety protocols.
    An assessment was carried out to determine the potential for liquefaction at the EGC ESP Site. An evaluation of liquefaction potential was conducted at the EGC ESP Site. The static groundwater table within the Illinois till is approximately 30 ft below the ground surface, but that there are shallower perched groundwater layers closer to the surface.
  • Loss: MultipleNegativesRankingLoss with these parameters:
    {
        "scale": 20.0,
        "similarity_fct": "cos_sim"
    }
    

Training Hyperparameters

Non-Default Hyperparameters

  • eval_strategy: steps
  • per_device_train_batch_size: 24
  • per_device_eval_batch_size: 24
  • num_train_epochs: 5
  • multi_dataset_batch_sampler: round_robin

All Hyperparameters

Click to expand
  • overwrite_output_dir: False
  • do_predict: False
  • eval_strategy: steps
  • prediction_loss_only: True
  • per_device_train_batch_size: 24
  • per_device_eval_batch_size: 24
  • per_gpu_train_batch_size: None
  • per_gpu_eval_batch_size: None
  • gradient_accumulation_steps: 1
  • eval_accumulation_steps: None
  • torch_empty_cache_steps: None
  • learning_rate: 5e-05
  • weight_decay: 0.0
  • adam_beta1: 0.9
  • adam_beta2: 0.999
  • adam_epsilon: 1e-08
  • max_grad_norm: 1
  • num_train_epochs: 5
  • max_steps: -1
  • lr_scheduler_type: linear
  • lr_scheduler_kwargs: {}
  • warmup_ratio: 0.0
  • warmup_steps: 0
  • log_level: passive
  • log_level_replica: warning
  • log_on_each_node: True
  • logging_nan_inf_filter: True
  • save_safetensors: True
  • save_on_each_node: False
  • save_only_model: False
  • restore_callback_states_from_checkpoint: False
  • no_cuda: False
  • use_cpu: False
  • use_mps_device: False
  • seed: 42
  • data_seed: None
  • jit_mode_eval: False
  • use_ipex: False
  • bf16: False
  • fp16: False
  • fp16_opt_level: O1
  • half_precision_backend: auto
  • bf16_full_eval: False
  • fp16_full_eval: False
  • tf32: None
  • local_rank: 0
  • ddp_backend: None
  • tpu_num_cores: None
  • tpu_metrics_debug: False
  • debug: []
  • dataloader_drop_last: False
  • dataloader_num_workers: 0
  • dataloader_prefetch_factor: None
  • past_index: -1
  • disable_tqdm: False
  • remove_unused_columns: True
  • label_names: None
  • load_best_model_at_end: False
  • ignore_data_skip: False
  • fsdp: []
  • fsdp_min_num_params: 0
  • fsdp_config: {'min_num_params': 0, 'xla': False, 'xla_fsdp_v2': False, 'xla_fsdp_grad_ckpt': False}
  • tp_size: 0
  • fsdp_transformer_layer_cls_to_wrap: None
  • accelerator_config: {'split_batches': False, 'dispatch_batches': None, 'even_batches': True, 'use_seedable_sampler': True, 'non_blocking': False, 'gradient_accumulation_kwargs': None}
  • deepspeed: None
  • label_smoothing_factor: 0.0
  • optim: adamw_torch
  • optim_args: None
  • adafactor: False
  • group_by_length: False
  • length_column_name: length
  • ddp_find_unused_parameters: None
  • ddp_bucket_cap_mb: None
  • ddp_broadcast_buffers: False
  • dataloader_pin_memory: True
  • dataloader_persistent_workers: False
  • skip_memory_metrics: True
  • use_legacy_prediction_loop: False
  • push_to_hub: False
  • resume_from_checkpoint: None
  • hub_model_id: None
  • hub_strategy: every_save
  • hub_private_repo: None
  • hub_always_push: False
  • gradient_checkpointing: False
  • gradient_checkpointing_kwargs: None
  • include_inputs_for_metrics: False
  • include_for_metrics: []
  • eval_do_concat_batches: True
  • fp16_backend: auto
  • push_to_hub_model_id: None
  • push_to_hub_organization: None
  • mp_parameters:
  • auto_find_batch_size: False
  • full_determinism: False
  • torchdynamo: None
  • ray_scope: last
  • ddp_timeout: 1800
  • torch_compile: False
  • torch_compile_backend: None
  • torch_compile_mode: None
  • include_tokens_per_second: False
  • include_num_input_tokens_seen: False
  • neftune_noise_alpha: None
  • optim_target_modules: None
  • batch_eval_metrics: False
  • eval_on_start: False
  • use_liger_kernel: False
  • eval_use_gather_object: False
  • average_tokens_across_devices: False
  • prompts: None
  • batch_sampler: batch_sampler
  • multi_dataset_batch_sampler: round_robin

Training Logs

Epoch Step Training Loss validation_cosine_accuracy
2.5253 500 4.2171 -
0.6329 100 - 0.9177
1.0 158 - 0.8592
1.2658 200 - 0.8972
1.8987 300 - 0.875
2.0 316 - 0.8940
2.5316 400 - 0.8734
3.0 474 - 0.8956
3.1646 500 3.985 0.8813
3.7975 600 - 0.8703
4.0 632 - 0.9003
4.4304 700 - 0.8797
5.0 790 - 0.8797
0.6329 100 - 0.8228
1.0 158 - 0.9383
1.2658 200 - 0.9541
1.8987 300 - 0.9573
2.0 316 - 0.9589
2.5316 400 - 0.9541
3.0 474 - 0.9525
3.1646 500 2.0222 0.9525
3.7975 600 - 0.9541
4.0 632 - 0.9557
4.4304 700 - 0.9573
5.0 790 - 0.9557
0.9434 100 - 0.9509
1.0 106 - 0.9525
1.8868 200 - 0.9541
2.0 212 - 0.9573
2.8302 300 - 0.9557
3.0 318 - 0.9589

Framework Versions

  • Python: 3.10.14
  • Sentence Transformers: 4.0.2
  • Transformers: 4.51.3
  • PyTorch: 2.2.2
  • Accelerate: 1.6.0
  • Datasets: 3.5.0
  • Tokenizers: 0.21.1

Citation

BibTeX

Sentence Transformers

@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",
}

MultipleNegativesRankingLoss

@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}
}