RAG for tabular data in Go with PostgreSQL & Gemini + FitSleepInsights (beta) release!

I’ve been working on this project for a while and I built everything missing from scratch: Auth2 Go client for the Fitbit API, storage, extended the PostgreSQL abstraction layer for Go galeone/igor, contributed to go-echarts adding the support for new charts, and so on…

Today I’m here to share that I publicly released the beta version of FitSleepInsights!

The application offers every Fitbit user a (hopefully) nice dashboard for sleep, health, and activities performed during the day. They can decide what date range to visualize, and - last but not least - they can chat with their data!

I also wrote an article about this feature.

In the article, I explored how to combine a large language model (LLM) with a relational database to allow users to ask questions about their data in a natural way. It demonstrates a Retrieval-Augmented Generation (RAG) system built with Go that utilizes PostgreSQL and pgvector for data storage and retrieval. The provided code showcases the core functionalities.

Article: https://pgaleone.eu/golang/vertexai/2024/04/06/rag-for-tabular-data-postgresql-gemini-go/

The whole project itself is quite interesting IMHO because of the various technologies used:

  • Dashboard created with echarts from Go
  • RAG integration for asking questions as explained in the article
  • Cloud-native architecture
  • Database: Postgres on Cloud SQL
  • Host: Cloud Run with spot instances
  • Domain: Google Domains with link to Cloud Run instance
  • Deployment from GitHub Actions

Source Code: GitHub - galeone/fitsleepinsights: Custom dashboard for Fitbit users. RAG support (gemini based) for chatting with your data and get insights about your fitness activities and sleep data

Modified by moderator


  • Access to the app is only possible for people with a Fitbit as it relies on the Fitbit APIs and the data that can be extracted from there.
  • The website is still under development and form sure will have some bugs.
  • There are features developed but not yet deployed - such as the Gemini integration with the charts, where we can ask the LLM to describe the chart