Elasticsearch dispose d'intégrations natives avec les outils et fournisseurs d'IA générative leaders du secteur. Consultez nos webinars sur le dépassement des bases de RAG ou sur la création d'applications prêtes à l'emploi avec la Base vectorielle Elastic.
Pour élaborer les meilleures solutions de recherche pour votre cas d'utilisation, commencez un essai gratuit d'Elastic Cloud ou essayez Elastic sur votre machine locale dès maintenant.
Dans cet article, nous allons apprendre à connecter des modèles locaux au modèle d'inférence d'Elasticsearch à l'aide d'Ollama, puis à poser des questions à vos documents à l'aide de Playground.
Elasticsearch permet aux utilisateurs de se connecter aux LLM à l'aide de l'API Open Inference, qui prend en charge des fournisseurs tels qu'Amazon Bedrock, Cohere, Google AI, Azure AI Studio, HuggingFace - en tant que service, entre autres.
Ollama est un outil qui vous permet de télécharger et d'exécuter des modèles LLM en utilisant votre propre infrastructure (votre machine/serveur local). Vous trouverez ici une liste des modèles disponibles qui sont compatibles avec Ollama.
Ollama est une excellente option si vous souhaitez héberger et tester différents modèles open source sans avoir à vous soucier des différentes façons dont chacun des modèles pourrait être configuré, ou de la façon de créer une API pour accéder aux fonctions du modèle, car Ollama s'occupe de tout.
L'API d'Ollama étant compatible avec l'API d'OpenAI, nous pouvons facilement intégrer le modèle d'inférence et créer une application RAG à l'aide de Playground.
Produits requis
- Elasticsearch 8.17
- Kibana 8.17
- Python
Étapes
- Mise en place du serveur Ollama LLM
- Création de mappings
- Indexation des données
- Poser des questions à l'aide de l'aire de jeu
Mise en place du serveur Ollama LLM
Nous allons mettre en place un serveur LLM pour le connecter à notre instance Playground en utilisant Ollama. Nous en aurons besoin :
- Téléchargez et exécutez Ollama.
- Utilisez ngrok pour accéder à votre serveur web local qui héberge Ollama sur Internet.
Télécharger et lancer Ollama
Pour utiliser Ollama, il faut d'abord le télécharger. Ollama est compatible avec Linux, Windows et macOS. Il vous suffit donc de télécharger la version d'Ollama compatible avec votre système d'exploitation ici. Une fois Ollama installé, nous pouvons choisir un modèle dans cette liste de LLMs supportés. Dans cet exemple, nous utiliserons le modèle llama3.2, un modèle général multilingue. Dans le processus d'installation, vous activerez l'outil de ligne de commande pour Ollama. Une fois qu'il est téléchargé, vous pouvez exécuter la ligne suivante :
Ce qui produira un résultat :
Une fois installé, vous pouvez le tester avec cette commande :
Posons une question :

Une fois le modèle en cours d'exécution, Ollama active une API qui s'exécute par défaut sur le port "11434". Faisons une demande à cette API, en suivant la documentation officielle :
Voici la réponse que nous avons reçue :
Notez que la réponse spécifique pour ce point d'accès est un flux.
Exposer un point de terminaison à l'internet en utilisant ngrok
Comme notre point d'extrémité fonctionne dans un environnement local, il n'est pas possible d'y accéder à partir d'un autre point, comme notre instance Elastic Cloud, via l'internet. ngrok nous permet d'exposer un port en offrant une IP publique. Créez un compte dans ngrok et suivez le guide d'installation officiel.
Une fois l'agent ngrok installé et configuré, nous pouvons exposer le port utilisé par Ollama :
Remarque : l'en-tête --host-header="localhost:11434" garantit que l'en-tête "Host" dans les demandes correspond à "localhost:11434."
L'exécution de cette commande renverra un lien public qui fonctionnera tant que le ngrok et le serveur Ollama fonctionneront localement.
Dans "Forwarding", nous pouvons voir que ngrok a généré une URL. Gardez-le pour plus tard.
Essayons à nouveau de faire une requête HTTP vers le point d'accès, en utilisant maintenant l'URL générée par le moteur de recherche :
La réponse devrait être similaire à la précédente.
Création de mappings
Point final ELSER
Pour cet exemple, nous allons créer un point de terminaison d'inférence à l'aide de l'API d'inférence d'Elasticsearch. En outre, nous utiliserons ELSER pour générer les enchâssements.
Pour cet exemple, imaginons que vous ayez une pharmacie qui vend deux types de médicaments :
- Médicaments nécessitant une ordonnance.
- Médicaments qui ne nécessitent pas d'ordonnance.
Cette information serait incluse dans le champ de description de chaque médicament.
Le LLM doit interpréter ce champ, c'est donc le mappage des données que nous utiliserons :
Le champ text_description stockera le texte brut des descriptions tandis que semantic_field, qui est un champ de type semantic_text, stockera les enchâssements générés par ELSER.
La propriété copy_to copiera le contenu des champs name et text_description dans le champ sémantique afin de générer les embeddings pour ces champs.
Indexation des données
Maintenant, indexons les données à l'aide de l'API _bulk.
Réponse :
Poser des questions à l'aide de l'aire de jeu
Playground est un outil Kibana qui vous permet de créer rapidement un système RAG en utilisant des index Elasticsearch et un fournisseur LLM. Vous pouvez lire cet article pour en savoir plus.
Connecter le programme local d'éducation et de formation tout au long de la vie à l'aire de jeux
Nous devons d'abord créer un connecteur qui utilise l'URL publique que nous venons de créer. Dans Kibana, allez sur Search>Playground et cliquez sur "Connect to an LLM".

Cette action fait apparaître un menu sur le côté gauche de l'interface Kibana. Cliquez ensuite sur "OpenAI".

Nous pouvons maintenant commencer à configurer le connecteur OpenAI.
Allez sur "Connector settings" et pour le fournisseur OpenAI, sélectionnez "Other (OpenAI Compatible Service)":

Configurons maintenant les autres champs. Pour cet exemple, nous nommerons notre modèle "medicines-llm". Dans le champ URL, utilisez celle générée par ngrok (/v1/chat/completions). Dans le champ "Modèle par défaut", sélectionnez "llama3.2". Nous n'utiliserons pas de clé API, vous pouvez donc saisir n'importe quel texte au hasard :

Cliquez sur "Sauvegarder" et ajoutez les médicaments de l'index en cliquant sur "Ajouter des sources de données":


Excellent ! Nous avons maintenant accès à Playground en utilisant le LLM que nous exécutons localement en tant que moteur RAG.

Avant de le tester, ajoutons des instructions plus spécifiques à l'agent et augmentons le nombre de documents envoyés au modèle à 10, afin que la réponse dispose du plus grand nombre possible de documents. Le champ contextuel sera semantic_field, qui comprend le nom et la description des médicaments, grâce à la propriété copy_to.

Posons maintenant la question : Puis-je acheter du Clonazepam sans ordonnance ? et voir ce qui se passe :
Comme prévu, nous avons obtenu la bonne réponse.
Étapes suivantes
L'étape suivante consiste à créer votre propre application ! Playground fournit un code script en Python que vous pouvez exécuter sur votre machine et adapter à vos besoins. Par exemple, en le plaçant derrière un serveur FastAPI pour créer un chatbot d'assurance qualité consommé par votre interface utilisateur.
Vous pouvez trouver ce code en cliquant sur le bouton Voir le code dans la partie supérieure droite de l'aire de jeux :

Et vous utilisez les clés de l'API Endpoints & pour générer la variable d'environnement ES_API_KEY requise dans le code.
Pour cet exemple particulier, le code est le suivant :
Pour que cela fonctionne avec Ollama, vous devez modifier le client OpenAI pour qu'il se connecte au serveur Ollama au lieu du serveur OpenAI. Vous pouvez trouver la liste complète des exemples OpenAI et des points de terminaison compatibles ici.
Il faut également changer le modèle en llama3.2 lors de l'appel de la méthode d'achèvement :
Ajoutons notre question : Puis-je acheter du Clonazepam sans ordonnance ? Pour la requête Elasticsearch :
Et aussi à l'appel d'achèvement avec quelques impressions, pour que nous puissions confirmer que nous envoyons les résultats d'Elasticsearch dans le cadre du contexte de la question :
Exécutons maintenant la commande
pip install -qU elasticsearch openai
python main.py
Vous devriez voir quelque chose comme ceci :
Conclusion
Dans cet article, nous pouvons voir la puissance et la polyvalence d'outils comme Ollama lorsque nous les utilisons avec l'API d'inférence Elasticsearch et Playground.
Après quelques étapes simples, nous avions une application RAG fonctionnelle avec un chat qui utilisait un LLM fonctionnant dans notre propre infrastructure à un coût nul. Cela nous permet également de mieux contrôler les ressources et les informations sensibles, tout en nous donnant accès à une variété de modèles pour différentes tâches.
Questions fréquentes
Qu'est-ce que l'Ollama ?
Ollama est un outil qui vous permet de télécharger et d'exécuter des modèles LLM en utilisant votre propre infrastructure (votre machine/serveur local).




