Améliorer l’intelligence et l’efficacité de ChatGPT : la puissance de LangChain et Milvus
Cet article a été initialement publié dans TheSequence et est republié ici avec autorisation.
Bien que ChatGPT ait gagné une popularité significative, avec de nombreuses personnes utilisant son API pour développer leurs chatbots ou explorer Langchain, il n’est pas sans défis.
ChatGPT peut souvent créer l’illusion de l’intelligence. Les utilisateurs peuvent interagir avec un chatbot qui emploie un jargon complexe, pour se rendre compte plus tard que le bot génère des réponses dénuées de sens ou fabrique des liens 404 inexistants.
Le stockage du contexte est un autre obstacle. ChatGPT ne conserve que les enregistrements de la session en cours, ce qui signifie qu’un bot entraîné il y a seulement quelques jours peut agir comme s’il n’avait aucun souvenir de la session. Cette « amnésie » souligne la nécessité d’un chatbot capable de préserver et de récupérer les données.
Le coût et les performances sont des considérations importantes lors de l’utilisation de ChatGPT ou même de modèles open source plus petits pour l’inférence. Dans de nombreux cas, cela peut être coûteux, nécessitant plusieurs A100 et beaucoup de temps. Les développements doivent résoudre les goulots d’étranglement en matière de performances avant d’intégrer de grands modèles de langage (LLM) dans des applications en temps réel.
L’amélioration de l’intelligence de ChatGPT est précisément là qu’intervient la combinaison de LangChain et de Milvus. Grâce à l’intégration de LangChain et de Milvus, les LLM peuvent exploiter la puissance des magasins vectoriels pour accroître l’intelligence et l’efficacité. Comment tout cela fonctionne-t-il ? Plongeons dans la puissance de LangChain et de Milvus dans les applications LLM, puis explorons comment créer et améliorer votre propre application de contenu généré par IA (AIGC).
LangChain pour les applications alimentées par les LLM
LangChain est un framework permettant de développer des applications alimentées par des modèles de langage. Le framework LangChain est conçu autour des principes suivants :
- Sensible aux données : connecter un modèle de langage à d’autres sources de données
- Agentique : permettre à un modèle de langage d’interagir avec son environnement
Le framework robuste de LangChain se compose d’une gamme de modules, tels que Models, Prompts, Memory, Indexes, Chains, Agents et Callbacks, qui sont les abstractions fondamentales pouvant être considérées comme les blocs de construction de toute application alimentée par un LLM. Pour chaque module, LangChain fournit des interfaces standard et extensibles. LanghChain fournit également des intégrations externes et même des implémentations de bout en bout prêtes à l’emploi.
Le wrapper LLM est au cœur des fonctionnalités de LangChain, offrant une multitude de fournisseurs de LLM tels qu’OpenAI, Cohere, Hugging Face, etc. Il fournit une interface standard à tous les LLM et inclut des outils courants pour travailler avec eux.
Base de données vectorielle pour les LLM
LangChain propose une gamme impressionnante de grands modèles de langage (LLM) pour répondre à divers besoins. Mais ce n’est pas tout. LangChain va au-delà des fondamentaux en intégrant diverses bases de données vectorielles telles que Milvus, Faiss et d’autres afin d’activer la fonctionnalité de recherche sémantique. Grâce à son wrapper VectorStore, LangChain standardise les interfaces nécessaires pour simplifier le chargement et la récupération des données. Par exemple, en utilisant la classe Milvus, LangChain permet de stocker des vecteurs de caractéristiques représentant des documents à l’aide de la méthode from_text. La méthode similarity_search récupère ensuite les vecteurs de l’énoncé de requête afin de trouver les documents les plus proches de la requête dans l’espace d’embedding, facilitant ainsi la recherche sémantique avec aisance.
En approfondissant le sujet, nous constatons que les bases de données vectorielles jouent un rôle important dans les applications LLM, comme le montre le chatgpt-retrieval-plugin. Mais leur utilité ne s’arrête pas là. Les bases de données vectorielles ont une multitude d’autres cas d’utilisation, ce qui en fait un composant indispensable des applications LLM :
- Les bases de données vectorielles facilitent le stockage basé sur le contexte, une fonctionnalité utile dans les plateformes LLM comme Auto-GPT et BabyAGI. Cette capacité améliore la compréhension contextuelle et la rétention des souvenirs.
- Les bases de données vectorielles fournissent une mise en cache sémantique pour les plateformes LLM comme GPTCache, ce qui optimise les performances et permet de réaliser des économies.
- Les bases de données vectorielles permettent des capacités de connaissance documentaire, telles que OSSChat, qui résolvent les hallucinations.
- Et bien plus encore.
Si vous souhaitez en savoir plus sur Milvus et Auto-GPT, vous pouvez lire cet article sur la façon dont Milvus alimente Auto-GPT. Dans la section suivante, vous découvrirez comment LangChain et Milvus peuvent résoudre les hallucinations.
Pourquoi LangChain + Milvus peut résoudre les hallucinations
En intelligence artificielle, il existe un dicton selon lequel le système générera fréquemment des « hallucinations », ce qui signifie inventer des faits sans rapport avec la réalité. Certains décrivent même ChatGPT comme « un type sûr de lui qui peut écrire des absurdités très convaincantes », et le problème des hallucinations nuit à la crédibilité de ChatGPT.
Les bases de données vectorielles illustrées dans le diagramme suivant répondent au problème des hallucinations. Tout d’abord, stockez les documents officiels sous forme de vecteurs de texte dans Milvus, puis recherchez les documents pertinents en réponse à la question (la ligne orange dans le diagramme). Chatgpt répond à la question en se basant sur le contexte correct, ce qui donne la réponse attendue (la ligne verte dans le diagramme).
Diagramme montrant Langchain, Milvus et ChatGPT
L’exemple ci-dessus montre que combiner Milvus et ChatGPT est très simple. Il n’est pas nécessaire d’étiqueter les données, de les entraîner ou de les développer, ni de les affiner – il suffit de convertir les données textuelles en données vectorielles et de les insérer dans Milvus. Le combo Langchain-Milvus-ChatGPT crée un stockage de texte, et la réponse finale est dérivée de la référence au contenu de la bibliothèque de documents.
Cela garantit que le chatbot reçoit les bonnes connaissances, réduisant efficacement la probabilité d’erreurs. Par exemple, en tant qu’administrateur de communauté, lorsque je dois répondre à des questions liées à la communauté, je peux stocker tous les documents de la documentation officielle de Milvus.
Lorsqu’un utilisateur demande : « Comment utiliser Milvus pour créer un chatbot », le chatbot répondra à la question en se basant sur la documentation officielle, en indiquant à l’utilisateur qu’elle fournit des exemples de création d’applications et d’extraction de documents pertinents. Ce type de réponse est fiable. En bref, nous n’avons pas besoin de tout réentraîner ni de tout traiter ; nous devons fournir à ChatGPT les connaissances contextuelles nécessaires. Lorsque nous envoyons une requête, le robot peut fournir un contexte lié au contenu officiel.
Vous sentez-vous enthousiaste après avoir découvert la puissance de Milvus et Langchain pour ChatGPT ? Si oui, préparez-vous à développer votre application. Faisons équipe et créons un chatbot amélioré en utilisant les incroyables capacités combinées de LangChain et Milvus !
Créez votre propre application avec LangChain et Milvus
0. Prérequis
Tout d’abord, installez LangChain à l’aide de la commande pip install langchain. Quant à Milvus, vous avez deux options à votre disposition. Vous pouvez soit installer et démarrer le Milvus open-source sur votre système local, soit opter pour l’option cloud afin d’essayer Zilliz – un service cloud-native pour Milvus qui propose une version d’essai gratuite. Zilliz est un service simple, accessible et robuste, nous allons donc découvrir comment utiliser Zilliz Cloud pour l’application, et LangChain en facilite l’utilisation.
1. Charger les données pour la base de connaissances
Tout d’abord, nous devons charger les données dans un format standard. En plus de charger le texte, nous devons le découper en petits morceaux. Cela est nécessaire pour nous assurer de ne transmettre au modèle de langage que les morceaux de texte les plus petits et les plus pertinents.
from langchain.embeddings.openai import OpenAIEmbeddings
from langchain.text_splitter import CharacterTextSplitter
from langchain.vectorstores import Milvus
from langchain.document_loaders import TextLoader
loader = TextLoader('state_of_the_union.txt')
documents = loader.load()
text_splitter = CharacterTextSplitter(chunk_size=1000, chunk_overlap=0)
docs = text_splitter.split_documents(documents)
Ensuite, maintenant que nous avons de petits fragments de texte, nous devons créer des embeddings pour chaque morceau de texte et les stocker dans un magasin vectoriel. La création d’embeddings est effectuée afin que nous puissions utiliser les embeddings pour trouver uniquement les morceaux de texte les plus pertinents à envoyer au modèle de langage. Cela se fait avec les lignes suivantes. Ici, nous utilisons les embeddings d’OpenAI et Zilliz Cloud.
embeddings = OpenAIEmbeddings()
vector_db = Milvus.from_documents(
docs,
embeddings,
connection_args={
"uri": "YOUR_ZILLIZ_CLOUD_URI",
"user": "YOUR_ZILLIZ_CLOUD_USERNAME",
"password": "YOUR_ZILLIZ_CLOUD_PASSWORD",
"secure": True
}
)
2. Interroger les données
Donc, maintenant que nous avons chargé les données, nous pouvons les utiliser dans une chaîne de questions-réponses.
Consultez l’extrait de code ci-dessous, qui traite la partie 3, « Résoudre les hallucinations », de cet article. Il peut vous aider à bien comprendre le concept.
Cela implique de rechercher des documents liés à notre requête donnée dans la base de connaissances. Pour ce faire, utilisez la méthode similarity_search pour générer le vecteur de caractéristiques de la requête, puis recherchez dans Zilliz Cloud les vecteurs présentant des correspondances similaires, ainsi que le contenu de document associé.
query = "What did the president say about Ketanji Brown Jackson"
docs = vector_db.similarity_search(query)
Exécutez ensuite load_qa_chain pour obtenir la réponse finale. Elle fournit l’interface la plus générique pour répondre aux questions. Elle charge une chaîne capable de faire du QA pour les documents d’entrée et utilise TOUT le texte des documents.
Le code ci-dessous utilise OpenAI comme LLM. Lors de l’exécution, la QAChain reçoit input_documents et question en entrée. Les input_documents sont les documents liés à la query dans la base de données. Ensuite, le LLM organise la réponse en fonction du contenu de ces documents et de la question posée.
from langchain.chains.question_answering import load_qa_chain
from langchain.llms import OpenAI
llm = OpenAI(temperature=0)
chain = load_qa_chain(llm, chain_type="stuff")
chain.run(input_documents=docs, question=query)
Pourquoi Milvus est meilleur pour l’application AIGC
Donc, si vous voulez rendre vos applications de contenu généré par l’intelligence artificielle (AIGC) plus fiables, disposer d’une base de données vectorielle représentant le texte est nécessaire. Mais pourquoi choisir la base de données vectorielle Milvus ?
- Recherche sémantique : Milvus stocke les vecteurs de caractéristiques sémantiques extraits, permettant une récupération sémantique intelligente et pratique, ce qui est difficile pour les bases de données traditionnelles. Les bases de données vectorielles rendent la récupération sémantique plus intelligente et pratique.
- Scalabilité : La prise en charge de la mise à l’échelle en cluster et dans le cloud permet de stocker et de récupérer facilement des milliards d’entités. La scalabilité est essentielle pour les applications où la vitesse et l’efficacité sont primordiales.
- Recherche hybride : Milvus prend en charge la recherche mixte de données vectorielles et scalaires, ce qui peut répondre à différents scénarios et exigences de recherche.
- API riches : Milvus fournit des API multilangages, notamment Python, Java, Go, Restful, et plus encore ; Milvus est facile à intégrer et à utiliser dans diverses applications.
- Intégrer les LLMs : Les intégrations avec plusieurs LLMs, notamment OpenAI Plugin, Langchain et LLamaIndex, permettent aux utilisateurs de personnaliser encore davantage leurs applications.
- Configurations multiples : Nous avons conçu Milvus pour prendre en charge de nombreux cas d’utilisation, de votre ordinateur portable local aux produits cloud tels que Milvus-lite, les conteneurs docker, les déploiements distribués et l’utilisation dans le cloud. Cela rend Milvus facilement adaptable à différentes tailles d’applications, prenant en charge aussi bien les petits projets que la récupération de données au niveau entreprise.
Étape suivante pour votre application
Dans le domaine de l’IA, de nouvelles avancées et technologies révolutionnaires apparaissent constamment et peuvent faire passer votre application au niveau supérieur. Ici, nous passerons en revue deux façons d’améliorer votre application : mettre en œuvre GPTCache et ajuster les modèles d’embedding et les prompts. Cela peut améliorer les performances et la qualité de recherche, différencier votre application et offrir une meilleure expérience utilisateur.
Améliorez les performances de votre application AIGC - GPTCache
Si vous souhaitez optimiser les performances et réduire les coûts de votre application AIGC, découvrez GPTCache. Ce projet innovant est conçu pour créer un cache sémantique destiné au stockage des réponses des LLMs.
Alors, en quoi cela aide-t-il ? En mettant en cache les réponses aux LLMs, et une base de données vectorielle pouvant récupérer des questions similaires pour obtenir la réponse mise en cache, votre application peut répondre rapidement et précisément aux utilisateurs. Avec GPTCache, accéder aux réponses mises en cache devient un jeu d’enfant — plus de génération redondante de réponses, ce qui permet finalement d’économiser du temps et des ressources de calcul. GPTCache va encore plus loin en améliorant l’expérience utilisateur globale. Fournir des réponses plus rapides et plus précises satisfera votre utilisateur, et votre application connaîtra davantage de succès.
Améliorez la qualité de votre recherche - ajustez vos modèles d’embedding et vos prompts
En plus d’utiliser GPTCache, l’ajustement fin de vos modèles d’embedding et de vos prompts peut améliorer la qualité de vos résultats de recherche. Les modèles d’embedding sont un composant crucial des applications d’IA, car ils constituent les éléments de base qui traduisent le texte en vecteurs numériques, que le deep learning peut traiter. En ajustant vos modèles d’embedding, vous pouvez améliorer la précision et la pertinence de vos résultats de recherche sémantique. Cela implique d’ajuster les modèles pour privilégier des mots-clés et expressions spécifiques, ainsi que de modifier leurs mécanismes de pondération et de notation afin de mieux refléter les besoins et préférences de votre public cible. Avec un modèle d’embedding bien entraîné, votre application AIGC peut interpréter et catégoriser avec précision les entrées utilisateur, ce qui conduit à des résultats de recherche plus précis.
En dehors de cela, les invites utilisées dans les applications jouent un rôle essentiel dans l’amélioration de la qualité des résultats de recherche. Les invites sont les phrases que votre IA utilise pour solliciter une saisie de la part des utilisateurs, comme « Comment puis-je vous aider aujourd’hui ? » ou « Qu’avez-vous en tête ? ». En testant et en modifiant ces invites, vous pouvez améliorer la qualité et la pertinence de vos résultats de recherche. Par exemple, si votre application est destinée à un secteur ou à un groupe démographique spécifique, vous pouvez adapter vos invites afin qu’elles reflètent le langage et la terminologie utilisés par ce groupe. Cela aide à guider les utilisateurs vers des requêtes de recherche plus pertinentes, ce qui conduit à une expérience plus satisfaisante en répondant plus précisément à leurs besoins. En affinant les invites pour répondre aux exigences des utilisateurs, vous pouvez les aider à effectuer des recherches plus fructueuses, ce qui conduit ainsi à une base d’utilisateurs plus satisfaite.
En fin de compte
En résumé, LangChain et Milvus sont les recettes parfaites pour les développeurs qui créent des applications alimentées par des LLM à partir de zéro. LangChain offre une interface standard et conviviale pour les LLM, tandis que Milvus fournit des capacités remarquables de stockage et de récupération. LangChain et Milvus peuvent améliorer l’intelligence et l’efficacité de ChatGPT, ce qui vous aide à dépasser les obstacles des hallucinations. Mieux encore, avec GPTCache, les technologies de réglage des invites et des modèles, nous pouvons améliorer nos applications d’IA d’une manière que l’on n’aurait jamais crue possible.
Alors que nous continuons à repousser les limites de l’IA, collaborons et créons un avenir plus radieux pour l’AIGC afin d’explorer le potentiel illimité de l’intelligence artificielle.
Continuer à lire

VidTok: Rethinking Video Processing with Compact Tokenization
VidTok tokenizes videos to reduce redundancy while preserving spatial and temporal details for efficient processing.

Legal Document Analysis: Harnessing Zilliz Cloud's Semantic Search and RAG for Legal Insights
Enhance legal document analysis with Zilliz Cloud’s Semantic Search and RAG. Improve accuracy, efficiency, and scalability for contracts, case law, and compliance.

Selecting the Right ETL Tools for Unstructured Data to Prepare for AI
Learn the right ETL tools for unstructured data to power AI. Explore key challenges, tool comparisons, and integrations with Milvus for vector search.



