IBHS commited on
Commit
d031515
·
verified ·
1 Parent(s): 42794cc

Upload folder using huggingface_hub

Browse files
Files changed (5) hide show
  1. .DS_Store +0 -0
  2. .gitignore +2 -1
  3. articles_db.csv +57 -60
  4. chroma_store/chroma.sqlite3 +2 -2
  5. main.py +19 -82
.DS_Store CHANGED
Binary files a/.DS_Store and b/.DS_Store differ
 
.gitignore CHANGED
@@ -127,4 +127,5 @@ dmypy.json
127
 
128
  # Pyre type checker
129
  .pyre/
130
- .idea
 
 
127
 
128
  # Pyre type checker
129
  .pyre/
130
+ .idea
131
+ Articles
articles_db.csv CHANGED
@@ -1,60 +1,57 @@
1
- id,Title,Link,Context,Category,SourceType,FileName,Description
2
- 1,2020 FORTIFIED Standard,https://fortifiedhome.org/wp-content/uploads/2020-FORTIFIED-Home-Standard.pdf,Re-Roofing and Roof,Construction Standards,file,2020_fortified_standard.pdf,Short description …
3
- 2,Sealed Roof Deck Supplemental Deck Attachment,https://fortifiedhome.org/wp-content/uploads/2015-04_technical-bulletin_sealed-roof-deck-supplemental-deck-attachment.pdf,Sealed Roof Deck,Technical Bulletin,file,sealed_roof_deck_supplemental_deck_attachment.pdf,Short description …
4
- 3,Roof Flashing,https://fortifiedhome.org/wp-content/uploads/2017-01_technical-bulletin_flashing.pdf,Roof Flashing,Technical Bulletin,file,roof_flashing.pdf,Short description …
5
- 4,Metal Panel Roof Covering Guidance,https://fortifiedhome.org/wp-content/uploads/2019-01_technical-bulletin_metal-roof-panel-selection_revised.pdf,Metal Panel and Roof,Technical Bulletin,file,metal_panel_roof_covering_guidance.pdf,Short description …
6
- 5,Design Pressure Guidance for Roof Coverings,https://fortifiedhome.org/wp-content/uploads/2020-01_technical-bulletin_design-pressure-guidance-for-roof-coverings_revised.pdf,Roof and Sealed Roof Deck,Technical Bulletin,file,design_pressure_guidance_for_roof_coverings.pdf,Short description …
7
- 6,Garage Door Requirements,https://fortifiedhome.org/wp-content/uploads/2021-01_technical-bulletin_garage-door-requirements.pdf,General,Technical Bulletin,file,garage_door_requirements.pdf,Short description …
8
- 7,PA - Vycor Product Advisory,https://fortifiedhome.org/wp-content/uploads/Vycor_Product_Advisory.pdf,General,Technical Bulletin,file,pa_vycor_product_advisory.pdf,Short description …
9
- 8,Corrosion Resistant Fasteners,https://fortifiedhome.org/wp-content/uploads/TB_FH_2021-02.pdf,"New Roof, Re-Roofing, Retrofit, and Roof",Technical Bulletin,file,corrosion_resistant_fasteners.pdf,Short description …
10
- 9,Sealed Roof Deck for Wood Shake and Shingle Roof Systems,https://fortifiedhome.org/wp-content/uploads/TB-FH-2021-03_SRD_options_for_wood_shake.pdf,"Re-Roofing, Retrofit, and Roof",Technical Bulletin,file,sealed_roof_deck_for_wood_shake_and_shingle_roof_systems.pdf,Short description …
11
- 10,IBHS Guidance Choosing the Right Tape,https://fortifiedhome.org/wp-content/uploads/Choosing-the-Right-Tape_FINAL.pdf,Roof,Technical Bulletin,file,ibhs_guidance_choosing_the_right_tape.pdf,Short description …
12
- 11,Roof Sheathing Nail Pattern Documentation Requirements,https://fortifiedhome.org/wp-content/uploads/TB_FH_2022_01-Roof-Sheathing-Attachment-Documentation.pdf,Roof,Technical Bulletin,file,roof_sheathing_nail_pattern_documentation_requirements.pdf,Short description …
13
- 12,FORTIFIED Roof Identification,https://fortifiedhome.org/wp-content/uploads/FORTIFIED-ROOF-IDENTIFICATIONR10.pdf,Roof,Technical Bulletin,file,fortified_roof_identification.pdf,Short description …
14
- 13,The FORTIFIED Definition of Roof,https://fortifiedhome.org/wp-content/uploads/TB_FH_2022-02-Definition-of-Roof.pdf,Roof,Technical Bulletin,file,the_fortified_definition_of_roof.pdf,Short description …
15
- 14,FORTIFIED Home Requirements for Elevated Roof-Mounted Decks,https://fortifiedhome.org/wp-content/uploads/TB_FH_2022-03-Elevated-Rooftop-Decks.pdf,Roof and Sealed Roof Deck,Technical Bulletin,file,fortified_home_requirements_for_elevated_roof_mounted_decks.pdf,Short description …
16
- 15,Product Substitution Due to Supply Chain Issues and Product Availability,https://fortifiedhome.org/wp-content/uploads/TB_FH_2022_04-Supply-Chain-Issues.pdf,Roof,Technical Bulletin,file,product_substitution_due_to_supply_chain_issues_and_product_availability.pdf,Short description …
17
- 16,Requirements for Re-Roofing Over Existing Self-Adhered Membranes,https://fortifiedhome.org/wp-content/uploads/TB_FH_2022-05-Reroofing-Over-Self-Adhered-Membranes.pdf,General,Technical Bulletin,file,requirements_for_re_roofing_over_existing_self_adhered_membranes.pdf,Short description …
18
- 17,Foundation Requirements for FORTIFIED Home Eligibility,https://fortifiedhome.org/wp-content/uploads/TB_FH_2022-06-Foundation-Requirements-FORTIFIED-Home.pdf,Roof,Technical Bulletin,file,foundation_requirements_for_fortified_home_eligibility.pdf,Short description …
19
- 18,Removal of Egress Requirement for Entry Doors,https://fortifiedhome.org/wp-content/uploads/TB-Update-Removal-of-Egress-Requirement.pdf,Roof,Technical Bulletin,file,removal_of_egress_requirement_for_entry_doors.pdf,Short description …
20
- 19,Product Advisory FH Eligibility of Existing Fiberglass Resin Deck Coatings as Roof Covers,https://fortifiedhome.org/wp-content/uploads/PA_FH_2023-01-Fiberglass-resin-deck-coatings-as-roof-covers.pdf,General,Technical Bulletin,file,product_advisory_fh_eligibility_of_existing_fiberglass_resin_deck_coatings_as_roof_covers.pdf,Short description …
21
- 20,Fastener Type Requirements for Asphalt Shingles and Drip Edge,https://fortifiedhome.org/wp-content/uploads/TB-Update-Fastener-Requirements-for-Asphalt-Shingles-and-Drip-Edge.pdf,Roof,Technical Bulletin,file,fastener_type_requirements_for_asphalt_shingles_and_drip_edge.pdf,Short description …
22
- 21,Eligibility and Compliance of Accessory Roof Structures,https://fortifiedhome.org/wp-content/uploads/TB-2023-03_Eligibility-and-Compliance-Accessory-Roof-Structures.pdf,General,Technical Bulletin,file,eligibility_and_compliance_of_accessory_roof_structures.pdf,Short description …
23
- 22,Use of Factory Seconds or Unlabeled Material in FORTIFIED,https://fortifiedhome.org/wp-content/uploads/TB_FH_2023-04-Factory-Seconds-or-Unlabeled-Materials.pdf,General,Technical Bulletin,file,use_of_factory_seconds_or_unlabeled_material_in_fortified.pdf,Short description …
24
- 23,FORTIFIED Requirements for Cement and Clay Hip and Ridge Tile Installed Over Asphalt Shingle Roof Cover,https://fortifiedhome.org/wp-content/uploads/TB_FH_2023-05-Ridge-or-Hip-Tiles-with-Asphalt-Shingles.pdf,General,Technical Bulletin,file,fortified_requirements_for_cement_and_clay_hip_and_ridge_tile_installed_over_asphalt_shingle_roof_cover.pdf,Short description …
25
- 24,2-ply Synthetic Underlayment is an Approved Sealed Roof Deck Option on Asphalt Shingle and Metal Roofs,https://fortifiedhome.org/wp-content/uploads/TB_FH_2023-06-2-Ply-Synthetic-SRD-Method.pdf,General,Technical Bulletin,file,2_ply_synthetic_underlayment_is_an_approved_sealed_roof_deck_option_on_asphalt_shingle_and_metal_roofs.pdf,Short description …
26
- 25,FORTIFIED Home Requirements for Homes with Excessive Gaps Between Wood Decking Boards,https://fortifiedhome.org/wp-content/uploads/TB_FH_2023_07-Gapped-Decking.pdf,General,Technical Bulletin,file,fortified_home_requirements_for_homes_with_excessive_gaps_between_wood_decking_boards.pdf,Short description …
27
- 26,Eligibility Requirements for Homes Constructed to the HUD Code,https://fortifiedhome.org/wp-content/uploads/TB_2023_08-Eligibility-of-HUD-Homes.pdf,General,Technical Bulletin,file,eligibility_requirements_for_homes_constructed_to_the_hud_code.pdf,Short description …
28
- 27,FORTIFIED Guidance on Leaf Guards and Gutters,https://fortifiedhome.org/wp-content/uploads/TB_FH_2023-09-Leaf-Guards-and-Gutters.pdf,General,Technical Bulletin,file,fortified_guidance_on_leaf_guards_and_gutters.pdf,Short description …
29
- 28,Redesignation Policy Update,https://fortifiedhome.org/wp-content/uploads/TB_FH_2023-10-Redesignation-Policy-Update.pdf,General,Technical Bulletin,file,redesignation_policy_update.pdf,Short description …
30
- 29,Companion Details for Roll Widths Greater than 36 Inches,https://fortifiedhome.org/wp-content/uploads/Fastening-Synthetic-Underlayment.pdf,General,Technical Bulletin,file,companion_details_for_roll_widths_greater_than_36_inches.pdf,Short description …
31
- 30,Underlayment Fastening for Taped Seams and Underlayment Sealed Roof Deck Installations Using Rolls Wider Than 36 Inches,https://fortifiedhome.org/wp-content/uploads/TB_FH_2023-11-Underlayment-Fastening.pdf,General,Technical Bulletin,file,underlayment_fastening_for_taped_seams_and_underlayment_sealed_roof_deck_installations_using_rolls_wider_than_36_inches.pdf,Short description …
32
- 31, FORTIFIED Home Requirements for Elevated Roof-Mounted HVAC Units,https://fortifiedhome.org/wp-content/uploads/TB_FH_2024-01-Elevated-Roof-Mounted-HVAC-Units.pdf,Sealed Roof Deck,Technical Bulletin,file,fortified_home_requirements_for_elevated_roof_mounted_hvac_units.pdf,Short description …
33
- 32,FORTIFIED Guidance ‚Äì Rain Diverters,https://fortifiedhome.org/wp-content/uploads/TB_FH_2024-02-Rain-Diverters.pdf,Sealed Roof Deck,Technical Bulletin,file,fortified_guidance_rain_diverters.pdf,Short description …
34
- 33,Dog Doors in FORTIFIED Homes,https://fortifiedhome.org/wp-content/uploads/FH-2024-03-Dog-Doors-in-FORTIFIED-Homes.pdf,General,Technical Bulletin,file,dog_doors_in_fortified_homes.pdf,Short description …
35
- 34,Modular Home Starter Kit ‚Äì Full Set,https://fortifiedhome.org/wp-content/uploads/Modular-Home-Toolkit-2024.pdf,General,Modular Home,file,modular_home_starter_kit_full_set.pdf,Short description …
36
- 35,Post Storm Audit Processes,https://fortifiedhome.org/wp-content/uploads/Post-Storm-Audit-Processes.pdf,list_only,Technical Bulletin,file,post_storm_audit_processes.pdf,Short description …
37
- 36,FORTIFIED Roofing Contractor Handbook,https://fortifiedhome.org/wp-content/uploads/FORTIFIED_Roof_Contractor_Handbook.pdf,General,Hankbook,file,fortified_roofing_contractor_handbook.pdf,Short description …
38
- 37,FORTIFIED Evaluator Handbook,https://fortifiedhome.org/wp-content/uploads/FORTIFIED_Home_Evaluator_Handbook.pdf,General,Hankbook,file,fortified_evaluator_handbook.pdf,Short description …
39
- 38,FORTIFIED Professional Handbook,https://fortifiedhome.org/wp-content/uploads/FORTIFIED-Home-Professional-Handbook.pdf,General,Hankbook,file,fortified_professional_handbook.pdf,Short description …
40
- 39,Certified FORTIFIED Roofing Contractor Agreement,https://fortifiedhome.org/wp-content/uploads/FORTIFIED-Roofing-Contractor-Agreement_5-25-22.pdf,General,Agreement,file,certified_fortified_roofing_contractor_agreement.pdf,Short description …
41
- 40,Certified FORTIFIED Evaluator Agreement,https://fortifiedhome.org/wp-content/uploads/FORTIFIED_Home_Evaluator-Agreement.pdf,General,Agreement,file,certified_fortified_evaluator_agreement.pdf,Short description …
42
- 41,FORTIFIED Professional Agreement,https://fortifiedhome.org/wp-content/uploads/FORTIFIED-Professional-Agreement.pdf,General,Agreement,file,fortified_professional_agreement.pdf,Short description …
43
- 42,What to Do After a Hurricane,https://fortifiedhome.org/article/what-to-do-after-a-hurricane/,General,Article,web,,Short description …
44
- 43,Extend the Life of Your Roof,https://fortifiedhome.org/article/extend-the-life-of-your-roof/,General,Article,web,,Short description …
45
- 44,How to Select a Roofing Contractor,https://fortifiedhome.org/article/how-to-select-a-roofing-contractor/,General,Article,web,,Short description …
46
- 45,The Next Line of Defense,https://fortifiedhome.org/article/the-next-line-of-defense/,General,Article,web,,Short description …
47
- 46,9 Questions You Should Absolutely Ask your Roofer,https://fortifiedhome.org/article/9-questions-you-should-absolutely-ask-your-roofer/,General,Article,web,,Short description …
48
- 47,Strengthen Your Home Against Hurricanes and Severe Weather,https://fortifiedhome.org/article/strengthen-your-home-against-hurricanes-and-severe-weather/,General,Article,web,,Short description …
49
- 48,8 Ways to Know If You Need a New Roof,https://fortifiedhome.org/article/8-ways-to-know-if-you-need-a-new-roof/,General,Article,web,,Short description …
50
- 49,Defend Against Frozen Pipes,https://fortifiedhome.org/article/preventing-frozen-pipes/,General,Article,web,,Short description …
51
- 50,Hail Protection That Works,https://fortifiedhome.org/article/hail-protection-that-works/,General,Article,web,,Short description …
52
- 51,Shut the Door,https://fortifiedhome.org/article/shut-the-door/,General,Article,web,,Short description …
53
- 52,Don t Jeopardize Your Home s Resilience,https://fortifiedhome.org/article/dont-jeopardize-your-homes-resilience/,General,Article,web,,Short description …
54
- 53, Resilience gains ground as storms increase in frequency and intensity,https://fortifiedhome.org/article/resilience-gains-ground-as-storms-increase-in-frequency-and-intensity/,General,Article,web,,Short description …
55
- 54,Reinforce Your Property Against Hurricanes,https://fortifiedhome.org/article/reinforce-your-property-against-hurricanes/,General,Article,web,,Short description …
56
- 55,Can You Weather the Cost of The Next Storm?,https://fortifiedhome.org/article/can-you-weather-the-cost-of-the-next-storm/,General,Article,web,,Short description …
57
- 56,Is Your Building Code Leaving You Vulnerable to Severe Weather?,https://fortifiedhome.org/article/is-your-building-code-leaving-you-vulnerable-to-severe-weather/,General,Article,web,,Short description …
58
- 57,Renewing Your Designation,https://fortifiedhome.org/renew-your-designation/,General,Article,web,,Short description …
59
- 58,How to Become a FORTIFIED Certified Service Provider,https://fortifiedhome.org/how-to-become-fortified-certified/,General,Article,web,,Short description …
60
- 59,Frequently Asked Questions,https://fortifiedhome.org/frequently-asked-questions/,General,FAQ,web,,Short description …
 
1
+ id,title,file_name,link
2
+ 1,2008 Florida residential wind loss mitigation study.,2008_florida_residential_wind_loss_mitigation_study.pdf,https://www.floir.com/
3
+ 2,A Comparative Impact Assessment of Hail Damage to Tile and Built-Up Roofing Systems: Technical Review and Field Study,a_comparative_impact_assessment_of_hail_damage_to_tile_and_built_up_roofing_systems_technical_review_and_field_study.pdf,https://doi.org/10.20944/preprints202407.2020.v1
4
+ 3,"A comprehensive observational study of graupel and hail terminal velocity, mass flux, and kinetic energy",a_comprehensive_observational_study_of_grauple_and_hail_terminal_velocities_mass_flux_and_kinetic_energies.pdf,https://doi.org/10.1175/JAS-D-18-0035.1
5
+ 4,Analysis of Standing Seam Metal Roofs Subjected to Extreme Wind Loads,analysis_of_standing_seam_metal_roofs_subjected_to_extreme_wind_loads.pdf,https://ir.lib.uwo.ca/etd/8489/
6
+ 5,Asphalt Shingle Durability,asphalt_shingle_durability.pdf,https://ibhs.org/?a=download&key=34b09091cee84523c013ee3f7fde4ee1
7
+ 6,Asphalt Shingle Hail Impact Performance Guide,asphalt_shingle_hail_impact_performance_guide.pdf,https://ibhs.org/?a=download&key=645d49bb0ac86c1c50595cdc7d3f6adc
8
+ 7,Asphalt Shingle Patterns Identification Guide,asphalt_shingle_patterns_identification_guide_ibhs.pdf,https://ibhs.org/?a=download&key=3f3a09d69e82e7b2e171e531be8ef3a9
9
+ 8,"Cedar Rapids, Iowa and the 2020 Midwest Derecho: The Performance of Asphalt Shingle Roofs in Extreme Severe Convective Storm Winds",cedar_rapids_iowa_and_the_2020_midwest_derecho_the_performance_of_asphalt_shingle_roofs_in_extreme_severe_convective_storm_winds.pdf,https://ibhs.org/?a=download&key=e15f92e76ecd052fa60e183cc022fd4e
10
+ 9,Claims Analysis Study of May 24 2011 Hailstorms in Dallas-Fort Worth,claims_analysis_study_of_may_24_2011_hailstorms_in_dallas_fort_worth.pdf,https://ibhs.org/wp-content/uploads/Claims-Analysis-Study-of-May-24-2011-Hailstorms-in-Dallas-Fort-Worth.pdf
11
+ 10,"Community Collaborative Rain, Hail and Snow (CoCoRaHS) Measurement Program Reanalysis of Hailstorm Characteristics 1998-2018",community_collaborative_rain_hail_and_snow_(cocorahs)_measurement_program_reanalysis_of_hailstorm_characteristics_1998_2018.pdf,https://ibhs.org/?a=download&key=3749d26907ffc99bb6729e601e1ab341
12
+ 11,Damage Mechanics Based Analysis of Hail Impact on Metal Roofs,damage_mechanics_based_analysis_of_hail_impact_on_metal_roofs.pdf,https://doi.org/10.1016/j.engfracmech.2022.108688
13
+ 12,Developing a Test Method for a Very Severe Hail Rating for Low Slope Roofing Assemblies,developing_a_test_method_for_a_very_severe_hail_rating_for_low_slope_roofing_assemblies.pdf,https://doi.org/10.1520/STP159020150022
14
+ 13,Effects of hail on Metal Roofing Systems,the_effects_of_hail_on_metal_roofing_systems.pdf,https://iibec.org/wp-content/uploads/2014-CTS-koontz-white.pdf
15
+ 14,Evaluating the Hardness Characteristics of Hail through Compressive Strength Measurements,evaluating_the_hardness_characteristics_of_hail_through_compressive_strength_measurements.pdf,https://doi.org/10.1175/JTECH-D-15-0081.1
16
+ 15,Failure Mechanisms and Load Paths in a Standing Seam Metal Roof under Extreme Wind Loads,failure_mechanisms_and_load_paths_in_a_standing_seam_metal_roof_under_extreme_wind_loads.pdf,https://doi.org/10.1016/j.engstruct.2023.116954
17
+ 16,Full-Scale Study of Wind Loads on Roof Tiles and Felt Underlay and Comparisons With Design Data,full_scale_study_of_wind_loads_on_roof_tiles_and_felt_underlay_and_comparisons_with_design_data.pdf,https://dx.doi.org/10.12989/was.2007.10.6.495
18
+ 17,Full-Scale Testing to Evaluate the Performance of Standing Seam Metal Roofs Under Simulated Wind Loading,full_scale_testing_to_evaluate_the_performance_of_standing_seam_metal_roofs_under_simulated_wind_loading.pdf,https://doi.org/10.1016/j.engstruct.2015.10.006
19
+ 18,Full-scale Wind Tunnel Testing of North American and Australian Tile Roofing Systems,full_scale_wind_tunnel_testing_of_tile_roofing_systems_ibhs.pdf,https://ibhs.org/wind/full-scale-wind-tunnel-testing-of-roof-tile-systems/
20
+ 19,Hail damage threshold sizes for common roofing materials,hail_damage_threshold_sizes_for_common_roofing_materials.pdf,https://www.researchgate.net/publication/327022658_HAIL_DAMAGE_THRESHOLD_SIZES_FOR_COMMON_ROOFING_MATERIALS
21
+ 20,Hail Impact Performance of Low-Slope Metal Roofing,hail_impact_performance_of_low_slope_metal_roofing.pdf,https://ibhs.org/?a=download&key=9959d1924143a289caa917cecc9e80e0
22
+ 21,Hail in the Front Range of the Rockies and High Plains: Is it more damaging?,hail_in_the_front_range_of_the_rockies_and_high_plains_is_it_more_damaging.pdf,https://ibhs.org/?a=download&key=e1b999c263f65ada940d4d6b120ba69c
23
+ 22,Hailstone Shapes,hailstone_shapes.pdf,https://doi.org/10.1175/JAS-D-20-0250.1
24
+ 23,Hurricane Harvey Wind Damage Investigation,hurricane_harvey_wind_damage_investigation_ibhs.pdf,https://ibhs1.wpenginepowered.com/wp-content/uploads/wpmembers/files/Hurricane-Harvey-Wind-Damage-Investigation_IBHS.pdf
25
+ 24,Hurricane Ike Nature’s Force vs. Structural Strength,hurricane_ike_natures_force_vs_structural_strength_ibhs.pdf,https://ibhs.org/wp-content/uploads/member_docs/Hurricane-Ike-Natures-Force-vs-Structural-Strength_IBHS.pdf
26
+ 25,Hurricane Michael,ibhs_report_hurricane_michael_post_investigation.pdf,https://ibhs.org/?a=download&key=cbd8660b1421b0c86fdfaa05cebea7c8
27
+ 26,IBHS ASTM D3161Results by Manufacturer for Roof Slope and Installation Temperature,ibhs_astm_d3161_results_by_manufacturer_for_roof_slope_and_installation_temperature.pdf,https://ibhs.org/?a=download&key=2964423feb04da3e8a262313a8d1fdc1
28
+ 27,IBHS Impact Resistance Test Protocol for Asphalt Shingles,ibhs_impact_resistance_test_protocol_for_asphalt_shingles.pdf,https://ibhs.org/ibhs-impact-resistance-test-protocol-for-asphalt-shingles/
29
+ 28,IBHS Roof Aging Farm: Five-Year Hail Performance Summary,ibhs_roof_aging_farm_five_year_hail_performance_summary.pdf,https://ibhs.org/?a=download&key=f4b7e4d0d1f6f6c17d65671ddf469ec5
30
+ 29,IBHS Roof Aging Farm: Five-Year Wind Performance Summary,ibhs_roof_aging_farm_five_year_wind_performance_summary.pdf,https://ibhs.org/?a=download&key=ab89007603000da08a9aafc1db3e78bd
31
+ 30,Impact Resistance of Synthetic Composite Shingles,impact_resistance_of_synthetic_composite_shingles.pdf,https://ibhs.org/?a=download&key=d4363d52d5bb8867676d1a9bcc2e81b2
32
+ 31,Impact testing of high concentrations of small hail,impact_testing_of_high_concentrations_of_small_hail.pdf,https://ibhs.org/?a=download&key=5d014d376a0d334c3633317bf93e76d6
33
+ 33,Impact-Resistant Shingle Performance Ratings,impact_resistant_shingle_performance_ratings_–_insurance_institute_for_business_&_home_safety.pdf,https://ibhs.org/hail/shingle-performance-ratings/
34
+ 34,Investigation of the Wind Resistance of Asphalt Shingles,investigation_of_the_wind_resistance_of_asphalt_shingles.pdf,https://doi.org/10.1061/9780784412626.045
35
+ 35,New Asphalt Shingle Hail Impact Performance Test Protocol and Damage Assessment,new_asphalt_shingle_hail_impact_performance_test_protocol_and_damage_assessment_natural_hazards_review.pdf,https://doi.org/10.1061/(ASCE)NH.1527-6996.0000509
36
+ 36,Observations of Building Performance in southwest Florida during Hurricane Ian (2022): Roof Cover Damage Assessment on Residential and Light Commercial Structures,building_performance_in_southwest_florida_during_hurricane_ian_2022_part_i.pdf,https://ibhs.org/wind/building-performance-in-sw-florida-during-hurricane-ian-2022/
37
+ 37,Observations of Building Performance in southwest Florida during Hurricane Ian 2022: Performance of the Florida Building Code,building_performance_in_hurricane_ian_partii_fbc.pdf,https://ibhs1.wpenginepowered.com/wp-content/uploads/HurricaneIan_PartII_FBC.pdf
38
+ 38,Performance of Metal Roofing to Realistic Wind Loads and Evaluation of Current Test Standards,performance_of_metal_roofing_to_realistic_wind_loads_and_evaluation_of_current_test_standards_icwe_ibhs.pdf,https://ibhs.org/wp-content/uploads/member_docs/Performance-of-Metal-Roofing-to-Realistic-Wind-Loads_ICWE_IBHS.pdf
39
+ 39,Performance of Roof Tiles under Simulated Hurricane Impact,performance_of_roof_tiles_under_simulated_hurricane_impact.pdf,https://doi.org/10.1061/(ASCE)1076-0431(2009)15:1(26)
40
+ 40,Post-2004 Hurricane Field Survey of Residential Building Performance,post_2004_hurricane_field_survey_of_residential_building_performance.pdf,https://doi.org/10.1061/(ASCE)NH.1527-6996.0000044
41
+ 41,Prediction of extent of damage to metal roof panels under hail impact,prediction_of_extent_of_damage_to_metal_roof_panels_under_hail_impact.pdf,https://doi.org/10.1016/j.engstruct.2019.02.036
42
+ 42,Relative Impact Resistance of Asphalt Shingles Summary of UL2218 Impact Tests,relative_impact_resistance_of_asphalt_shingles_summary_of_ul2218_impact_tests_ibhs.pdf,https://ibhs1.wpenginepowered.com/wp-content/uploads/wpmembers/files/Relative-Impact-Resistance-of-Asphalt-Shingles_IBHS.pdf
43
+ 43,Study of wind loads on asphalt shingles using full-scale experimentation,study_of_wind_loads_on_asphalt_shingles_using_full_scale_experimentation.pdf,http://dx.doi.org/10.1016/j.jweia.2022.105005
44
+ 44,Surviving nature's fury: Performance of asphalt shingle roofs in the real world,surviving_natures_fury_performance_of_asphalt_shingle_roofs_in_the_real_world_ibhs.pdf,https://ibhs.org/wp-content/uploads/member_docs/Surviving-Natures-Fury-Performance-of-Asphalt-Shingle-Roofs-in-the-Real-World_IBHS.pdf
45
+ 45,Terminal velocities and kinetic energies of natural hailstones,geophysical_research_letters___2014___heymsfield___terminal_velocities_and_kinetic_energies_of_natural_hailstones.pdf,https://doi.org/10.1002/2014GL062324
46
+ 46,The Effect of Roof Age on Asphalt Shingle Performance: Hurricane Rita to Hurricane Laura,the_effect_of_roof_age_on_asphalt_shingle_performance_hurricane_rita_to_hurricane_laura.pdf,https://ibhs.org/?a=download&key=a02fc5cec325e2120de41895fbb47933
47
+ 47,Using 3D Laser Scanning Technology to Create Digital Models of Hailstones,using_3d_laser_scanning_technology_to_create_digital_models_of_hailstones.pdf,https://doi.org/10.1175/BAMS-D-15-00314.1
48
+ 48,Water Leakage Vulnerabilities for Shingles With Hail Damage,water_leakage_vulnerabilities_for_shingles_with_hail_damage.pdf,https://ibhs.org/?a=download&key=4953e3320e70248b837125ddeddbba01
49
+ 49,Wind Damage to Envelopes of Houses and Consequent Insurance Losses,wind_damage_to_envelopes_of_houses_and_consequent_insurance_losses.pdf,https://doi.org/10.1016/0167-6105(94)90023-X
50
+ 50,Wind Effects on Roofs with High Profile Tiles: Experimental Study,wind_effects_on_roofs_with_high_profile_tiles_experimental_study.pdf,https://doi.org/10.1061/(ASCE)AE.1943-5568.0000156
51
+ 51,"Wind Loading on Ridge, Hip, and Perimeter Roof Tiles: A Full-Scale Experimental Study",wind_loading_on_ridge_hip_and_perimeter_roof_tiles__a_full_scale_experimental_study.pdf,https://doi.org/10.1016/j.jweia.2017.04.002
52
+ 52,Wind Loads on Discontinuous Metal Roofing,wind_loads_on_discontinuous_metal_roofing_ibhs.pdf,https://ibhs.org/wp-content/uploads/member_docs/Wind-Loads-on-Discontinuous-Metal-Roofing_IBHS.pdf
53
+ 53,Wind Loads on Discontinuous Metal Roofing – Executive Summary,wind_loads_on_discontinuous_metal_roofing_executive_summary_ibhs.pdf,https://ibhs.org/?a=download&key=7e7fa645e98982df9dee911ca8904bc1
54
+ 54,Wind Uplift of Asphalt Shingles: Sensitivity to Roof Slope and Installation Temperature,wind_uplift_of_asphalt_shingles_ibhs.pdf,https://ibhs1.wpenginepowered.com/wp-content/uploads/wpmembers/files/Wind-Uplift-of-Asphalt-Shingles_IBHS.pdf
55
+ 55,Wind Uplift Resistance of Artificially and Naturally Aged Asphalt Shingles,wind_uplift_resistance_of_artificially_and_naturally_aged_asphalt_shingles.pdf,https://doi.org/10.1061/(ASCE)AE.1943-5568.0000158
56
+ 56,Wind Vulnerability Analysis of Standing Seam Roof System Considering Fatigue Damage,wind_vulnerability_analysis_of_standing_seam_roof_system_considering_fatigue_damage.pdf,https://doi.org/10.1016/j.tws.2023.110550
57
+ 57,Evaluating Hail Damage Using Property Insurance Claims Data,evaluating_hail_damage_using_property_insurance_claims_data.pdf,https://doi.org/10.1175/WCAS-D-15-0011.1
 
 
 
chroma_store/chroma.sqlite3 CHANGED
@@ -1,3 +1,3 @@
1
  version https://git-lfs.github.com/spec/v1
2
- oid sha256:a7e2afd1ab05004fdd615c6e13ced29d11e0a8ecad6188c4f3cb1006073f23f4
3
- size 9400320
 
1
  version https://git-lfs.github.com/spec/v1
2
+ oid sha256:a7c01e5e0c9cdeaee0314bcfd0f09a4dbcb9c733650c346bbe0cef1de56e68f7
3
+ size 38989824
main.py CHANGED
@@ -13,36 +13,16 @@ import gradio as gr
13
  import pandas as pd
14
  import logging
15
  from langchain_core.exceptions import OutputParserException
16
- from langchain_core.prompts import MessagesPlaceholder
17
  import os
18
- import uuid
19
- import uuid
20
- import hashlib
21
-
22
- from langchain_community.chat_message_histories import ChatMessageHistory
23
- from langchain_core.chat_history import BaseChatMessageHistory
24
- from langchain_core.messages import (
25
- AIMessage,
26
- HumanMessage,
27
- SystemMessage,
28
- ToolMessage,
29
- trim_messages,
30
- )
31
-
32
 
33
  # Constants
34
  PERSIST_DIRECTORY = "chroma_store"
35
  K_VALUE = 5
36
- store = {}
37
-
38
- xml_system = """You are a helpful AI assistant for the FORTIFIED program, a voluntary initiative for construction
39
- and re-roofing designed to strengthen homes and commercial buildings against severe weather threats, including
40
- high winds, hail, hurricanes, and tornadoes. Your users may include homeowners, insurance agents, realtors,
41
- design professionals and construction professionals. When given a user question, you should consult the provided
42
- technical and general documents containing FORTIFIED standards, instructions, and program information to deliver
43
- accurate and relevant responses. If the information necessary to answer the inquiry is not available within these
44
- documents, simply respond: ‘There is no information relevant to your inquiry in our current resources.
45
- Please contact FORTIFIED customer support for further assistance.’
46
  Remember, you must return both an answer and citations. A citation consists of a VERBATIM quote that
47
  justifies the answer and the ID and also Source Name of the quote article. Return a citation for every quote across all articles
48
  that justify the answer. Use the following format for your final output:
@@ -58,25 +38,6 @@ Here are the articles:{context}"""
58
 
59
  xml_prompt = ChatPromptTemplate.from_messages([("system", xml_system), ("human", "{input}")])
60
 
61
- llm = ChatOpenAI(model="gpt-4o-mini", temperature=0)
62
-
63
- contextualize_q_system_prompt = (
64
- "Given a chat history and the latest user question "
65
- "which might reference context in the chat history, "
66
- "formulate a standalone question which can be understood "
67
- "without the chat history. Do NOT answer the question, "
68
- "just reformulate it if needed and otherwise return it as is."
69
- )
70
-
71
- contextualize_q_prompt = ChatPromptTemplate.from_messages(
72
- [
73
- ("system", contextualize_q_system_prompt),
74
- MessagesPlaceholder("chat_history"),
75
- ("human", "{input}"),
76
- ]
77
- )
78
-
79
- runnable = contextualize_q_prompt | llm
80
 
81
  def format_docs_xml(docs: List[Document]) -> str:
82
  formatted_docs = [
@@ -86,7 +47,7 @@ def format_docs_xml(docs: List[Document]) -> str:
86
  return f"\n\n<sources>\n{chr(10).join(formatted_docs)}\n</sources>"
87
 
88
 
89
-
90
  rag_chain_from_docs = (
91
  RunnablePassthrough.assign(context=(lambda x: format_docs_xml(x["context"])))
92
  | xml_prompt
@@ -102,12 +63,8 @@ chain = RunnablePassthrough.assign(context=retrieve_docs).assign(
102
  )
103
 
104
  def get_article_info(df, file_name):
105
- if ".pdf" in file_name:
106
- title = df[df["FileName"] == file_name]["Title"].iloc[0]
107
- link = df[df["FileName"] == file_name]["Link"].iloc[0]
108
- else:
109
- title = df[df["Link"] == file_name]["Title"].iloc[0]
110
- link = file_name
111
  return title, link
112
 
113
 
@@ -126,36 +83,12 @@ def vectordb_search(query):
126
  links.append(link)
127
  return "\n".join([f"- [{title}]({link})" for title, link in zip(titles, links)])
128
 
129
- def get_session_history(session_id: str) -> BaseChatMessageHistory:
130
- if session_id not in store:
131
- store[session_id] = ChatMessageHistory()
132
- return store[session_id]
133
-
134
-
135
- def generate_unique_string():
136
- mac = uuid.getnode()
137
- mac_str = f'{mac:012x}'
138
- try:
139
- with open('/proc/cpuinfo') as f:
140
- cpu_info = f.read()
141
- except FileNotFoundError:
142
- cpu_info = str(uuid.getnode())
143
- unique_string = hashlib.sha256((mac_str + cpu_info).encode()).hexdigest()
144
- return unique_string
145
 
146
  def llm_response(query):
147
  titles, links, res_titles, res_links = [], [], [], []
148
- unique_id = generate_unique_string()
149
- config = {"configurable": {"thread_id": unique_id }}
150
  try:
151
- filtered_history = trim_messages(get_session_history(unique_id).messages, strategy="last", token_counter=len, max_tokens=5,
152
- start_on="human", end_on=("human", "tool"), include_system=True,)
153
- modified_query = runnable.invoke({"input": query, "chat_history": filtered_history}).content
154
- result = chain.invoke({"input": modified_query}, config=config)
155
  answer = result['answer']['cited_answer'][0]["answer"]
156
- history = get_session_history(unique_id)
157
- history.add_user_message(modified_query)
158
- history.add_ai_message(answer)
159
  citations = result['answer']['cited_answer'][1]['citations']
160
  for citation in citations:
161
  edited_item = citation['citation'][1]["source"].replace("Articles/", "")
@@ -172,6 +105,8 @@ def llm_response(query):
172
  res_titles.append(res_title)
173
  if res_link not in res_links:
174
  res_links.append(res_link)
 
 
175
 
176
  # Build the answer with superscript citations
177
  answer_with_citations = f"{answer}"
@@ -182,29 +117,31 @@ def llm_response(query):
182
  citations_section = "\n\nCitations:\n" + "\n".join(
183
  [f"[{i}]: [{title}]({link})" for i, (title, link) in enumerate(zip(titles, links), start=1)]
184
  )
 
185
  # Combine answer and citations for final markdown output
186
  markdown_list = f"{answer_with_citations}{citations_section}"
187
- markdown_list += f"\n\n\nHere is a list of resources that can provide more information about your inquiry:\n"
188
  markdown_list += "\n".join(
189
  [f"- [{res_title}]({res_link})" for res_title, res_link in zip(res_titles, res_links)])
190
  except OutputParserException:
191
- markdown_list = "There is no information relevant to your inquiry in my current resources. Please contact [FORTIFIED customer support](https://fortifiedhome.org/contact/) for further assistance."
192
  return markdown_list
193
 
194
 
195
-
196
  with gr.Blocks() as demo:
197
- gr.Markdown("## FORTIFIED AI Assistant!")
198
- gr.Markdown("### I'll try to answer any questions related to FORTIFIED program. Tell me what's on your mind?")
199
  with gr.Row():
200
  with gr.Column():
201
  chatbot = gr.Chatbot(type="messages", height=400)
202
  msg = gr.Textbox(label="Hit the Enter to send your question", placeholder="What's on your mind?", show_copy_button=True)
203
  send = gr.Button("Send")
204
 
 
205
  def user(user_message, history: list):
206
  return "", history + [{"role": "user", "content": user_message}]
207
 
 
208
  def bot(history: list):
209
  bot_message = llm_response(history[-1]['content'])
210
  history.append({"role": "assistant", "content": ""})
@@ -217,4 +154,4 @@ with gr.Blocks() as demo:
217
  send.click(user, [msg, chatbot], [msg, chatbot], queue=False).then(bot, chatbot, chatbot)
218
 
219
  if __name__ == "__main__":
220
- demo.launch()
 
13
  import pandas as pd
14
  import logging
15
  from langchain_core.exceptions import OutputParserException
 
16
  import os
 
 
 
 
 
 
 
 
 
 
 
 
 
 
17
 
18
  # Constants
19
  PERSIST_DIRECTORY = "chroma_store"
20
  K_VALUE = 5
21
+
22
+ xml_system = """You're a helpful AI assistant. Given a user question and some scientific literature
23
+ documents which highlight research on different roof cover materials (e.g., asphalt shingles, metal, tile)
24
+ and their performance against natural hazards(e.g., wind, hail), answer the user
25
+ question. If none of the articles answer the question, simply say that there are no articles relevant to your inquiry.
 
 
 
 
 
26
  Remember, you must return both an answer and citations. A citation consists of a VERBATIM quote that
27
  justifies the answer and the ID and also Source Name of the quote article. Return a citation for every quote across all articles
28
  that justify the answer. Use the following format for your final output:
 
38
 
39
  xml_prompt = ChatPromptTemplate.from_messages([("system", xml_system), ("human", "{input}")])
40
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
41
 
42
  def format_docs_xml(docs: List[Document]) -> str:
43
  formatted_docs = [
 
47
  return f"\n\n<sources>\n{chr(10).join(formatted_docs)}\n</sources>"
48
 
49
 
50
+ llm = ChatOpenAI(model="gpt-4o-mini", temperature=0)
51
  rag_chain_from_docs = (
52
  RunnablePassthrough.assign(context=(lambda x: format_docs_xml(x["context"])))
53
  | xml_prompt
 
63
  )
64
 
65
  def get_article_info(df, file_name):
66
+ title = df[df["file_name"] == file_name]["title"].iloc[0]
67
+ link = df[df["file_name"] == file_name]["link"].iloc[0]
 
 
 
 
68
  return title, link
69
 
70
 
 
83
  links.append(link)
84
  return "\n".join([f"- [{title}]({link})" for title, link in zip(titles, links)])
85
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
86
 
87
  def llm_response(query):
88
  titles, links, res_titles, res_links = [], [], [], []
 
 
89
  try:
90
+ result = chain.invoke({"input": query})
 
 
 
91
  answer = result['answer']['cited_answer'][0]["answer"]
 
 
 
92
  citations = result['answer']['cited_answer'][1]['citations']
93
  for citation in citations:
94
  edited_item = citation['citation'][1]["source"].replace("Articles/", "")
 
105
  res_titles.append(res_title)
106
  if res_link not in res_links:
107
  res_links.append(res_link)
108
+ # markdown_list = f"{answer}\n\nCitations:\n" + "\n".join(
109
+ # [f"- [{title}]({link})" for title, link in zip(titles, links)])
110
 
111
  # Build the answer with superscript citations
112
  answer_with_citations = f"{answer}"
 
117
  citations_section = "\n\nCitations:\n" + "\n".join(
118
  [f"[{i}]: [{title}]({link})" for i, (title, link) in enumerate(zip(titles, links), start=1)]
119
  )
120
+
121
  # Combine answer and citations for final markdown output
122
  markdown_list = f"{answer_with_citations}{citations_section}"
123
+ markdown_list += f"\n\n\nHere is a list of articles that can provide more information about your inquiry:\n"
124
  markdown_list += "\n".join(
125
  [f"- [{res_title}]({res_link})" for res_title, res_link in zip(res_titles, res_links)])
126
  except OutputParserException:
127
+ markdown_list = "There are no articles relevant to your inquiry..."
128
  return markdown_list
129
 
130
 
 
131
  with gr.Blocks() as demo:
132
+ gr.Markdown("## Article Finder Based on Your Question!")
133
+ gr.Markdown("### Tell me what's on your mind, and I'll find you the most relevant articles.")
134
  with gr.Row():
135
  with gr.Column():
136
  chatbot = gr.Chatbot(type="messages", height=400)
137
  msg = gr.Textbox(label="Hit the Enter to send your question", placeholder="What's on your mind?", show_copy_button=True)
138
  send = gr.Button("Send")
139
 
140
+
141
  def user(user_message, history: list):
142
  return "", history + [{"role": "user", "content": user_message}]
143
 
144
+
145
  def bot(history: list):
146
  bot_message = llm_response(history[-1]['content'])
147
  history.append({"role": "assistant", "content": ""})
 
154
  send.click(user, [msg, chatbot], [msg, chatbot], queue=False).then(bot, chatbot, chatbot)
155
 
156
  if __name__ == "__main__":
157
+ demo.launch(share=True)