chainuser1 commited on
Commit
d69f154
·
verified ·
1 Parent(s): ba1aa2a

Upload 16 files

Browse files

updates the README and adds directly loadable files

README.md CHANGED
@@ -1,7 +1,7 @@
1
  ---
2
  license: mit
3
  base_model: BAAI/bge-m3
4
- library_name: pytorch
5
  language:
6
  - en
7
  - tl
@@ -42,7 +42,7 @@ The selected release is **`question-hidden4096`**. It supports experimentation w
42
  | Encoding length used in this project | 512 tokens, including special tokens |
43
  | Training/evaluation track | `question` |
44
  | Question languages | English, Tagalog, Cebuano, Hebrew, Greek, Spanish, French, German |
45
- | Head exports | FP32, FP16, and weight-only INT8 NumPy archives |
46
  | Head license | MIT |
47
 
48
  The word **gene** refers to a named feature in the project's Scripture Genome schema. It has no biological meaning. These values are not calibrated probabilities, confidence scores, or measures of doctrinal truth.
@@ -86,7 +86,78 @@ The labels and answer mappings are project-authored annotations, with AI-assiste
86
 
87
  ## Files and loading
88
 
89
- The release artifacts use these filenames. Full and optimized exports may be distributed in separate folders or ZIP files; extract them before loading.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
90
 
91
  | File | Purpose |
92
  | --- | --- |
@@ -100,9 +171,9 @@ The release artifacts use these filenames. Full and optimized exports may be dis
100
  | `manifest.json` | Bundle inventory and checksums |
101
  | `best.pt` | Optional full training checkpoint, included in the full export |
102
 
103
- `best.pt` is not required for inference. The NPZ files are custom exports, not Safetensors, ONNX, or a directly loadable Sentence Transformers model. Calling `AutoModel.from_pretrained()` on the head folder will not construct this head.
104
 
105
- ### Minimal inference example
106
 
107
  Install `torch`, `numpy`, and `transformers` in a suitable Python environment. Download/extract a head export and its `gene_ids.txt`. Set `HEAD_DIR` below to that folder. The example downloads the pinned BGE-M3 base separately; an internet connection is needed on its first run.
108
 
 
1
  ---
2
  license: mit
3
  base_model: BAAI/bge-m3
4
+ library_name: transformers
5
  language:
6
  - en
7
  - tl
 
42
  | Encoding length used in this project | 512 tokens, including special tokens |
43
  | Training/evaluation track | `question` |
44
  | Question languages | English, Tagalog, Cebuano, Hebrew, Greek, Spanish, French, German |
45
+ | Head exports | FP32/FP16 Safetensors; weight-only INT8 Safetensors with an explicit loader; original NPZ ZIPs optional |
46
  | Head license | MIT |
47
 
48
  The word **gene** refers to a named feature in the project's Scripture Genome schema. It has no biological meaning. These values are not calibrated probabilities, confidence scores, or measures of doctrinal truth.
 
86
 
87
  ## Files and loading
88
 
89
+ ### Directly loadable Hugging Face release
90
+
91
+ The unpacked release provides the following files at repository root. The original ZIP downloads can remain as optional archives; they are not needed for this loading path.
92
+
93
+ | File | Purpose |
94
+ | --- | --- |
95
+ | `config.json` | Custom head architecture, required base revision, checkpoint and gene-order identity |
96
+ | `model.safetensors` | FP32 head, directly loadable with the supplied Transformers model class |
97
+ | `model.fp16.safetensors` | FP16 weight-storage variant, preserving original FP32 biases |
98
+ | `head_int8.safetensors` | Original INT8 weights/scales/biases; load using `inference.py`, not generic automatic quantization |
99
+ | `configuration_scripture_genome.py`, `modeling_scripture_genome.py` | Auditable custom Transformers head definition |
100
+ | `inference.py` | Local loader for all three variants and a text-to-genome command |
101
+ | `gene_ids.txt` | Ordered 568 output-feature names |
102
+ | `runtime_config.json`, `quantization_config.json` | Retrieval configuration and explicit quantized-storage semantics |
103
+ | `validation_q250.json`, `export_verification.json` | Research validation and separate conversion checks |
104
+ | `release_manifest.json` | Checksums and conversion provenance |
105
+ | `requirements.txt`, `LICENSE`, `README.md` | Dependencies, MIT terms, and usage |
106
+
107
+ No base-model weights, corpus databases, optimizer state, or retrieval indexes are included in this head-only release. Safetensors changes how weights are stored; it does not retrain or merge the head into BGE-M3. This is not GGUF, a chat model, or a hosted Inference Provider endpoint.
108
+
109
+ ### Recommended usage
110
+
111
+ Download the unpacked repository files into a local folder, then install dependencies:
112
+
113
+ ```bash
114
+ python -m pip install -r requirements.txt
115
+ python inference.py --model-dir . --text "What is faith?"
116
+ ```
117
+
118
+ The first text inference downloads the separate pinned BGE-M3 tokenizer/encoder. For an already extracted base, use `--base-dir /path/to/bge-m3-pinned`. That local base must be the pinned revision. No network access is needed with both model folders present. The helper returns dense embeddings' shape and genome values, not ranked verses.
119
+
120
+ Use `--precision fp16` or `--precision int8` to load the corresponding head storage variant. The helper performs head arithmetic in FP32 for portability; INT8 weights are dequantized at load time. These options do not quantize the base or promise faster inference.
121
+
122
+ For direct Transformers use:
123
+
124
+ ```python
125
+ import torch
126
+ from transformers import AutoModel, AutoTokenizer
127
+
128
+ # Local downloaded release folder, or the repository ID after files are uploaded.
129
+ HEAD = "./huggingface-question-hidden4096"
130
+ # HEAD = "chainuser1/Scripture_Genome_Multilingual_Head_BGE_M3"
131
+
132
+ # Review the supplied Python files before enabling custom-code execution.
133
+ # For a remote repository, also pin revision="<reviewed commit SHA>".
134
+ head = AutoModel.from_pretrained(HEAD, trust_remote_code=True).eval()
135
+ tokenizer = AutoTokenizer.from_pretrained(
136
+ head.config.encoder_name, revision=head.config.encoder_revision,
137
+ )
138
+ base = AutoModel.from_pretrained(
139
+ head.config.encoder_name, revision=head.config.encoder_revision,
140
+ ).eval()
141
+
142
+ tokens = tokenizer(["What is faith?"], padding=True, truncation=False, return_tensors="pt")
143
+ if tokens["input_ids"].shape[1] > head.config.max_length:
144
+ raise ValueError("Input exceeds the 512-token policy; shorten it explicitly")
145
+ with torch.inference_mode():
146
+ hidden = base(**tokens).last_hidden_state
147
+ dense = torch.nn.functional.normalize(hidden[:, 0, :].float(), dim=-1)
148
+ genome = head(embeddings=dense).genome
149
+
150
+ print(dense.shape) # [1, 1024]
151
+ print(genome.shape) # [1, 568]
152
+ ```
153
+
154
+ The head expects `embeddings=...`, not `input_ids=...`. Its custom class is not a replacement for the BGE-M3 encoder. Loading custom code requires explicit trust; Safetensors avoids pickled weight loading but does not make arbitrary Python code safe. No generic `pipeline()` integration is claimed.
155
+
156
+ `variant="fp16"` selects `model.fp16.safetensors` with `from_pretrained()`. Use an explicit supported computation dtype/device if you want half-precision execution, and cast the input accordingly. `head_int8.safetensors` is **not** a Transformers/bitsandbytes quantization format; use the bundled loader.
157
+
158
+ ### Original archive contents
159
+
160
+ The full and optimized ZIPs use the older filenames below. Extract them before using the legacy NPZ loader. They are retained for compatibility, not required alongside the unpacked Safetensors release.
161
 
162
  | File | Purpose |
163
  | --- | --- |
 
171
  | `manifest.json` | Bundle inventory and checksums |
172
  | `best.pt` | Optional full training checkpoint, included in the full export |
173
 
174
+ `best.pt` is not required for inference. The original NPZ files are custom exports, not Safetensors, ONNX, or a directly loadable Sentence Transformers model. Calling `AutoModel.from_pretrained()` on an old extracted NPZ-only ZIP folder will not construct this head; use the new unpacked release described above.
175
 
176
+ ### Legacy NPZ inference example
177
 
178
  Install `torch`, `numpy`, and `transformers` in a suitable Python environment. Download/extract a head export and its `gene_ids.txt`. Set `HEAD_DIR` below to that folder. The example downloads the pinned BGE-M3 base separately; an internet connection is needed on its first run.
179
 
config.json ADDED
@@ -0,0 +1,22 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "architectures": [
3
+ "ScriptureGenomeHeadModel"
4
+ ],
5
+ "auto_map": {
6
+ "AutoConfig": "configuration_scripture_genome.ScriptureGenomeConfig",
7
+ "AutoModel": "modeling_scripture_genome.ScriptureGenomeHeadModel"
8
+ },
9
+ "checkpoint_sha256": "5a68ef73167f48899c927dfb5e25dfe8ff50d0b8e8310cd6f3ff3c93b8bf9952",
10
+ "dtype": "float32",
11
+ "encoder_name": "BAAI/bge-m3",
12
+ "encoder_revision": "5617a9f61b028005a4858fdac845db406aefb181",
13
+ "gene_ids_sha256": "16878f92a2f6434b39ef6d68c633f2cd815751f2b4be8767a309e32442baf195",
14
+ "hidden_dim": 4096,
15
+ "input_dim": 1024,
16
+ "max_length": 512,
17
+ "model_type": "scripture_genome_head",
18
+ "output_dim": 568,
19
+ "pooling": "cls_l2_normalized",
20
+ "track": "question",
21
+ "transformers_version": "4.57.6"
22
+ }
configuration_scripture_genome.py ADDED
@@ -0,0 +1,37 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ """Configuration for the Scripture Genome head (the base is separate)."""
2
+
3
+ from transformers import PretrainedConfig
4
+
5
+
6
+ class ScriptureGenomeConfig(PretrainedConfig):
7
+ model_type = "scripture_genome_head"
8
+
9
+ def __init__(
10
+ self,
11
+ input_dim=1024,
12
+ hidden_dim=4096,
13
+ output_dim=568,
14
+ encoder_name="BAAI/bge-m3",
15
+ encoder_revision="5617a9f61b028005a4858fdac845db406aefb181",
16
+ max_length=512,
17
+ checkpoint_sha256=None,
18
+ gene_ids_sha256=None,
19
+ track="question",
20
+ **kwargs,
21
+ ):
22
+ super().__init__(**kwargs)
23
+ if (input_dim, hidden_dim, output_dim) != (1024, 4096, 568):
24
+ raise ValueError("This release supports only the selected 1024 -> 4096 -> 568 head")
25
+ self.input_dim = input_dim
26
+ self.hidden_dim = hidden_dim
27
+ self.output_dim = output_dim
28
+ self.encoder_name = encoder_name
29
+ self.encoder_revision = encoder_revision
30
+ self.max_length = max_length
31
+ self.checkpoint_sha256 = checkpoint_sha256
32
+ self.gene_ids_sha256 = gene_ids_sha256
33
+ self.track = track
34
+ self.pooling = "cls_l2_normalized"
35
+
36
+
37
+ ScriptureGenomeConfig.register_for_auto_class()
export_verification.json ADDED
@@ -0,0 +1,26 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "rows": 32,
3
+ "inputs": "seeded synthetic normalized vectors; not a retrieval benchmark",
4
+ "variants": {
5
+ "fp32": {
6
+ "source_tensor_values_preserved": true,
7
+ "source_loader_max_abs_delta": 0.0,
8
+ "max_abs_delta_vs_fp32": 0.0,
9
+ "mean_abs_delta_vs_fp32": 0.0
10
+ },
11
+ "fp16": {
12
+ "source_tensor_values_preserved": true,
13
+ "source_loader_max_abs_delta": 0.0,
14
+ "max_abs_delta_vs_fp32": 0.00044864416122436523,
15
+ "mean_abs_delta_vs_fp32": 2.0774701624759473e-05
16
+ },
17
+ "int8": {
18
+ "source_tensor_values_preserved": true,
19
+ "source_loader_max_abs_delta": 0.0,
20
+ "max_abs_delta_vs_fp32": 0.017965853214263916,
21
+ "mean_abs_delta_vs_fp32": 0.000984748243354261
22
+ }
23
+ },
24
+ "automodel_from_pretrained": "passed locally with custom-code trust",
25
+ "base_encoder_execution": "not tested by this head-only conversion"
26
+ }
gene_ids.txt ADDED
@@ -0,0 +1,568 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ A01_form_imperative_command
2
+ A02_form_prohibition
3
+ A03_form_conditional_if_then
4
+ A04_form_declarative_assertion
5
+ A05_form_rhetorical_question
6
+ A06_form_genuine_question
7
+ A07_form_exclamation
8
+ A08_form_list_enumeration
9
+ A09_form_parallelism
10
+ A10_form_chiasm
11
+ A11_form_antithesis
12
+ A12_form_direct_address
13
+ A13_form_first_person_singular
14
+ A14_form_first_person_plural
15
+ A15_form_third_person_narrative
16
+ A16_form_dialogue_exchange
17
+ A17_form_oath_vow
18
+ A18_form_blessing_pronounced
19
+ A19_form_curse_pronounced
20
+ A20_form_doxology_ascription
21
+ A21_form_lament_structure
22
+ A22_form_promise_pledge
23
+ A23_form_warning_then_promise
24
+ A24_form_definition_explanation
25
+ A25_form_comparison_contrast_pair
26
+ A26_form_supplication_request
27
+ A27_form_quotation_citation
28
+ A28_form_fulfillment_formula
29
+ B01_poetic_elevated_diction
30
+ B02_poetic_plain_prosaic
31
+ B03_poetic_metaphor_density
32
+ B04_poetic_simile_explicit
33
+ B05_poetic_allegory
34
+ B06_poetic_personification
35
+ B07_poetic_hyperbole
36
+ B08_poetic_repetition_anaphora
37
+ B09_poetic_repetition_epistrophe
38
+ B10_poetic_wordplay
39
+ B11_poetic_irony
40
+ B12_poetic_brevity
41
+ B13_poetic_density
42
+ B14_poetic_rhythm_marked
43
+ B15_poetic_numeric_pattern
44
+ B16_poetic_apostrophe
45
+ B17_poetic_litotes
46
+ B18_poetic_merism
47
+ B19_poetic_hendiadys
48
+ B20_poetic_inclusio
49
+ B21_poetic_vocative_address
50
+ B22_poetic_enjambment
51
+ B23_poetic_catalog_listing
52
+ B24_poetic_concrete_abstraction
53
+ B25_poetic_sound_devices
54
+ B26_poetic_climactic_graded_sequence
55
+ B27_poetic_euphemism
56
+ C01_imagery_nature_earth
57
+ C02_imagery_nature_water
58
+ C03_imagery_nature_fire
59
+ C04_imagery_nature_wind_breath
60
+ C05_imagery_nature_flora
61
+ C06_imagery_nature_fauna
62
+ C07_imagery_celestial
63
+ C08_imagery_light_darkness
64
+ C09_imagery_body_physical
65
+ C10_imagery_food_sustenance
66
+ C11_imagery_warfare_conflict
67
+ C12_imagery_journey_path
68
+ C13_imagery_architectural
69
+ C14_imagery_domestic_daily
70
+ C15_imagery_agricultural
71
+ C16_imagery_shepherd_flock
72
+ C17_imagery_royalty_court
73
+ C18_imagery_legal_courtroom
74
+ C19_imagery_musical
75
+ C20_imagery_blood_sacrifice
76
+ C21_imagery_clothing_garment
77
+ C22_imagery_precious_materials
78
+ C23_imagery_desert_wilderness
79
+ C24_imagery_prison_captivity
80
+ C25_imagery_commerce_wealth
81
+ C26_imagery_medicine_healing
82
+ C27_imagery_cosmic_chaos
83
+ C28_imagery_marriage_betrothal
84
+ C29_imagery_childbirth_birth
85
+ C30_imagery_numerical_scale
86
+ C31_imagery_sleep_death
87
+ D01_emotion_lament
88
+ D02_emotion_celebration_joy
89
+ D03_emotion_urgency
90
+ D04_emotion_fear_dread
91
+ D05_emotion_tenderness
92
+ D06_emotion_anger_wrath
93
+ D07_emotion_longing_yearning
94
+ D08_emotion_peace_stillness
95
+ D09_emotion_sorrow_mourning
96
+ D10_emotion_wonder_awe
97
+ D11_emotion_hope_expectation
98
+ D12_emotion_warning_caution
99
+ D13_emotion_invitation_welcome
100
+ D14_emotion_confidence_certainty
101
+ D15_emotion_pleading_supplication
102
+ D16_emotion_gratitude_thanks
103
+ D17_emotion_guilt_conviction
104
+ D18_emotion_comfort_consolation
105
+ D19_emotion_defiance_resistance
106
+ D20_emotion_resignation_acceptance
107
+ D21_emotion_compassion_mercy
108
+ D22_emotion_despair_hopelessness
109
+ D23_emotion_shame_disgrace
110
+ D24_emotion_jealousy_zeal
111
+ D25_emotion_nostalgia_remembrance
112
+ D26_emotion_relief_deliverance_felt
113
+ D27_emotion_indignation_righteous
114
+ D28_emotion_ambivalence_tension
115
+ D29_emotion_solemnity_gravity
116
+ D30_emotion_surprise_astonishment
117
+ D31_emotion_trust_surrender
118
+ D32_emotion_contempt_scorn
119
+ D33_emotion_contentment_satisfaction
120
+ E01_condition_mortality_suffering
121
+ E02_condition_injustice_oppression
122
+ E03_condition_betrayal
123
+ E04_condition_isolation_loneliness
124
+ E05_condition_redemption
125
+ E06_condition_transformation
126
+ E07_condition_guidance_direction
127
+ E08_condition_protection_safety
128
+ E09_condition_provision_need_met
129
+ E10_condition_justice_vindication
130
+ E11_condition_humility_lowliness
131
+ E12_condition_pride_arrogance
132
+ E13_condition_community_belonging
133
+ E14_condition_exile_separation
134
+ E15_condition_return_reconciliation
135
+ E16_condition_identity_crisis
136
+ E17_condition_vocation_calling
137
+ E18_condition_binding_agreement
138
+ E19_condition_sacrifice_cost
139
+ E20_condition_testing_trial
140
+ E21_condition_wisdom_sought
141
+ E22_condition_finitude_limits
142
+ E23_condition_power_authority
143
+ E24_condition_creation_origin
144
+ E25_condition_mystery_unknown
145
+ E26_condition_grief_bereavement
146
+ E27_condition_waywardness_straying
147
+ E28_condition_restoration_healing
148
+ E29_condition_doubt_uncertainty
149
+ E30_condition_jealousy_rivalry
150
+ E31_condition_addiction_compulsion
151
+ E32_condition_leadership_burden
152
+ E33_condition_childlessness_barrenness
153
+ E34_condition_aging_decline
154
+ E35_condition_wealth_poverty_contrast
155
+ E36_condition_fear_of_death
156
+ E37_condition_undeserved_suffering
157
+ E38_condition_spiritual_hunger
158
+ E39_condition_forgiveness_sought
159
+ E40_condition_forgiveness_extended
160
+ E41_condition_waiting_patience
161
+ E42_condition_hiding_concealment
162
+ E43_condition_inheritance_legacy
163
+ F01_divine_speaks_first_person
164
+ F02_divine_referenced_third_person
165
+ F03_divine_acts_in_text
166
+ F04_human_reaches_toward_divine
167
+ F05_divine_reaches_toward_human
168
+ F06_divine_proximity_near
169
+ F07_divine_proximity_distant
170
+ F08_divine_wrath_judgment
171
+ F09_divine_love_mercy
172
+ F10_divine_power_omnipotence
173
+ F11_divine_knowledge_omniscience
174
+ F12_divine_holiness_otherness
175
+ F13_intermediary_figure
176
+ F14_vision_revelation_dream
177
+ F15_divine_silence_absence
178
+ F16_divine_name_title_invoked
179
+ F17_divine_human_binding_pact
180
+ F18_divine_creative_act
181
+ F19_divine_salvific_act
182
+ F20_divine_presence_embodied
183
+ F21_divine_promise_future
184
+ F22_divine_memory_past
185
+ F23_divine_patience_longsuffering
186
+ F24_divine_exclusivity_claim
187
+ F25_divine_grief_expressed
188
+ F26_divine_repentance_relenting
189
+ F27_divine_commission_sending
190
+ F28_divine_testing_human
191
+ F29_divine_dwelling_presence
192
+ F30_divine_glory_manifestation
193
+ F31_divine_rest_cessation
194
+ F32_divine_attention_individual
195
+ F33_cosmic_nature_response
196
+ G01_moral_binary_contrast
197
+ G02_moral_ambiguity
198
+ G03_moral_imperative_do
199
+ G04_moral_imperative_avoid
200
+ G05_moral_consequence_stated
201
+ G06_moral_virtue_named
202
+ G07_moral_vice_named
203
+ G08_moral_agency_choice
204
+ G09_moral_determinism
205
+ G10_moral_communal_ethics
206
+ G11_moral_individual_inner_life
207
+ G12_moral_restorative_justice
208
+ G13_moral_retributive_justice
209
+ G14_moral_mercy_over_law
210
+ G15_moral_law_statute
211
+ G16_moral_unearned_gift
212
+ G17_moral_reciprocity
213
+ G18_moral_loyalty_faithfulness
214
+ G19_moral_hypocrisy_addressed
215
+ G20_moral_purity_impurity
216
+ G21_moral_stewardship_responsibility
217
+ G22_moral_hospitality_stranger
218
+ G23_moral_truthfulness_deception
219
+ G24_moral_courage_cowardice
220
+ G25_moral_generosity_stinginess
221
+ G26_moral_sexual_ethics
222
+ G27_moral_power_abuse
223
+ G28_moral_solidarity_with_weak
224
+ G29_moral_gradation_partial
225
+ G30_moral_inner_motive_examined
226
+ G31_moral_innocence_guilt
227
+ G32_moral_repentance_turning
228
+ H01_scope_individual
229
+ H02_scope_family_household
230
+ H03_scope_community_nation
231
+ H04_scope_universal_all_people
232
+ H05_scope_righteous_specifically
233
+ H06_scope_wicked_specifically
234
+ H07_time_immediate_present
235
+ H08_time_near_future
236
+ H09_time_distant_future_prophecy
237
+ H10_time_past_historical
238
+ H11_time_eternity_beyond_mortal
239
+ H12_space_earthly_mortal
240
+ H13_space_heavenly_above
241
+ H14_space_underworld_below
242
+ H15_space_specific_named_place
243
+ H16_time_cyclical_recurring
244
+ H17_time_kairos_appointed
245
+ H18_scope_seeker_questioning
246
+ H19_scope_leader_ruler
247
+ H20_scope_child_youth
248
+ H21_scope_aged_elder
249
+ H22_scope_mourner_bereaved
250
+ H23_space_boundary_threshold
251
+ H24_space_wilderness_liminal
252
+ H25_scope_enemy_adversary
253
+ H26_scope_poor_widow_orphan_stranger
254
+ H27_space_garden_grove
255
+ H28_space_water_boundary
256
+ H29_time_generational_span
257
+ H30_space_exalted_height
258
+ I01_voice_transcendent_first
259
+ I02_voice_prophet_messenger
260
+ I03_voice_collective_people
261
+ I04_voice_individual_human
262
+ I05_voice_narrator_external
263
+ I06_voice_antagonist
264
+ I07_voice_supplicant
265
+ I08_voice_wisdom_teacher
266
+ I09_voice_intercessor
267
+ I10_address_target_human_to_divine
268
+ I11_address_target_divine_to_human
269
+ I12_address_target_human_to_human
270
+ I13_address_target_unspecified
271
+ I14_voice_dual_multiple_speakers
272
+ I15_voice_embedded_quotation
273
+ I16_voice_eyewitness_testimony
274
+ I17_voice_retrospective_narrator
275
+ I18_voice_future_prophetic
276
+ I19_voice_universal_speaker
277
+ I20_voice_resistant_reluctant
278
+ I21_address_target_creation_nature
279
+ I22_address_target_death_abstract
280
+ I23_voice_corporate_lament
281
+ I24_voice_child_speaks
282
+ I25_voice_unreliable_narrator
283
+ I26_voice_silence_response
284
+ I27_voice_witness_testifier
285
+ J01_structure_opening_statement
286
+ J02_structure_closing_statement
287
+ J03_structure_hinge_pivot
288
+ J04_structure_elaboration
289
+ J05_structure_contrast_counterpoint
290
+ J06_structure_example_illustration
291
+ J07_structure_self_contained
292
+ J08_structure_dependent_context
293
+ J09_structure_callback_echo
294
+ J10_structure_prophecy_fulfillment
295
+ J11_structure_narrative_climax
296
+ J12_structure_aside_parenthetical
297
+ J13_structure_hymnic_formulaic
298
+ J14_structure_legal_formulaic
299
+ J15_structure_wisdom_saying
300
+ J16_structure_narrative_exposition
301
+ J17_structure_narrative_complication
302
+ J18_structure_narrative_resolution
303
+ J19_structure_thesis_antithesis
304
+ J20_structure_progressive_intensification
305
+ J21_structure_frame_narrative
306
+ J22_structure_genealogical
307
+ J23_structure_itinerary_travel
308
+ J24_structure_prayer_form
309
+ J25_structure_riddle_enigma
310
+ J26_structural_reversal_turning_point
311
+ J27_structural_summary_recapitulation
312
+ K01_epistemic_certainty_absolute
313
+ K02_epistemic_uncertainty_acknowledged
314
+ K03_epistemic_revelation_received
315
+ K04_epistemic_empirical_observed
316
+ K05_epistemic_wisdom_accumulated
317
+ K06_epistemic_mystery_preserved
318
+ K07_epistemic_paradox_stated
319
+ K08_epistemic_belief_faith_required
320
+ K09_epistemic_memory_recall
321
+ K10_epistemic_ignorance_addressed
322
+ K11_epistemic_discernment_tested
323
+ K12_epistemic_teaching_transmission
324
+ K13_epistemic_question_unanswered
325
+ K14_epistemic_sign_symbol_given
326
+ K15_epistemic_prophecy_as_knowledge
327
+ K16_epistemic_heart_knowledge
328
+ K17_epistemic_sudden_realization
329
+ K18_epistemic_refusal_to_know
330
+ L01_relation_power_asymmetry
331
+ L02_relation_equality_peer
332
+ L03_relation_parent_child
333
+ L04_relation_master_servant
334
+ L05_relation_friend_companion
335
+ L06_relation_enemy_adversary
336
+ L07_relation_patron_dependent
337
+ L08_relation_teacher_student
338
+ L09_relation_judge_accused
339
+ L10_relation_intercessor_parties
340
+ L11_relation_community_outsider
341
+ L12_relation_reconciliation_breach
342
+ L13_relation_betrayal_breach
343
+ L14_relation_covenant_parties
344
+ L15_relation_abandonment
345
+ L16_relation_pursuit_seeking
346
+ L17_relation_protection_of_vulnerable
347
+ L18_relation_corporate_solidarity
348
+ L19_relation_rivalry_competition
349
+ L20_relation_hospitality_reception
350
+ L21_relation_gift_exchange
351
+ L22_relation_mediator_go_between
352
+ L23_relation_discipleship_emulation
353
+ L24_relation_communion_shared_table
354
+ M01_phenom_visual_seeing
355
+ M02_phenom_auditory_hearing
356
+ M03_phenom_tactile_touch
357
+ M04_phenom_taste_flavor
358
+ M05_phenom_olfactory_smell
359
+ M06_phenom_kinesthetic_movement
360
+ M07_phenom_pain_physical
361
+ M08_phenom_rest_physical
362
+ M09_phenom_hunger_thirst
363
+ M10_phenom_breath_life_force
364
+ M11_phenom_weight_burden_felt
365
+ M12_phenom_lightness_freedom
366
+ M13_phenom_trembling_fear_body
367
+ M14_phenom_tears_weeping
368
+ M15_phenom_silence_absence_sound
369
+ M16_phenom_exhaustion_faintness
370
+ N01_abstraction_fully_concrete
371
+ N02_abstraction_mostly_concrete
372
+ N03_abstraction_balanced
373
+ N04_abstraction_mostly_abstract
374
+ N05_abstraction_fully_abstract
375
+ N06_abstraction_concrete_to_abstract
376
+ N07_abstraction_abstract_to_concrete
377
+ N08_abstraction_technical_specialized
378
+ N09_abstraction_universal_accessible
379
+ N10_abstraction_paradox_concrete
380
+ N11_abstraction_legal_contractual
381
+ O01_motion_static_meditative
382
+ O02_motion_slow_building
383
+ O03_motion_sudden_dramatic
384
+ O04_motion_cyclical_returning
385
+ O05_motion_linear_progressive
386
+ O06_motion_descent_falling
387
+ O07_motion_ascent_rising
388
+ O08_motion_outward_expanding
389
+ O09_motion_inward_contracting
390
+ O10_motion_suspended_unresolved
391
+ O11_motion_scattering_dispersal
392
+ O12_motion_gathering_assembling
393
+ O13_motion_stillness_delayed
394
+ P01_covenant_abrahamic_type
395
+ P02_covenant_mosaic_type
396
+ P03_covenant_davidic_type
397
+ P04_covenant_new_covenant_type
398
+ P05_covenant_obligation_stipulation
399
+ P06_covenant_blessing_promised
400
+ P07_covenant_curse_threatened
401
+ P08_covenant_renewal_restoration
402
+ P09_covenant_breach_violation
403
+ P10_covenant_sign_token
404
+ P11_covenant_mediator_present
405
+ P12_covenant_memory_invocation
406
+ P13_covenant_universal_scope
407
+ P14_covenant_particular_scope
408
+ P15_covenant_weight_high
409
+ P16_covenant_eschatological_horizon
410
+ Q01_period_pre_monarchic
411
+ Q02_period_monarchic_united
412
+ Q03_period_monarchic_divided
413
+ Q04_period_pre_exilic_late
414
+ Q05_period_exilic
415
+ Q06_period_post_exilic_second_temple
416
+ Q07_period_hellenistic
417
+ Q08_period_new_testament_era
418
+ Q09_period_restoration_19th_century
419
+ Q10_language_classical_hebrew
420
+ Q11_language_late_biblical_hebrew
421
+ Q12_language_aramaic
422
+ Q13_language_koine_greek
423
+ Q14_language_egyptian_coptic_influence
424
+ Q15_language_semitic_syntax_preserved
425
+ Q16_language_hapax_legomenon
426
+ Q17_language_semantic_range_wide
427
+ Q18_language_textual_variant_significant
428
+ Q19_reception_contested_historically
429
+ Q20_reception_audience_original_narrow
430
+ Q21_versification_boundary_natural
431
+ R01_doctrinal_weight_high
432
+ R02_doctrinal_weight_low
433
+ R03_doctrinal_nature_of_god
434
+ R04_doctrinal_nature_of_humanity
435
+ R05_doctrinal_soteriology
436
+ R06_doctrinal_eschatology
437
+ R07_doctrinal_creation_theology
438
+ R08_doctrinal_anthropology_embodied
439
+ R09_doctrinal_pneumatology
440
+ R10_doctrinal_priesthood_mediation
441
+ R11_doctrinal_law_and_grace
442
+ R12_doctrinal_sin_and_atonement
443
+ R13_doctrinal_resurrection_afterlife
444
+ R14_doctrinal_divine_plurality
445
+ R15_doctrinal_monotheism_explicit
446
+ R16_doctrinal_controversiality
447
+ R17_doctrinal_proof_text_status
448
+ R18_doctrinal_density_high
449
+ S01_salvific_divine_initiative
450
+ S02_salvific_substitution_pattern
451
+ S03_salvific_ransom_redemption
452
+ S04_salvific_forgiveness_mechanism
453
+ S05_salvific_restoration_wholeness
454
+ S06_gospel_faith_trust_called
455
+ S07_gospel_repentance_turning_called
456
+ S08_gospel_ritual_initiation_present
457
+ S09_gospel_spirit_gift_present
458
+ S10_gospel_endurance_perseverance_called
459
+ S11_messianic_royal_figure_anticipated
460
+ S12_messianic_suffering_servant_pattern
461
+ S13_messianic_priestly_mediation_figure
462
+ S14_messianic_prophetic_voice_figure
463
+ S15_typological_depth
464
+ S16_salvific_universal_scope
465
+ S17_salvific_particular_scope
466
+ S18_christological_loading
467
+ T01_pedagogical_mode_didactic
468
+ T02_pedagogical_mode_exemplary
469
+ T03_pedagogical_mode_corrective
470
+ T04_pedagogical_mode_formative
471
+ T05_pedagogical_mode_commemorative
472
+ T06_pedagogical_resonance_high
473
+ T07_application_situational_specific
474
+ T08_application_universal_transferable
475
+ T09_application_moral_ethical
476
+ T10_application_doctrinal_belief
477
+ T11_application_liturgical_worship
478
+ T12_application_missional_outward
479
+ T13_memorability_high
480
+ T14_accessibility_general_reader
481
+ U01_depth_literal_surface
482
+ U02_depth_allegorical_layer
483
+ U03_depth_typological_layer
484
+ U04_depth_anagogical_layer
485
+ U05_semantic_density_high
486
+ U06_semantic_density_low
487
+ U07_interpretive_range_wide
488
+ U08_interpretive_range_narrow
489
+ U09_content_sparsity_high
490
+ U10_intertextual_density_high
491
+ U11_canonical_centrality_high
492
+ U12_narrative_impact_high
493
+ U13_multivalence_sustained
494
+ U14_width_cross_canonical_reach
495
+ U15_unit_semantic_completeness
496
+ V01_discourse_causal_connector
497
+ V02_discourse_adversative_connector
498
+ V03_discourse_telic_purpose_connector
499
+ V04_form_performative_declarative
500
+ V05_form_commissive_illocutionary
501
+ V06_intertextual_allusion_unmarked
502
+ V07_intertextual_typological_enacted
503
+ V08_intertextual_pesher_application
504
+ V09_narrative_protagonist_established
505
+ V10_narrative_antagonist_established
506
+ V11_narrative_test_moment
507
+ V12_narrative_recognition_anagnorisis
508
+ V13_cognitive_theory_of_mind
509
+ V14_cognitive_metacognitive_reflection
510
+ V15_emotion_spatial_homesickness
511
+ V16_divine_ordering_cosmos
512
+ V17_divine_sustaining_upholding
513
+ V18_form_confessional_creedal
514
+ V19_form_thanksgiving_report
515
+ V20_doctrinal_embodiment_theology
516
+ V21_phenom_ritualized_gesture_posture
517
+ W01_moral_weight_absolute_capital
518
+ W02_moral_weight_serious_consequential
519
+ W03_moral_weight_minor_procedural
520
+ W04_scope_addressee_universal
521
+ W05_scope_addressee_particular_group
522
+ W06_scope_addressee_role_restricted
523
+ W07_scope_addressee_individual_named
524
+ W08_temporal_framing_perpetual
525
+ W09_temporal_framing_conditional
526
+ W10_temporal_framing_superseded_explicit
527
+ W11_temporal_framing_eschatological
528
+ W12_code_moral_ethical_natural
529
+ W13_code_ceremonial_ritual_worship
530
+ W14_code_civil_social_governance
531
+ W15_code_purity_clean_unclean
532
+ W16_code_dietary_food_regulation
533
+ W17_code_sacred_time_calendar
534
+ W18_code_economic_property_material
535
+ W19_code_family_social_relational
536
+ W20_code_political_royal_governmental
537
+ W21_moral_direction_positive_imperative
538
+ W22_moral_direction_prohibitive_imperative
539
+ W23_moral_internalization_heart_standard
540
+ W24_moral_motive_determinative
541
+ W25_moral_sequence_interiority
542
+ W26_vice_pride_vainglory
543
+ W27_vice_greed_covetousness_avarice
544
+ W28_vice_lust_sexual_immorality
545
+ W29_vice_anger_malice_violence
546
+ W30_vice_deceit_falsehood_fraud
547
+ W31_vice_idolatry_misplaced_allegiance
548
+ W32_vice_sloth_negligence_neglect
549
+ W33_vice_envy_jealousy_malice
550
+ W34_vice_gluttony_excess_self_indulgence
551
+ W35_virtue_love_charity_agape
552
+ W36_virtue_humility_meekness
553
+ W37_virtue_integrity_wholeness
554
+ W38_virtue_chastity_sexual_purity
555
+ W39_virtue_faithfulness_steadfastness
556
+ W40_wisdom_grounded_divine_revelation
557
+ W41_wisdom_grounded_human_observation
558
+ W42_wisdom_grounded_natural_created_order
559
+ W43_wisdom_human_philosophy_engaged
560
+ W44_wisdom_human_philosophy_critiqued
561
+ W45_wisdom_proverbial_folk_common
562
+ W46_agent_individual_personal_moral
563
+ W47_agent_corporate_communal_moral
564
+ W48_agent_generational_inherited_moral
565
+ W49_agent_systemic_structural_moral
566
+ W50_scope_verse_internal_language
567
+ W51_scope_discourse_context_established
568
+ W52_scope_canonical_expansion_explicit
head_int8.safetensors ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:9539816ab683a35bcc1ad7e44f3d782daf973bda041bcf6eba1336b98e85f1fc
3
+ size 6558624
inference.py ADDED
@@ -0,0 +1,101 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ """Local release loader and optional text -> BGE-M3 -> Scripture Genome CLI.
2
+
3
+ Read the accompanying custom model code before allowing trust_remote_code.
4
+ INT8 is weight-only storage, dequantized to FP32 here, not INT8 execution.
5
+ """
6
+
7
+ import argparse
8
+ import hashlib
9
+ import json
10
+ from pathlib import Path
11
+
12
+ import torch
13
+ from safetensors.torch import load_file
14
+ from transformers import AutoConfig, AutoModel, AutoTokenizer
15
+
16
+
17
+ def load_head(model_dir, precision="fp32", device="cpu"):
18
+ model_dir = Path(model_dir)
19
+ if precision not in {"fp32", "fp16", "int8"}:
20
+ raise ValueError("precision must be fp32, fp16, or int8")
21
+ config = AutoConfig.from_pretrained(model_dir, trust_remote_code=True, local_files_only=True)
22
+ gene_bytes = (model_dir / "gene_ids.txt").read_bytes()
23
+ if hashlib.sha256(gene_bytes).hexdigest() != config.gene_ids_sha256:
24
+ raise ValueError("gene_ids.txt does not match the model configuration")
25
+ genes = gene_bytes.decode("utf-8").splitlines()
26
+ if len(genes) != config.output_dim or len(set(genes)) != len(genes):
27
+ raise ValueError("Invalid gene count/order file")
28
+ if precision == "int8":
29
+ arrays = load_file(str(model_dir / "head_int8.safetensors"))
30
+ model = AutoModel.from_config(config, trust_remote_code=True)
31
+ expected = {f"{prefix}{i}" for i in (0, 1) for prefix in ("w", "b", "scale")}
32
+ if set(arrays) != expected:
33
+ raise ValueError("Unexpected INT8 tensor keys")
34
+ state = {}
35
+ for i, layer in ((0, 0), (1, 2)):
36
+ w, scale, bias = arrays[f"w{i}"], arrays[f"scale{i}"], arrays[f"b{i}"]
37
+ if w.dtype != torch.int8 or scale.shape != (w.shape[0],):
38
+ raise ValueError("Invalid INT8 weights or scales")
39
+ if not torch.isfinite(scale).all() or not (scale > 0).all() or not torch.isfinite(bias).all():
40
+ raise ValueError("Nonfinite weights or invalid quantization scales")
41
+ state[f"head.{layer}.weight"] = w.float() * scale.float()[:, None]
42
+ state[f"head.{layer}.bias"] = bias.float()
43
+ model.load_state_dict(state, strict=True)
44
+ else:
45
+ # FP16 storage is loaded into FP32 arithmetic here for CPU portability.
46
+ # To run FP16 on a compatible device, explicitly cast the head and input.
47
+ options = {"variant": "fp16"} if precision == "fp16" else {}
48
+ model = AutoModel.from_pretrained(
49
+ model_dir, trust_remote_code=True, local_files_only=True,
50
+ use_safetensors=True, dtype=torch.float32, **options,
51
+ )
52
+ return model.to(device).eval(), genes
53
+
54
+
55
+ def encode_texts(texts, head, tokenizer, encoder):
56
+ """No retrieval: returns dense embeddings and 568-feature predictions."""
57
+ if not texts or any(not isinstance(t, str) or not t.strip() for t in texts):
58
+ raise ValueError("Provide a nonempty list of nonempty strings")
59
+ encoded = tokenizer(texts, padding=True, truncation=False, return_tensors="pt")
60
+ if encoded["input_ids"].shape[1] > head.config.max_length:
61
+ raise ValueError(f"Input exceeds {head.config.max_length} tokens; shorten it explicitly")
62
+ encoder_device = next(encoder.parameters()).device
63
+ head_parameter = next(head.parameters())
64
+ encoded = {name: tensor.to(encoder_device) for name, tensor in encoded.items()}
65
+ head.eval()
66
+ encoder.eval()
67
+ with torch.inference_mode():
68
+ hidden = encoder(**encoded).last_hidden_state
69
+ dense = torch.nn.functional.normalize(hidden[:, 0, :].float(), p=2, dim=-1)
70
+ genome = head(embeddings=dense.to(device=head_parameter.device, dtype=head_parameter.dtype)).genome
71
+ return {"dense": dense.cpu(), "genome": genome.float().cpu()}
72
+
73
+
74
+ def main():
75
+ parser = argparse.ArgumentParser(description=__doc__)
76
+ parser.add_argument("--model-dir", type=Path, default=Path(__file__).resolve().parent)
77
+ parser.add_argument("--precision", choices=("fp32", "fp16", "int8"), default="fp32")
78
+ parser.add_argument("--device", default="cpu")
79
+ parser.add_argument("--base-dir", type=Path, help="Optional locally extracted pinned BGE-M3 folder")
80
+ parser.add_argument("--text", action="append", required=True)
81
+ args = parser.parse_args()
82
+ head, genes = load_head(args.model_dir, args.precision, args.device)
83
+ if args.base_dir:
84
+ base, options = str(args.base_dir), {"local_files_only": True}
85
+ else:
86
+ base = head.config.encoder_name
87
+ options = {"revision": head.config.encoder_revision}
88
+ tokenizer = AutoTokenizer.from_pretrained(base, **options)
89
+ encoder = AutoModel.from_pretrained(base, **options).to(args.device).eval()
90
+ result = encode_texts(args.text, head, tokenizer, encoder)
91
+ print(json.dumps({
92
+ "texts": args.text, "dense_shape": list(result["dense"].shape),
93
+ "genome_shape": list(result["genome"].shape),
94
+ "checkpoint_sha256": head.config.checkpoint_sha256,
95
+ "precision": args.precision, "gene_ids": genes,
96
+ "genomes": result["genome"].tolist(),
97
+ }, ensure_ascii=False, allow_nan=False))
98
+
99
+
100
+ if __name__ == "__main__":
101
+ main()
model.fp16.safetensors ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:53cb65e12f00a7f1b443e55dc8e14e14cd0d145be302ea1c1059b6365927a379
3
+ size 13060672
model.safetensors ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:096415844b6343ccddb8b8c23aa42555cd8f8155df3034b000e47eae9deb3a70
3
+ size 26102344
modeling_scripture_genome.py ADDED
@@ -0,0 +1,45 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ """The 6.53M-parameter head; BGE-M3 is not embedded in these weights."""
2
+
3
+ from dataclasses import dataclass
4
+ from typing import Optional
5
+
6
+ import torch
7
+ from torch import nn
8
+ from transformers import PreTrainedModel
9
+ from transformers.utils import ModelOutput
10
+
11
+ from .configuration_scripture_genome import ScriptureGenomeConfig
12
+
13
+
14
+ @dataclass
15
+ class ScriptureGenomeOutput(ModelOutput):
16
+ genome: Optional[torch.Tensor] = None
17
+
18
+
19
+ class ScriptureGenomeHeadModel(PreTrainedModel):
20
+ config_class = ScriptureGenomeConfig
21
+ base_model_prefix = "head"
22
+ main_input_name = "embeddings"
23
+
24
+ def __init__(self, config):
25
+ super().__init__(config)
26
+ self.head = nn.Sequential(
27
+ nn.Linear(config.input_dim, config.hidden_dim),
28
+ nn.GELU(),
29
+ nn.Linear(config.hidden_dim, config.output_dim),
30
+ nn.Sigmoid(),
31
+ )
32
+ self.post_init()
33
+
34
+ def forward(self, embeddings, return_dict=None):
35
+ """Accept normalized BGE-M3 CLS embeddings [batch,1024], not token IDs."""
36
+ if embeddings.ndim != 2 or embeddings.shape[-1] != self.config.input_dim:
37
+ raise ValueError("embeddings must have shape [batch, 1024]")
38
+ if not embeddings.is_floating_point() or not torch.isfinite(embeddings).all():
39
+ raise ValueError("embeddings must be finite floating-point values")
40
+ genome = self.head(embeddings)
41
+ use_dict = self.config.use_return_dict if return_dict is None else return_dict
42
+ return ScriptureGenomeOutput(genome=genome) if use_dict else (genome,)
43
+
44
+
45
+ ScriptureGenomeHeadModel.register_for_auto_class("AutoModel")
quantization_config.json ADDED
@@ -0,0 +1,7 @@
 
 
 
 
 
 
 
 
1
+ {
2
+ "file": "head_int8.safetensors",
3
+ "scope": "head only; base is separate and unchanged",
4
+ "weight_formula": "w[i].float() * scale[i][:, None]",
5
+ "bias_dtype": "float32",
6
+ "runtime": "inference.py dequantizes to float32; no INT8 acceleration is claimed"
7
+ }
release_manifest.json ADDED
@@ -0,0 +1,78 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "format": "scripture-genome-huggingface-head-v1",
3
+ "checkpoint_sha256": "5a68ef73167f48899c927dfb5e25dfe8ff50d0b8e8310cd6f3ff3c93b8bf9952",
4
+ "source_archives": {
5
+ "scripture-genome-question-hidden4096-full.zip": "344f3199f4270a5dcba173aee8882a99d57c77bde27072b325b54b6e2bcefdbb",
6
+ "scripture-genome-question-hidden4096-optimized.zip": "9182e759e8304ca291256c9b81991cf3740de92311302a304ce127d10d678ece"
7
+ },
8
+ "environment": {
9
+ "python": "3.14.7",
10
+ "torch": "2.14.1+cpu",
11
+ "numpy": "2.5.3",
12
+ "transformers": "4.57.6",
13
+ "safetensors": "0.8.0"
14
+ },
15
+ "files": {
16
+ "config.json": {
17
+ "bytes": 767,
18
+ "sha256": "8cea7f5a1c9c1f716696e6f4a99e8bb69a13640f959503cf3308ed5debf0131f"
19
+ },
20
+ "configuration_scripture_genome.py": {
21
+ "bytes": 1210,
22
+ "sha256": "5965fc466aa7d3fe2b097410887b135e5c24d02c79e5f5c249bd2178293015c6"
23
+ },
24
+ "export_verification.json": {
25
+ "bytes": 899,
26
+ "sha256": "1a9e38f3b6b008cd7379452cd0422441cd4ad3b7ae0557db1615a216cee61364"
27
+ },
28
+ "gene_ids.txt": {
29
+ "bytes": 17038,
30
+ "sha256": "16878f92a2f6434b39ef6d68c633f2cd815751f2b4be8767a309e32442baf195"
31
+ },
32
+ "head_int8.safetensors": {
33
+ "bytes": 6558624,
34
+ "sha256": "9539816ab683a35bcc1ad7e44f3d782daf973bda041bcf6eba1336b98e85f1fc"
35
+ },
36
+ "inference.py": {
37
+ "bytes": 5073,
38
+ "sha256": "638f12688028ad08f67fc82b3f992976c686eb54ba6c4b28a02d00dfd319ce7c"
39
+ },
40
+ "LICENSE": {
41
+ "bytes": 1086,
42
+ "sha256": "55d8226892c68fbf7e325c920004778e0d1f0992bcc4015aa9f42eb61837fc3a"
43
+ },
44
+ "model.fp16.safetensors": {
45
+ "bytes": 13060672,
46
+ "sha256": "53cb65e12f00a7f1b443e55dc8e14e14cd0d145be302ea1c1059b6365927a379"
47
+ },
48
+ "model.safetensors": {
49
+ "bytes": 26102344,
50
+ "sha256": "096415844b6343ccddb8b8c23aa42555cd8f8155df3034b000e47eae9deb3a70"
51
+ },
52
+ "modeling_scripture_genome.py": {
53
+ "bytes": 1611,
54
+ "sha256": "2df30c19d48a03707784a23113318a3881a88b7d86418b0062370b9d1194ca60"
55
+ },
56
+ "quantization_config.json": {
57
+ "bytes": 269,
58
+ "sha256": "4fdfdf7799a1bf81683943a7127c97c39e4e752cd4fc75cbe71601b4cef5b0ec"
59
+ },
60
+ "README.md": {
61
+ "bytes": 23548,
62
+ "sha256": "a8de3d2f194a6c594a16a9240c7ad70ea26c06c7479424549ea3164ae98bafe0"
63
+ },
64
+ "requirements.txt": {
65
+ "bytes": 178,
66
+ "sha256": "4c1ccd7704961df8313798415cfaaaa0b4096d34e12d41bd9754a307a1b1d404"
67
+ },
68
+ "runtime_config.json": {
69
+ "bytes": 1368,
70
+ "sha256": "ecee85a2ca9a893e9b1fc53879c4616085c8acdc7483ecfd2b88848bcceba4f5"
71
+ },
72
+ "validation_q250.json": {
73
+ "bytes": 16835,
74
+ "sha256": "6f87e359c3717660d6fee2c9c8caf3bde0543d22b6ac2a2d8379dd9aabb70f91"
75
+ }
76
+ },
77
+ "note": "This manifest excludes itself. No base weights, corpus data or training checkpoint included."
78
+ }
requirements.txt ADDED
@@ -0,0 +1,6 @@
 
 
 
 
 
 
 
1
+ # Tested loader API; install the appropriate CPU/CUDA torch build for your machine.
2
+ torch>=2.6
3
+ transformers==4.57.6
4
+ safetensors>=0.4.3,<1
5
+ numpy>=1.26,<3
6
+ huggingface_hub>=0.34,<1
runtime_config.json ADDED
@@ -0,0 +1,57 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "format_version": 1,
3
+ "production_model": {
4
+ "track": "question",
5
+ "hidden": 4096,
6
+ "architecture": [
7
+ 1024,
8
+ 4096,
9
+ 568
10
+ ],
11
+ "activation": "GELU",
12
+ "output_activation": "Sigmoid",
13
+ "checkpoint_sha256": "5a68ef73167f48899c927dfb5e25dfe8ff50d0b8e8310cd6f3ff3c93b8bf9952"
14
+ },
15
+ "encoder": {
16
+ "model": "BAAI/bge-m3",
17
+ "revision": "5617a9f61b028005a4858fdac845db406aefb181",
18
+ "flagembedding_version": "1.4.2",
19
+ "max_length": 512,
20
+ "pooling": "normalized CLS"
21
+ },
22
+ "retrieval": {
23
+ "pipeline": "Experiment D",
24
+ "candidate_language": "english",
25
+ "candidate_generation": [
26
+ "dense top 200",
27
+ "sparse top 200",
28
+ "genome top 200"
29
+ ],
30
+ "candidate_union": true,
31
+ "colbert": "BGE-M3 MaxSim over the candidate union",
32
+ "weights": {
33
+ "dense": 0.28,
34
+ "sparse": 0.14,
35
+ "colbert": 0.28,
36
+ "genome": 0.3
37
+ },
38
+ "score_normalization": "sample z-score over candidate union",
39
+ "family_retrieval_weights": {
40
+ "B": 0.75,
41
+ "I": 0.5,
42
+ "N": 0.5,
43
+ "Q": 0.0,
44
+ "T": 0.75,
45
+ "U": 0.75,
46
+ "default": 1.0
47
+ },
48
+ "family_q_excluded": true,
49
+ "default_top_k": 20
50
+ },
51
+ "validation": {
52
+ "split": "val",
53
+ "question_ids": 250,
54
+ "rows": 2000,
55
+ "report_sha256": "6f87e359c3717660d6fee2c9c8caf3bde0543d22b6ac2a2d8379dd9aabb70f91"
56
+ }
57
+ }
validation_q250.json ADDED
@@ -0,0 +1,678 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "manifest": {
3
+ "experiment": "five_method_four_signal_validation_question_hidden4096_v1",
4
+ "split": "val",
5
+ "question_ids": [
6
+ "Q025",
7
+ "Q032",
8
+ "Q051",
9
+ "Q10001",
10
+ "Q10388",
11
+ "Q10516",
12
+ "Q10608",
13
+ "Q10619",
14
+ "Q10876",
15
+ "Q10893",
16
+ "Q11004",
17
+ "Q1163",
18
+ "Q11829",
19
+ "Q12118",
20
+ "Q12184",
21
+ "Q12211",
22
+ "Q12262",
23
+ "Q12334",
24
+ "Q12573",
25
+ "Q12608",
26
+ "Q12645",
27
+ "Q12657",
28
+ "Q12884",
29
+ "Q12885",
30
+ "Q1322",
31
+ "Q13463",
32
+ "Q14082",
33
+ "Q14476",
34
+ "Q14534",
35
+ "Q14758",
36
+ "Q14784",
37
+ "Q14815",
38
+ "Q14847",
39
+ "Q14881",
40
+ "Q15096",
41
+ "Q15278",
42
+ "Q15367",
43
+ "Q15493",
44
+ "Q155",
45
+ "Q15573",
46
+ "Q15631",
47
+ "Q15951",
48
+ "Q16060",
49
+ "Q16175",
50
+ "Q16212",
51
+ "Q16424",
52
+ "Q16719",
53
+ "Q1714",
54
+ "Q17201",
55
+ "Q17213",
56
+ "Q17254",
57
+ "Q17683",
58
+ "Q17750",
59
+ "Q17828",
60
+ "Q18030",
61
+ "Q18071",
62
+ "Q18080",
63
+ "Q18151",
64
+ "Q18157",
65
+ "Q18176",
66
+ "Q18233",
67
+ "Q18277",
68
+ "Q18313",
69
+ "Q18719",
70
+ "Q1880",
71
+ "Q1917",
72
+ "Q193",
73
+ "Q19701",
74
+ "Q19769",
75
+ "Q19819",
76
+ "Q20025",
77
+ "Q20285",
78
+ "Q20334",
79
+ "Q20353",
80
+ "Q20594",
81
+ "Q20823",
82
+ "Q21168",
83
+ "Q21170",
84
+ "Q21183",
85
+ "Q21393",
86
+ "Q21447",
87
+ "Q21583",
88
+ "Q21697",
89
+ "Q21775",
90
+ "Q21951",
91
+ "Q2213",
92
+ "Q22212",
93
+ "Q22224",
94
+ "Q22727",
95
+ "Q22956",
96
+ "Q23096",
97
+ "Q23135",
98
+ "Q23174",
99
+ "Q23405",
100
+ "Q24424",
101
+ "Q24523",
102
+ "Q24781",
103
+ "Q25098",
104
+ "Q25345",
105
+ "Q25494",
106
+ "Q25618",
107
+ "Q25656",
108
+ "Q2580",
109
+ "Q26048",
110
+ "Q26433",
111
+ "Q2668",
112
+ "Q26781",
113
+ "Q26812",
114
+ "Q26818",
115
+ "Q26913",
116
+ "Q27082",
117
+ "Q27174",
118
+ "Q27217",
119
+ "Q2733",
120
+ "Q27645",
121
+ "Q27841",
122
+ "Q27882",
123
+ "Q28076",
124
+ "Q28175",
125
+ "Q28896",
126
+ "Q29160",
127
+ "Q29512",
128
+ "Q29663",
129
+ "Q29794",
130
+ "Q30022",
131
+ "Q30178",
132
+ "Q30383",
133
+ "Q31025",
134
+ "Q31068",
135
+ "Q31236",
136
+ "Q31407",
137
+ "Q31574",
138
+ "Q31660",
139
+ "Q31922",
140
+ "Q32625",
141
+ "Q33243",
142
+ "Q33250",
143
+ "Q33445",
144
+ "Q33672",
145
+ "Q34292",
146
+ "Q3487",
147
+ "Q35883",
148
+ "Q36375",
149
+ "Q36667",
150
+ "Q36729",
151
+ "Q36865",
152
+ "Q37269",
153
+ "Q3732",
154
+ "Q37562",
155
+ "Q37814",
156
+ "Q38116",
157
+ "Q38320",
158
+ "Q38886",
159
+ "Q39179",
160
+ "Q39680",
161
+ "Q39866",
162
+ "Q39939",
163
+ "Q40123",
164
+ "Q40343",
165
+ "Q40758",
166
+ "Q40794",
167
+ "Q40975",
168
+ "Q41061",
169
+ "Q41123",
170
+ "Q41162",
171
+ "Q41229",
172
+ "Q41633",
173
+ "Q41808",
174
+ "Q41967",
175
+ "Q41980",
176
+ "Q42002",
177
+ "Q42062",
178
+ "Q42285",
179
+ "Q42288",
180
+ "Q42321",
181
+ "Q42344",
182
+ "Q42618",
183
+ "Q42806",
184
+ "Q42825",
185
+ "Q43120",
186
+ "Q43276",
187
+ "Q43290",
188
+ "Q43768",
189
+ "Q43962",
190
+ "Q44001",
191
+ "Q44151",
192
+ "Q44206",
193
+ "Q44230",
194
+ "Q44399",
195
+ "Q44509",
196
+ "Q44544",
197
+ "Q4474",
198
+ "Q4479",
199
+ "Q45231",
200
+ "Q45258",
201
+ "Q45522",
202
+ "Q4591",
203
+ "Q45918",
204
+ "Q4594",
205
+ "Q46003",
206
+ "Q46006",
207
+ "Q46190",
208
+ "Q46246",
209
+ "Q4646",
210
+ "Q46627",
211
+ "Q46733",
212
+ "Q46736",
213
+ "Q46853",
214
+ "Q46868",
215
+ "Q46927",
216
+ "Q4701",
217
+ "Q47120",
218
+ "Q47246",
219
+ "Q4748",
220
+ "Q4765",
221
+ "Q4900",
222
+ "Q499",
223
+ "Q5086",
224
+ "Q5119",
225
+ "Q5591",
226
+ "Q5909",
227
+ "Q5980",
228
+ "Q6083",
229
+ "Q6182",
230
+ "Q6199",
231
+ "Q6360",
232
+ "Q6397",
233
+ "Q6455",
234
+ "Q6502",
235
+ "Q6671",
236
+ "Q6745",
237
+ "Q6821",
238
+ "Q6942",
239
+ "Q7290",
240
+ "Q7619",
241
+ "Q788",
242
+ "Q7887",
243
+ "Q797",
244
+ "Q8269",
245
+ "Q8308",
246
+ "Q8347",
247
+ "Q8391",
248
+ "Q856",
249
+ "Q8933",
250
+ "Q9462",
251
+ "Q9577",
252
+ "Q9610",
253
+ "Q9668",
254
+ "Q9929",
255
+ "Q9943"
256
+ ],
257
+ "languages": [
258
+ "cebuano",
259
+ "english",
260
+ "french",
261
+ "german",
262
+ "greek",
263
+ "hebrew",
264
+ "spanish",
265
+ "tagalog"
266
+ ],
267
+ "sample_seed": 20261006,
268
+ "candidate_language": "english",
269
+ "candidate_verses": 41995,
270
+ "candidates_per_lane": 200,
271
+ "methods": [
272
+ "dense",
273
+ "weighted_genome",
274
+ "weighted_90_10",
275
+ "bge_dense_sparse_colbert",
276
+ "experiment_d"
277
+ ],
278
+ "four_signal_weights": {
279
+ "dense": 0.28,
280
+ "sparse": 0.14,
281
+ "colbert": 0.28,
282
+ "genome": 0.3
283
+ },
284
+ "weighted_two_signal": {
285
+ "genome": 0.9,
286
+ "dense": 0.1
287
+ },
288
+ "checkpoint_sha256": "5a68ef73167f48899c927dfb5e25dfe8ff50d0b8e8310cd6f3ff3c93b8bf9952",
289
+ "checkpoint_track": "question",
290
+ "checkpoint_hidden": 4096,
291
+ "fp16_head_sha256": "55e910550ccff8e463729379c6c08c3ebb72f152ba4df0c3217d143aa91b9cf3",
292
+ "fp16_head_parity_max_abs": 0.0008486509323120117,
293
+ "fp16_head_parity_mean_cosine": 1.0,
294
+ "bge_m3_revision": "5617a9f61b028005a4858fdac845db406aefb181",
295
+ "flagembedding_version": "1.4.2",
296
+ "family_q_weight": 0.0
297
+ },
298
+ "completed_question_ids": 250,
299
+ "completed_rows": 2000,
300
+ "expected_rows": 2000,
301
+ "overall_cluster_bootstrap": {
302
+ "dense": {
303
+ "recall@10": {
304
+ "mean": 0.024358333333333336,
305
+ "low": 0.017833333333333333,
306
+ "high": 0.03143354166666666
307
+ },
308
+ "recall@20": {
309
+ "mean": 0.037825000000000004,
310
+ "low": 0.028966458333333334,
311
+ "high": 0.04721687499999999
312
+ },
313
+ "mrr@20": {
314
+ "mean": 0.051011985363707504,
315
+ "low": 0.03494716504776828,
316
+ "high": 0.06874623539703117
317
+ },
318
+ "weighted_ndcg@20": {
319
+ "mean": 0.03106096248570316,
320
+ "low": 0.021967145016875016,
321
+ "high": 0.040995203099106564
322
+ }
323
+ },
324
+ "weighted_genome": {
325
+ "recall@10": {
326
+ "mean": 0.1350833333333333,
327
+ "low": 0.11531645833333333,
328
+ "high": 0.15438583333333328
329
+ },
330
+ "recall@20": {
331
+ "mean": 0.17568333333333333,
332
+ "low": 0.15284145833333332,
333
+ "high": 0.19755854166666664
334
+ },
335
+ "mrr@20": {
336
+ "mean": 0.24174455661297764,
337
+ "low": 0.20410701687615146,
338
+ "high": 0.2787487501964732
339
+ },
340
+ "weighted_ndcg@20": {
341
+ "mean": 0.15626929941091317,
342
+ "low": 0.13224160393033846,
343
+ "high": 0.17942760874826716
344
+ }
345
+ },
346
+ "weighted_90_10": {
347
+ "recall@10": {
348
+ "mean": 0.14486666666666667,
349
+ "low": 0.124631875,
350
+ "high": 0.16446937499999997
351
+ },
352
+ "recall@20": {
353
+ "mean": 0.18672499999999997,
354
+ "low": 0.162731875,
355
+ "high": 0.20931812499999997
356
+ },
357
+ "mrr@20": {
358
+ "mean": 0.26032609940584006,
359
+ "low": 0.22205060619382555,
360
+ "high": 0.29715744103715125
361
+ },
362
+ "weighted_ndcg@20": {
363
+ "mean": 0.1676779937164905,
364
+ "low": 0.14310348312589943,
365
+ "high": 0.19142050183568896
366
+ }
367
+ },
368
+ "bge_dense_sparse_colbert": {
369
+ "recall@10": {
370
+ "mean": 0.03149999999999999,
371
+ "low": 0.024,
372
+ "high": 0.039525000000000005
373
+ },
374
+ "recall@20": {
375
+ "mean": 0.048958333333333326,
376
+ "low": 0.03919104166666667,
377
+ "high": 0.05955124999999998
378
+ },
379
+ "mrr@20": {
380
+ "mean": 0.06272950293600447,
381
+ "low": 0.046572760353251835,
382
+ "high": 0.08041405770930778
383
+ },
384
+ "weighted_ndcg@20": {
385
+ "mean": 0.038395102460161826,
386
+ "low": 0.028874713968453012,
387
+ "high": 0.048275712884382205
388
+ }
389
+ },
390
+ "experiment_d": {
391
+ "recall@10": {
392
+ "mean": 0.06696666666666667,
393
+ "low": 0.055533124999999996,
394
+ "high": 0.07885104166666664
395
+ },
396
+ "recall@20": {
397
+ "mean": 0.09768333333333332,
398
+ "low": 0.08335729166666668,
399
+ "high": 0.11235875
400
+ },
401
+ "mrr@20": {
402
+ "mean": 0.1367895560944903,
403
+ "low": 0.11040850932429927,
404
+ "high": 0.16394163302936954
405
+ },
406
+ "weighted_ndcg@20": {
407
+ "mean": 0.08129438742965414,
408
+ "low": 0.06645920942862378,
409
+ "high": 0.09618033839610174
410
+ }
411
+ }
412
+ },
413
+ "candidate_union_recall": {
414
+ "mean": 0.44202500000000006,
415
+ "low": 0.41277375,
416
+ "high": 0.4705010416666666
417
+ },
418
+ "by_language": {
419
+ "cebuano": {
420
+ "dense": {
421
+ "recall@10": 0.009599999999999997,
422
+ "recall@20": 0.01653333333333333,
423
+ "mrr@20": 0.013236263736263736,
424
+ "weighted_ndcg@20": 0.00883686361129843
425
+ },
426
+ "weighted_genome": {
427
+ "recall@10": 0.06559999999999999,
428
+ "recall@20": 0.084,
429
+ "mrr@20": 0.11596143790849674,
430
+ "weighted_ndcg@20": 0.06762174970799319
431
+ },
432
+ "weighted_90_10": {
433
+ "recall@10": 0.07019999999999998,
434
+ "recall@20": 0.09526666666666667,
435
+ "mrr@20": 0.13499191159717475,
436
+ "weighted_ndcg@20": 0.07917209758621281
437
+ },
438
+ "bge_dense_sparse_colbert": {
439
+ "recall@10": 0.010399999999999998,
440
+ "recall@20": 0.019,
441
+ "mrr@20": 0.016534271284271283,
442
+ "weighted_ndcg@20": 0.011714408546470418
443
+ },
444
+ "experiment_d": {
445
+ "recall@10": 0.028866666666666665,
446
+ "recall@20": 0.049466666666666666,
447
+ "mrr@20": 0.03887013272245471,
448
+ "weighted_ndcg@20": 0.028267045882839566
449
+ }
450
+ },
451
+ "english": {
452
+ "dense": {
453
+ "recall@10": 0.04333333333333333,
454
+ "recall@20": 0.05893333333333334,
455
+ "mrr@20": 0.09459431913116124,
456
+ "weighted_ndcg@20": 0.05378794583919604
457
+ },
458
+ "weighted_genome": {
459
+ "recall@10": 0.18180000000000002,
460
+ "recall@20": 0.21993333333333334,
461
+ "mrr@20": 0.3214196276719497,
462
+ "weighted_ndcg@20": 0.20533247541321145
463
+ },
464
+ "weighted_90_10": {
465
+ "recall@10": 0.1878,
466
+ "recall@20": 0.23073333333333332,
467
+ "mrr@20": 0.3551371843842432,
468
+ "weighted_ndcg@20": 0.2215837109636164
469
+ },
470
+ "bge_dense_sparse_colbert": {
471
+ "recall@10": 0.061599999999999995,
472
+ "recall@20": 0.08519999999999998,
473
+ "mrr@20": 0.13645095956674902,
474
+ "weighted_ndcg@20": 0.07713335517154105
475
+ },
476
+ "experiment_d": {
477
+ "recall@10": 0.08893333333333334,
478
+ "recall@20": 0.1368,
479
+ "mrr@20": 0.21050320298896147,
480
+ "weighted_ndcg@20": 0.12229188387989554
481
+ }
482
+ },
483
+ "french": {
484
+ "dense": {
485
+ "recall@10": 0.030866666666666667,
486
+ "recall@20": 0.04440000000000001,
487
+ "mrr@20": 0.05858647259173575,
488
+ "weighted_ndcg@20": 0.03766874713675634
489
+ },
490
+ "weighted_genome": {
491
+ "recall@10": 0.16853333333333334,
492
+ "recall@20": 0.20986666666666667,
493
+ "mrr@20": 0.2913620264496426,
494
+ "weighted_ndcg@20": 0.18962705545276934
495
+ },
496
+ "weighted_90_10": {
497
+ "recall@10": 0.17726666666666666,
498
+ "recall@20": 0.22393333333333335,
499
+ "mrr@20": 0.30028972465443055,
500
+ "weighted_ndcg@20": 0.2008721636839681
501
+ },
502
+ "bge_dense_sparse_colbert": {
503
+ "recall@10": 0.042,
504
+ "recall@20": 0.05859999999999999,
505
+ "mrr@20": 0.09079896214896215,
506
+ "weighted_ndcg@20": 0.05207448089235733
507
+ },
508
+ "experiment_d": {
509
+ "recall@10": 0.07899999999999999,
510
+ "recall@20": 0.10733333333333332,
511
+ "mrr@20": 0.17117551768836597,
512
+ "weighted_ndcg@20": 0.09800224140884863
513
+ }
514
+ },
515
+ "german": {
516
+ "dense": {
517
+ "recall@10": 0.020933333333333335,
518
+ "recall@20": 0.03793333333333333,
519
+ "mrr@20": 0.046312064646739565,
520
+ "weighted_ndcg@20": 0.028948449436592406
521
+ },
522
+ "weighted_genome": {
523
+ "recall@10": 0.14746666666666666,
524
+ "recall@20": 0.192,
525
+ "mrr@20": 0.26682582359161305,
526
+ "weighted_ndcg@20": 0.16959824611897464
527
+ },
528
+ "weighted_90_10": {
529
+ "recall@10": 0.15986666666666668,
530
+ "recall@20": 0.20506666666666667,
531
+ "mrr@20": 0.28080794310608553,
532
+ "weighted_ndcg@20": 0.18153347436058184
533
+ },
534
+ "bge_dense_sparse_colbert": {
535
+ "recall@10": 0.028599999999999997,
536
+ "recall@20": 0.04853333333333334,
537
+ "mrr@20": 0.0557501837859423,
538
+ "weighted_ndcg@20": 0.03629092247905656
539
+ },
540
+ "experiment_d": {
541
+ "recall@10": 0.07593333333333334,
542
+ "recall@20": 0.11279999999999998,
543
+ "mrr@20": 0.13878295160292067,
544
+ "weighted_ndcg@20": 0.08594360676351548
545
+ }
546
+ },
547
+ "greek": {
548
+ "dense": {
549
+ "recall@10": 0.023599999999999996,
550
+ "recall@20": 0.03373333333333334,
551
+ "mrr@20": 0.04868164016925627,
552
+ "weighted_ndcg@20": 0.030088462723027752
553
+ },
554
+ "weighted_genome": {
555
+ "recall@10": 0.11533333333333334,
556
+ "recall@20": 0.16853333333333334,
557
+ "mrr@20": 0.20299260820019333,
558
+ "weighted_ndcg@20": 0.14016082410501918
559
+ },
560
+ "weighted_90_10": {
561
+ "recall@10": 0.13266666666666665,
562
+ "recall@20": 0.1795333333333333,
563
+ "mrr@20": 0.21963679710382497,
564
+ "weighted_ndcg@20": 0.15146138165604775
565
+ },
566
+ "bge_dense_sparse_colbert": {
567
+ "recall@10": 0.023666666666666666,
568
+ "recall@20": 0.03886666666666667,
569
+ "mrr@20": 0.05120649905649906,
570
+ "weighted_ndcg@20": 0.030345255970291946
571
+ },
572
+ "experiment_d": {
573
+ "recall@10": 0.056666666666666664,
574
+ "recall@20": 0.08706666666666667,
575
+ "mrr@20": 0.12885387495201736,
576
+ "weighted_ndcg@20": 0.07435042042467555
577
+ }
578
+ },
579
+ "hebrew": {
580
+ "dense": {
581
+ "recall@10": 0.02033333333333333,
582
+ "recall@20": 0.0316,
583
+ "mrr@20": 0.048446094016063056,
584
+ "weighted_ndcg@20": 0.029004258165204178
585
+ },
586
+ "weighted_genome": {
587
+ "recall@10": 0.12179999999999999,
588
+ "recall@20": 0.15546666666666667,
589
+ "mrr@20": 0.2236293274492965,
590
+ "weighted_ndcg@20": 0.139133328819003
591
+ },
592
+ "weighted_90_10": {
593
+ "recall@10": 0.12506666666666666,
594
+ "recall@20": 0.17573333333333335,
595
+ "mrr@20": 0.22922287605755098,
596
+ "weighted_ndcg@20": 0.15109517077939089
597
+ },
598
+ "bge_dense_sparse_colbert": {
599
+ "recall@10": 0.025733333333333334,
600
+ "recall@20": 0.04293333333333334,
601
+ "mrr@20": 0.05265930490218415,
602
+ "weighted_ndcg@20": 0.03377922256511489
603
+ },
604
+ "experiment_d": {
605
+ "recall@10": 0.06453333333333333,
606
+ "recall@20": 0.08693333333333333,
607
+ "mrr@20": 0.13843008943241142,
608
+ "weighted_ndcg@20": 0.07898237278508083
609
+ }
610
+ },
611
+ "spanish": {
612
+ "dense": {
613
+ "recall@10": 0.025799999999999997,
614
+ "recall@20": 0.048,
615
+ "mrr@20": 0.06944719659425541,
616
+ "weighted_ndcg@20": 0.03861702120570765
617
+ },
618
+ "weighted_genome": {
619
+ "recall@10": 0.16713333333333333,
620
+ "recall@20": 0.2165333333333333,
621
+ "mrr@20": 0.3031002419149478,
622
+ "weighted_ndcg@20": 0.199683629211233
623
+ },
624
+ "weighted_90_10": {
625
+ "recall@10": 0.1795333333333333,
626
+ "recall@20": 0.22513333333333332,
627
+ "mrr@20": 0.32094485105537734,
628
+ "weighted_ndcg@20": 0.20800683530362363
629
+ },
630
+ "bge_dense_sparse_colbert": {
631
+ "recall@10": 0.034866666666666664,
632
+ "recall@20": 0.0596,
633
+ "mrr@20": 0.07037315029311933,
634
+ "weighted_ndcg@20": 0.042085814650551334
635
+ },
636
+ "experiment_d": {
637
+ "recall@10": 0.08233333333333333,
638
+ "recall@20": 0.1146,
639
+ "mrr@20": 0.17114001471524692,
640
+ "weighted_ndcg@20": 0.09664569797242636
641
+ }
642
+ },
643
+ "tagalog": {
644
+ "dense": {
645
+ "recall@10": 0.020399999999999998,
646
+ "recall@20": 0.03146666666666667,
647
+ "mrr@20": 0.028791832024184966,
648
+ "weighted_ndcg@20": 0.021535951767842468
649
+ },
650
+ "weighted_genome": {
651
+ "recall@10": 0.113,
652
+ "recall@20": 0.15913333333333332,
653
+ "mrr@20": 0.20866535971768166,
654
+ "weighted_ndcg@20": 0.13899708645910142
655
+ },
656
+ "weighted_90_10": {
657
+ "recall@10": 0.12653333333333333,
658
+ "recall@20": 0.15839999999999999,
659
+ "mrr@20": 0.2415775072880336,
660
+ "weighted_ndcg@20": 0.1476991153984826
661
+ },
662
+ "bge_dense_sparse_colbert": {
663
+ "recall@10": 0.025133333333333334,
664
+ "recall@20": 0.038933333333333334,
665
+ "mrr@20": 0.02806269245030855,
666
+ "weighted_ndcg@20": 0.023737359405911092
667
+ },
668
+ "experiment_d": {
669
+ "recall@10": 0.05946666666666667,
670
+ "recall@20": 0.08646666666666666,
671
+ "mrr@20": 0.0965606646535439,
672
+ "weighted_ndcg@20": 0.06587183031995107
673
+ }
674
+ }
675
+ },
676
+ "mean_seconds_per_query": 2.1415414981744654,
677
+ "note": "Exploratory validation sample only. Question IDs are the independent units; translations are averaged within q_id."
678
+ }