RAG jusqu'à zéro avec Ruby

DEV - 27/01
L'idée « Quelqu'un avez-vous envie de demander quelque chose à un LLM sur vos propres documents ?, peut...

L'idée

Si vous souhaitez quelque chose à un LLM sur vos propres documents ?, vous pourriez bien que ce soit exactement ce que vous avez à faire avec cette application.

Téléchargez un PDF ou un TXT, l'application le "digère" et vous pourrez alors faire des questions comme si vous étiez un expert dans ce document.

Emplacement du projet

https://github.com/Daniel-Penaloza/sinatra_rag

Exemple réel :

  • Subes la documentation d'utilisation des points de terminaison.
  • Questions : Que faut-il pour pouvoir faire une demande concernant un point de terminaison X ?
  • La IA vous répond en basandose SOLO dans cette documentation.

🧠 Composants Rag

  • Documents : Dans ce cas, nous utilisons des fichiers PDF ou des fichiers TXT.

  • Chargeurs de documents : Nous n'utilisons pas ici Langchain comme wrapper, nous utilisons le lecteur PDF Gem pour lire le texte d'un PDF et ensuite stocker ce texte.

  • Morceaux : J'appelle également des diviseurs de texte, pour garder les informations divisées et pour que cette manière soit la plus maniable.

  • Embeddings : avec ceci nous codifions le texte en représentations numériques (création de vecteurs).

  • Base de données vectorielles : utilisée pour protéger nos vecteurs.

Pile technologique

Qu'est-ce que ça faitTechnologie
Back-endRubis + Sinatra
Base de donnéesPostgreSQL + pgvecteur
Processus asynchroneSidekiq + Redis
LLMOpenAI (intégrations + chat)

Pourquoi est-ce Tech Stack ?

Ruby est la technologie la plus utilisée pour la programmation et dans ce cas seulement, elle entend fonctionner comme RAG sans utiliser de frameworks comme LangChain qui est un type de wrapper pour la plupart des LLM disponibles sur le marché.

Construire de cette manière m'aide à entendre chaque morceau de casse-tête et créer de cette manière que cette leçon puisse également être entendue.

Comment fonctionner

1. Subes un documento

Tu PDF ──> L'application lo guarda ──> Entrer dans la tête de processus
Entrer en mode plein écran Quitter le mode plein écran

2. L'application est en cours (en deuxième plan)

Document │ ▼ Extrae the texto │ ▼ La partie en petits morceaux (morceaux) │ ▼ Chaque morceau est converti en vecteurs (embeddings) │ ▼ Se garde dans la base de données
Entrer en mode plein écran Quitter le mode plein écran

¿Por qué en pedazos? Il est donc plus facile de rechercher des fragments petits que dans un document de 100 pages.

¿Por qué numeros? Parce que les ordinateurs comparent les numéros plus rapidement que le texte. Et c'est cool que ces chiffres capturent le signifié, pas seulement les paroles.

3. Vous avez une question

Votre question │ ▼ Vous serez envoyé en vecteurs (comme les documents) │ ▼ Recherchez les articles les plus demandés dans la base de données │ ▼ Le passa ces achats à l'IA comme contexte │ ▼ L'IA vous répondra en vous informant
Entrer en mode plein écran Quitter le mode plein écran

Structure du projet

RAG/ ├── app.rb # El cerebro de la app (rutas) ├── config/ │ └── sidekiq.rb # Config de jobs en background ├── db/ │ └── migrations/ # Structure de ...
[Courte citation de 8% de l'article original]
Loading...