Ce projet est un logiciel de Retrieval-Augmented Generation (RAG) développé en Node.js avec LangChain et Ollama. Conçu initialement pour être intégré dans un robot hexapode nommé Aash, il peut être utilisé pour d'autres applications. Ce logiciel utilise des modèles d'IA pour répondre à des questions basées sur des documents stockés et indexés.
- Retrieval-Augmented Generation (RAG) : Combine la récupération d'informations et la génération de texte pour fournir des réponses contextuellement pertinentes.
- Intégration avec Ollama : Utilise Ollama pour communiquer avec les modèles d'IA.
- Extensibilité : Permet d'ajouter des fichiers pour enrichir les connaissances de l'IA.
- Configuration Flexible : Peut être adapté pour divers cas d'utilisation en fonction des besoins spécifiques.
Avant de commencer, assurez-vous que vous avez installé les outils suivants :
-
Clonez le dépôt
git clone https://github.com/notpunchnox/RAG-Ollama cd RAG-Ollama
-
Installez les dépendances
npm install
-
Configurez Ollama
Assurez-vous que le serveur Ollama est en cours d'exécution à l'URL spécifiée dans le code (
http://localhost:11434
). Vous pouvez ajuster cette URL dans le fichier de configuration si nécessaire. -
Veuillez installer les modèles
Modèle d'embedding:
ollama pull nomic-embed-text
Modèle LLM ( Large Language Model ):
ollama pull gemma:2b
-
Configuration ( falcutatif )
Si vous désirez utiliser d'autres modèles vous pouvez changer la configuration du logiciel dans Config.json
{ "OLLAMA_API_URL": "http://localhost:11434",// Url de vôtre API Ollama "EMBEDDING_MODEL": "nomic-embed-text",// Modèle d'embedding "LLM_MODEL": "gemma:2b"// Modèle LLM }
Client ( CLI ): Vous pouvez utiliser le client cli pour poser des questions plus facilement à l'IA, pour se faire utilisez la commande suivante:
npm run client
-
Initialisation de l'embedding
Utilisez la fonction
InitEmbedding()
pour charger les fichiers dansTraining Data
pour les compresser, les transformer en documents puis les transformer en suites vectorielles pour les sauvegarder:InitEmbedding.js
.import InitLogic from "./src/controller/InitEmbedding.js"; const vectorStore = await InitEmbedding();
-
Poser des Questions
Utilisez le fichier
Question.js
pour poser des questions au modèle et obtenir des réponses basées sur les documents indexés.import Question from "./src/router/Question.js"; const prompt = 'Quels sont les avantages des robots hexapodes ?'; Question(prompt, 5, 'gemma:2b');//Tout les paramètres Question(prompt);//Les paramètres par défaut seront 3 et le modèle choisis dans le config.json
Ici,
prompt
est la question que vous souhaitez poser, et5
est le nombre maximum de résultats à renvoyer.
Pour rendre l'IA plus intelligente ou l'adapter à des contextes spécifiques :
-
Placez vos fichiers dans le dossier ./src/Training Data.
-
Formatez les documents en Markdown ou tout autre format texte que vous souhaitez ajouter.
Les fichiers ajoutés ne sont pas pris en compte automatiquement pour le moment, mais ce sera bientôt fait.
index.js
: Fichier principal contenant le code.src/
controller/
InitLogic.js
InitEmbedding.js
: Initialise l'embedding et met en mémoire les suites vectiorielles.Embedding.js
: Comporte la fonction Search permettant de trouver des élements pertinent dans la base de donnée vectiorielle.
router/
Question.js
: Gère les requêtes de questions et les réponses du modèle.
correctif/
embeddingOllama.js
: Correctif s'appliquant sur le packagelangchain
si le programme ne fonctionne pas ( ajoutant aussi un debugger pour trouver l'erreur )
Training Data/
: Contient les fichiers utilisés pour servir de contexte au modèle.
Ce projet est sous MIT License.
Développeur: punchnox