Oceanographic data is vast, complex, and heterogeneous. The Argo program deploys autonomous profiling floats across the world's oceans generating extensive datasets in NetCDF format. Accessing this data requires domain knowledge and technical skills — creating barriers for non-technical users.
FloatChat bridges this gap by enabling natural language access to Indian Ocean Argo data.
🔗 https://ai-float-chat.streamlit.app
"What is the average temperature in Arabian Sea in 2023?"
"Show salinity profiles near equator in January 2024"
"How many floats are in the Indian Ocean?"
"Show float locations in Arabian Sea on 01-03-2026"
"Show temperature data in Bay of Bengal in 2024"
User Query (Natural Language)
↓
Streamlit Frontend
↓
Auto Fetch (if new date)
↓
ChromaDB RAG Pipeline
(Ocean knowledge context)
↓
Groq LLM (LLaMA 3.3-70B)
(NL → SQL generation)
↓
PostgreSQL Database
(3M+ ocean records)
↓
Answer + Visualization
(Maps, Graphs, Metrics)
| Layer | Technology | Purpose |
|---|---|---|
| Data Source | Argo GDAC (IFREMER) | NetCDF ocean data download |
| Data Processing | Python, xarray, numpy | NetCDF parsing |
| Relational DB | PostgreSQL 18 | Structured data storage |
| Vector DB | ChromaDB | Semantic search + RAG |
| Embeddings | sentence-transformers(all-MiniLM-L6-v2) | Text embeddings |
| LLM | Groq API (LLaMA 3.3-70B) | NL to SQL generation |
| Frontend | Streamlit | Chat UI + Dashboard |
| Visualization | Plotly | Maps + Graphs |
FloatChat/
├── backend/
│ ├── fetcher.py # Real-time NetCDF download + caching
│ ├── ingest.py # NetCDF → PostgreSQL ingestion pipeline
│ ├── sql_generator.py # NL to SQL via Groq LLM
│ └── rag.py # ChromaDB RAG pipeline
├── frontend/
│ └── app.py # Streamlit chat dashboard
├── models/
│ └── vector_store/ # ChromaDB persistent storage
├── database/
│ └── schema.sql # PostgreSQL table definitions
├── data/
│ ├── argo_cache/ # Downloaded NetCDF files (gitignored)
│ └── processed_dates.txt # Track ingested dates
├── .env # Environment variables (gitignored)
├── requirements.txt # Python dependencies
└── README.md
git clone https://github.com/YOUR_USERNAME/FloatChat.git
cd FloatChatpython -m venv venv
venv\Scripts\activate # Windows
source venv/bin/activate # Linux/Macpip install -r requirements.txtCreate .env file:
DB_HOST=localhost
DB_PORT=5432
DB_NAME=floatchat
DB_USER=postgres
DB_PASSWORD=your_password
GROQ_API_KEY=your_groq_api_keypsql -U postgres -c "CREATE DATABASE floatchat;"
psql -U postgres -d floatchat -f database/schema.sqlpython backend/fetcher.pypython backend/ingest.pypython backend/rag.pystreamlit run frontend/app.py| Metric | Value |
|---|---|
| Total Records | 3,038,710+ |
| Unique Argo Floats | 265 |
| Date Range | 2021 – 2026 (Realtime) |
| Region | Indian Ocean (0-26°N, 55-101°E) |
| Data Source | Argo GDAC — IFREMER |
FloatChat uses NLP at 4 stages:
- Intent Detection — Understanding what user wants
- Entity Extraction — Location, date, parameter extraction
- NL to SQL — Converting query to PostgreSQL SQL
- Response Generation — Human-friendly answer from DB results
- ChromaDB stores 15 ocean knowledge documents
- Covers Arabian Sea, Bay of Bengal, Indian Ocean facts
- Context retrieved before SQL generation for better accuracy
- ✅ Natural Language Chat — Ask questions in plain English
- ✅ Realtime Data — Auto-downloads latest Argo data
- ✅ Interactive Maps — Plotly geospatial float locations
- ✅ Temperature Graphs — Time series visualization
- ✅ Salinity Plots — Scatter plot visualization
- ✅ Depth Profiles — Temperature vs Depth charts
- ✅ Smart Caching — No duplicate downloads/ingestion
- ✅ RAG Pipeline — Context-aware SQL generation
- ✅ DB Stats — Live database statistics in sidebar
| Service | Purpose | Free Tier |
|---|---|---|
| Groq API | LLM for NL to SQL | Yes — Generous |
This project is licensed under the MIT License — see the LICENSE file for details.
Built with ❤️ for Indian Ocean Science