Un moteur de recherche d'IA open source de base, modélisé après perplexité.ai. Si vous n'êtes pas familier avec une plate-forme de réponse aux questions alimentée par l'IA, ils utilisent un modèle de langage important comme Chatgpt pour répondre à vos questions, mais améliore le chatppt en ce qu'il tire des résultats de recherche précis et en temps réel pour compléter la réponse (donc pas de «coupure de connaissances»). Et répertorie les citations dans la réponse elle-même qui renforce la confiance qu'elle ne hallucine pas et vous permet de rechercher davantage des sujets.
search.php (recherchez "[Remplissez-moi]")Le principal défi avec les LLM comme Chatgpt est qu'ils ont des coupures de connaissances (et ils ont parfois tendance à halluciner). C'est parce qu'ils sont formés sur des données jusqu'à une date spécifique (par exemple, septembre 2021). Donc, si vous voulez une réponse à une question à jour ou si vous souhaitez simplement rechercher un sujet en détail, vous devrez augmenter la réponse par des sources pertinentes. Cette technique est connue sous le nom de RAG (génération augmentée de récupération). Et dans notre cas, nous pouvons simplement fournir les informations à jour LLM à partir de moteurs de recherche comme Google ou Bing.
Pour construire cela vous-même, vous voudrez d'abord vous inscrire à une clé API de Bing, Google (via Serper), Brave ou autres. Bing, Brave et Serper offrent tous une utilisation gratuite pour commencer.
Dans search.php , mettez votre clé API le cas échéant (recherchez "[Remplissez-moi]"). Pour cet exemple, j'ai du code pour Brave et Google via Serper.
Ici, vous devrez vous inscrire à une clé API d'un fournisseur LLM. Il y a beaucoup de fournisseurs à choisir maintenant. Par exemple, il y a Openai, Anthropic, Anyscale, Groq, CloudFlare, Perplexity, Lepton ou les grands joueurs comme AWS, Azure ou Google Cloud. J'en ai utilisé beaucoup avec succès et ils offrent un sous-ensemble de modèles fermés et open source actuels et populaires. Et chaque modèle a des forces uniques, des coûts différents et des vitesses différentes. Par exemple, le GPT-4 est très précis mais cher et lent. En cas de doute, je recommanderais d'utiliser le chatppt-3.5-turbo d'Openai. C'est assez bon, assez bon marché et assez rapide pour tester cela.
Heureusement, la plupart de ces fournisseurs de services LLM sont compatibles avec le format API d'OpenAI, donc passer à un autre fournisseur / modèle n'est qu'un travail minimal (ou simplement demander à un chatbot d'écrire le code!).
Dans search.php , mettez vos clés API le cas échéant (recherchez "[Remplissez-moi]"). Pour cet exemple, j'utilise OpenAI (pour ChatGPT-3.5-turbo / gpt-4) et Groq (pour Mixtral-8b7b). Donc, pour garder votre travail minimal, allez simplement obtenir des clés pour un ou les deux.
Lorsque vous souhaitez poser une question à un LLM, vous pouvez fournir beaucoup de contexte supplémentaire. Chaque modèle a sa propre limite unique et certaines d'entre elles sont très grandes. Pour GPT-4-Turbo, vous pouvez passer le long de l'ensemble du premier livre de Harry Potter avec votre question. Les Gemini 1.5 super puissants de Google peuvent prendre en charge une taille de contexte de plus d'un million de jetons. Cela suffit pour passer l'intégralité de la série Harry Potter de 7 livres!
Heureusement, passer les extraits de 8 à 10 résultats de recherche est beaucoup plus petit, vous permettant d'utiliser de nombreux modèles plus rapides (et beaucoup moins chers) comme GPT-3.5-turbo ou Mistral-7b.
D'après mon expérience, le passage de la question de l'utilisateur, le message d'invite personnalisé et les extraits de résultats de recherche sont généralement sous les jetons 1K. Ceci est bien sous les limites du modèle les plus basiques, donc cela ne devrait pas être un problème.
search.php a l'invite d'échantillon que je jouais avec vous. Chapeau à pointe des gens de Lepton AI qui a ouvert un projet similaire qui m'a aidé à affiner cette invite.
L'une des belles caractéristiques de la perplexité est la façon dont ils suggèrent des questions de suivi. Heureusement, c'est facile à reproduire.
Pour ce faire, vous pouvez passer un deuxième appel à votre LLM (en parallèle) pour vous poser des questions connexes. Et n'oubliez pas de transmettre à nouveau ces citations dans le contexte.
Ou, vous pouvez tenter de construire une invite afin que le LLM réponde à la question et pose des questions connexes. Cela économise un appel API et des jetons, mais il est un peu difficile de faire répondre à ces LLMS dans un format cohérent et reproductible.
Pour en faire un exemple complet, nous avons besoin d'une interface utilisateur utilisable. J'ai gardé l'interface utilisateur aussi simple que possible et tout est dans index.html . J'utilise Bootstrap, JQuery et certains CSS / JavaScript de base, Markdown et un surligneur de syntaxe JS pour y arriver.
Pour améliorer l'expérience, l'interface utilisateur fait ce qui suit:
Pour explorer un exemple de travail, consultez https://yaddleai.com. C'est surtout le même code bien que j'aie ajouté un deuxième appel de recherche parallèlement à Retrot Images, j'ai écrit une page distincte pour récupérer les dernières nouvelles et quelques autres améliorations mineures.