Skip to content
All projects

Vector Search · ML

Materials Similarity Search

From scattered lab spreadsheets to sub-second similarity search.

Built during my AptiSkills internship

composite materials structured (2,560 raw rows)
74
composite materials structured (2,560 raw rows)
explained variance (R²) on max stress
88%
explained variance (R²) on max stress
similarity search over 1,279 vectors
<1 s
similarity search over 1,279 vectors
manual lookup time
Hours → min
manual lookup time

01 Context

AptiSkills R&D internship on polymer composite materials, promising for type IV/V hydrogen tanks and extreme marine environments (MHK). Source data: the Sandia National Laboratories MHK Materials Database.

02 Problem

The experimental data lived in heterogeneous multi-sheet Excel files: scattered, non-standardised and hard to query. Engineers spent hours looking up materials with comparable properties by hand.

03 What I built

Architecture diagram: Materials Similarity SearchSOURCEMODELINTELLIGENCEPRODUCTSandia MHK DBmulti-sheet ExcelCleaningPandasSQLiteMatériau · Résine · EssaiRegressionR² 88%FAISS L21,279 vectorsStreamlit app
  1. 01

    Data cleaning - extraction and normalisation of the multi-sheet MHK database into a clean dataset.

  2. 02

    Relational model - SQLite schema Matériau / Résine / Essai, fed automatically.

  3. 03

    Regression - scikit-learn pipeline (LinearRegression with one-hot encoding) predicting maximum stress from fibre ratio, Young's modulus, max strain, thickness, cycles and resin type.

  4. 04

    Vector search - FAISS L2 index over normalised material vectors.

  5. 05

    Product - a Streamlit app to explore, filter, analyse mechanical performance and find similar materials.

04 In action

  • Streamlit interface of the materials similarity search
  • Similarity search form: fibre ratio, elastic modulus, strain, thickness, cycles
  • FAISS similarity results with feature-space visualisation

Screenshots from the project repository.

05 Results

  • composite materials structured (2,560 raw rows)74
  • explained variance (R²) on max stress88%
  • similarity search over 1,279 vectors<1 s
  • manual lookup timeHours → min

06 What I learned

  • Cleaning complex, heterogeneous multi-sheet data and modelling it relationally.
  • Supervised regression with a complete scikit-learn pipeline and feature standardisation.
  • Vector search with FAISS for fast multidimensional similarity.
  • Designing a Streamlit tool around engineers' real workflows, and running a one-month sprint with weekly deliverables.

07 What came next

Material Discovery Engine

A personal continuation outside the internship: the Streamlit prototype rebuilt as a production-ready REST API.

composite-materials-api
  • FAISS similarity search (IndexFlatL2) on 3,819 composite materials
  • 8 numerical features normalised with StandardScaler
  • FastAPI REST API with automatic documentation
  • Docker containerisation
  • 32 automated tests with pytest, GitHub Actions CI/CD
  • FastAPI
  • FAISS
  • SQLite
  • Docker
  • pytest
  • GitHub Actions

Next case study

NYC Taxi ETL

Copied