Matcher d'idée YC

Ce projet vous permet de soumettre votre idée et d'obtenir une liste d'idées similaires dans lesquelles Ycombinator a investi auparavant.
Le projet est construit en utilisant les technologies suivantes:
- Néon: postgres sans serveur
- PGVector: Extension postgres open-source pour le stockage vectoriel et la recherche de similitude
- Pilote de serveur néon
- Next.js: Flatstack Framework for React
- Vercel: plate-forme de déploiement
- API OpenAI: Génération des incorporations vectorielles
- TailwindCSS: Framework CSS-First utilitaire
- Upstash Redis: Redis sans serveur pour la limitation des taux
- ZOD: Validation de schéma TypeScript-First
- React Query: Bibliothèque de récupération et de mise en cache des données
- Vaul: composant de tiroir pour réagir.
Comment fonctionne l'application
Vous trouverez un script appelé generate-embeddings.ts
situé dans le répertoire racine de ce projet. Après l'exécution npm run generate-embeddings
, le script fait ce qui suit:
- Il crée le schéma de base de données et installe l'extension
pgvector
- Il passe par l'API Ycombinator 'https://api.ycombinator.com/v0.1/companies?page=1' et obtient toutes les entreprises
- Pour chaque entreprise, elle génère des intégres en utilisant la longue description, puis stocke les données de l'entreprise dans la base de données.
Certaines entreprises n'ont pas une longue description, nous devions donc les supprimer manuellement de la base de données en exécutant delete from companies WHERE embedding = ARRAY[]::real[];
L'application elle-même est une application Next.js avec une route API située à /api/idea
. Chaque fois qu'un utilisateur soumet une idée, ce qui suit se produit:
- L'idée est envoyée à l'API OpenAI pour générer une intégration
- Nous utilisons ensuite PGVector pour récupérer les 3 premières idées les plus similaires