Show HN: Knowledge graph of restaurants and chefs, built using LLMs (theophilecantelob.re)
My latest side project is knowledge graph that maps the French culinary network using data extracted from restaurant reviews from LeFooding.com. The project uses LLMs to extract structured information from unstructured text.
Some technical aspects you may be interested in:
- Used structured generation to reliably parse unstructured text into a consistent schema
- Tested multiple models (Mistral-7B-v0.3, Llama3.2-3B, gpt4o-mini) for information extraction
- Created an interactive visualization using gephi-lite and Retina (WebGL)
- Built (with Claude) a simple Flask web app to clean and deduplicate the data
- Total cost for inferencing 2000 reviews with gpt4o-mini: less than 1€!
You can explore the visualization here: [Interactive Culinary Network](https://ouestware.gitlab.io/retina/1.0.0-beta.4/#/graph/?url...)
The code for the project is available on GitHub: - Main project: https://github.com/theophilec/foudinge - Data cleaning tool: https://github.com/theophilec/foudinge-scrub
Happy to get feedback!
44 comments
[ 3.9 ms ] story [ 105 ms ] threadI do wish it expanded out past French cuisine. It has its place, but I am very much tired of French cooking being held above other locales/styles
It's completely possible to expand the graph to other parts of the world. What source of reviews/info do you have in mind?
It appears the author/poster is using LLMs (OpenAI and Claude, specifically) to extract entity and relationship data to create a knowledge graph of French Restaurants and Chefs.
https://github.com/theophilec/foudinge-scrub/blob/0a2701756f...
It's worth mentionion that the Graph browser using "Retina" is a project from Ouestware (https://www.ouestware.com/en/) which is also contributor to the GraphCommons and GephiLite projects.
Yes, Retina and Gephi are great. In fact I noticed a bug which they fixed immediatly while making the project.
Example: https://imgur.com/a/7Cktyzp
This makes the graph look more random/noisy/disorganized than it actually is.
I made a mistake; I had checked the other link in your post ("You can explore the visualization here: [Interactive Culinary Network]") instead of the main link.
Edit: Seems to be a me issue.
Failed to create WebGL context: WebGL creation failed: * tryANGLE (FEATURE_FAILURE_EGL_NO_CONFIG) * Exhausted GL driver options. (FEATURE_FAILURE_WEBGL_EXHAUSTED_DRIVERS)
Glad its workin for others!
> At Grenat, Antoine Joannier and Neil Mahatsry are bathed in an ardent red glow, much like the pomegranate-toned walls of their space. After working together at La Brasserie Communale, where they first met, the duo is now firing on all cylinders in the heart of Marseille, where Antoine tends to guests seated around blonde wood tables, delivering dishes ignited by Neil behind the bar. From oysters to prime cuts of red meat, […]
I tried using NER models and the results were not great. Furthermore, these models do not extract relationships between entities (other models exist for that though). Haven't tried fine-tuning at all!
There is also a lot of variation in the ways of presenting a chef's prior restaurants, which makes this a good use-case for LLMs.
[1] https://gephi.org/gephi-lite/ [2] https://ouestware.gitlab.io/retina/1.0.0-beta.4/
I used sqlite everywhere so datasette was good for visualizing scraped and extracted data. Simon released structured generation for llm a few days after I did the project though, so I haven't tried yet.
Would like to here everyone's thoughts