Guide ultime pour bien démarrer avec LangChain
Avez-vous vu l’emoji perroquet + chaîne apparaître autour de l’IA ces derniers temps ? Ce sont les emojis emblématiques de LangChain. LangChain est un outil d’agent IA qui ajoute des fonctionnalités aux grands modèles de langage (LLMs) comme GPT. De plus, il inclut des fonctionnalités telles que la gestion des tokens, la gestion du contexte et les modèles de prompts. Pour ce tutoriel de démarrage, nous examinons deux exemples principaux de LangChain avec des cas d’utilisation réels. Premièrement, comment interroger GPT. Deuxièmement, comment interroger un document avec un notebook Colab disponible ici. Ce tutoriel LangChain vous guidera à travers le processus d’interrogation de GPT et de documents avec LangChain.
Dans ce tutoriel, nous couvrons :
- Qu’est-ce que LangChain ?
- Comment pouvez-vous exécuter des requêtes LangChain ?
- Interroger GPT
- Interroger un document
- Introduction au résumé de LangChain
Qu’est-ce que LangChain ?
LangChain est un framework pour créer des applications qui exploitent les grands modèles de langage. Il vous permet de créer rapidement avec le framework CVP. Les deux fonctionnalités principales de LangChain pour exploiter les grands modèles de langage sont 1) être conscient des données et 2) être agentique. La conscience des données est la capacité à intégrer des sources de données externes dans une application LLM. L’agentivité est la capacité à utiliser d’autres outils.
Comme avec de nombreux outils LLM, le LLM par défaut de LangChain est GPT d’OpenAI et vous avez besoin d’une clé API d’OpenAI pour l’utiliser. De plus, LangChain propose le LangChain Expression Language (LCEL) pour composer des chaînes complexes de traitement du langage, simplifiant la transition du prototypage à la production. En outre, LangChain fonctionne avec Python et JavaScript. Dans ce tutoriel, vous apprendrez son fonctionnement à l’aide d’exemples Python. Vous pouvez installer la bibliothèque Python via pip en exécutant pip install langchain.
Comment fonctionne LangChain ?
Le flux de questions-réponses de LangChain se compose de blocs de construction qui peuvent être facilement remplacés pour créer un modèle personnalisé selon les besoins individuels. Ces blocs incluent la question, l’embedding, les documents utilisés pour entraîner le modèle, le prompt construit et une réponse. LangChain utilise également des analyseurs de sortie pour gérer et affiner les réponses générées par les modèles de langage, garantissant des résultats structurés et pertinents. Par conséquent, si une entreprise souhaite une expérience de chat entraînée par des documents spécifiques, LangChain peut permuter les différents composants pour atteindre cet objectif.
Comment utiliser LangChain avec GPT et la base de données vectorielle Milvus ?
L’un des principaux cas d’utilisation de LangChain consiste à interroger des données textuelles. Vous pouvez l’utiliser pour interroger des documents, des magasins vectoriels, ou pour fluidifier vos interactions avec GPT, un peu comme LlamaIndex. Dans ce tutoriel, nous couvrons un exemple simple de la façon d’interagir avec GPT avec LangChain et d’interroger un document pour en extraire le sens sémantique à l’aide de LangChain avec un magasin vectoriel. Ce processus, connu sous le nom de génération augmentée par récupération (RAG), améliore les capacités des modèles de langage en incorporant des données externes pendant le processus de génération.
Interroger GPT
La familiarité de la plupart des gens avec GPT vient des conversations avec ChatGPT. ChatGPT est l’interface phare d’OpenAI pour interagir avec GPT. Cependant, si vous souhaitez interagir avec GPT par programmation, vous avez besoin d’une interface de requête comme LangChain. LangChain fournit une gamme d’interfaces de requête pour GPT, des simples prompts à une question à l’apprentissage à quelques exemples via le contexte.
Dans cet exemple, nous verrons comment utiliser LangChain pour enchaîner des questions à l’aide d’un modèle de prompt. Il y a quelques bibliothèques Python que vous devez d’abord installer. Nous pouvons les installer avec # pip install langchain openai python-dotenv tiktoken. J’utilise python-dotenv parce que je gère mes variables d’environnement dans un fichier .env, mais vous pouvez utiliser la méthode de votre choix pour charger votre clé API OpenAI.
Une fois notre clé API OpenAI prête, nous devons charger nos outils LangChain. Nous avons besoin des imports PromptTemplate et LLMChain depuis langchain, ainsi que de l’import OpenAI depuis langchain.llms. Nous utilisons le modèle de texte d’OpenAI, text-davinci-003, pour cet exemple. Ensuite, nous créons un modèle avec lequel interroger GPT. Le modèle que nous créons ci-dessous indique à GPT de répondre aux questions données une par une. D’abord, nous créons une chaîne représentant des variables d’entrée entre accolades, de manière similaire au fonctionnement des f-strings.
import os
from dotenv import load_dotenv
import openai
load_dotenv()
openai.api_key = os.getenv("OPENAI_API_KEY")
from langchain import PromptTemplate, LLMChain
from langchain.llms import OpenAI
davinci = OpenAI(model_name="text-davinci-003")
multi_template = """Answer the following questions one at a time.
Questions:
{questions}
Answers:
"""
Ensuite, nous utilisons l’objet PromptTemplate pour créer un modèle à partir de la chaîne avec les variables d’entrée spécifiées. Une fois notre modèle de prompt prêt, nous pouvons créer une « chaîne » LLM en passant le prompt et les grands modèles de langage choisis. Il est maintenant temps de créer les questions. Une fois que nous avons les questions que nous voulons poser, nous run la chaîne LLM avec les questions transmises afin d’obtenir nos réponses.
long_prompt = PromptTemplate(template=multi_template, input_variables=["questions"])
llm_chain = LLMChain(
prompt=long_prompt,
llm=davinci
)
qs_str = (
"Which NFL team won the Super Bowl in the 2010 season?\n" +
"If I am 6 ft 4 inches, how tall am I in centimeters?\n" +
"Who was the 12th person on the moon?" +
"How many eyes does a blade of grass have?"
)
print(llm_chain.run(qs_str))
L’image ci-dessous montre les résultats attendus de nos questions d’exemple.
Résultats des questions d’exemple.
Interroger des documents pertinents
L’un des axes d’amélioration de GPT et, plus largement, des grands modèles de langage exploités, est qu’ils ne sont entraînés que sur des données disponibles au moment de leur entraînement. Cela signifie qu’au fil du temps, ils perdent en contexte et en précision. Tout comme le framework CVP, LangChain fournit un moyen de remédier à ce problème avec des bases de données vectorielles. De nombreuses bases de données vectorielles sont disponibles ; pour cet exemple, nous utilisons Milvus en raison de notre familiarité avec celui-ci.
LangChain excelle dans la gestion des données documentaires, transformant des documents numérisés en données exploitables grâce à l’automatisation des workflows.
Pour démontrer la capacité de LangChain à injecter des connaissances à jour dans votre application LLM ainsi que sa capacité à effectuer une recherche sémantique, nous expliquons comment interroger un document. Nous utilisons une transcription du discours sur l’état de l’Union pour cet exemple. Vous pouvez télécharger la transcription et trouver le notebook Colab ici. Pour obtenir les bibliothèques dont vous avez besoin pour cette partie du tutoriel, exécutez pip install langchain openai milvus [pymilvus](https://zilliz.com/blog/get-started-with-pymilvus) python-dotenv tiktoken.
La capacité à récupérer dynamiquement des documents pertinents en fonction des requêtes des utilisateurs améliore considérablement la précision des réponses générées.
Comme avec l’exemple consistant à enchaîner des questions, nous commençons par charger notre clé API OpenAI et par exploiter de grands modèles de langage. Ensuite, nous lançons une base de données vectorielle à l’aide de Milvus Lite, ce qui nous permet d’exécuter Milvus directement dans notre notebook.
import os
from dotenv import load_dotenv
import openai
load_dotenv()
openai.api_key = os.getenv("OPENAI_API_KEY")
from langchain.llms import OpenAI
davinci = OpenAI(model_name="text-davinci-003")
from milvus import default_server
default_server.start()
Nous sommes maintenant prêts à entrer dans les détails de l’interrogation d’un document. Il y a cette fois beaucoup d’importations depuis LangChain. Nous avons besoin des embeddings OpenAI, du séparateur de texte par caractères, de l’intégration Milvus, du chargeur de texte et de la chaîne de Q/R avec récupération.
La première chose que nous faisons est de configurer un chargeur et de charger le fichier texte. Dans ce cas, je l’ai stocké dans le même dossier que ce notebook sous state_of_the_union.txt. Ensuite, nous découpons le texte et le stockons sous forme d’un ensemble de documents LangChain. Puis, nous pouvons configurer notre base de données vectorielle. Dans ce cas, nous créons une collection Milvus à partir des documents que nous venons d’ingérer via le TextLoader et le CharacterTextSplitter. Nous transmettons également les embeddings OpenAI comme ensemble d’embeddings vectoriels de texte.
Une fois notre base de données vectorielle chargée, nous pouvons utiliser l’objet RetrievalQA pour interroger les documents via une base de données vectorielle. Nous utilisons le type de chaîne stuff " et transmettons OpenAI comme notre LLM et la base de données vectorielle Milvus comme récupérateur. Ensuite, nous pouvons créer une requête, comme « Qu’a dit le président à propos de Ketanji Brown Jackson ? » etrun` la requête. Enfin, nous devons arrêter notre base de données vectorielle pour une fermeture propre.
from langchain.embeddings.openai import OpenAIEmbeddings
from langchain.text_splitter import CharacterTextSplitter
from langchain.vectorstores import Milvus
from langchain.document_loaders import TextLoader
from langchain.chains import RetrievalQA
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)
embeddings = OpenAIEmbeddings()
vector_db = Milvus.from_documents(
docs,
embeddings,
connection_args={"host": "127.0.0.1", "port": default_server.listen_port},
)
qa = RetrievalQA.from_chain_type(llm=OpenAI(), chain_type="stuff", retriever=vector_db.as_retriever())
query = "What did the president say about Ketanji Brown Jackson?"
qa.run(query)
default_server.stop()
L’image ci-dessous montre à quoi pourrait ressembler une réponse attendue. Nous devrions obtenir une réponse du type « Le président a déclaré que Ketanji Brown Jackson est l’une des plus grandes juristes du pays, une ancienne plaideuse de premier plan dans le secteur privé, une ancienne défenseure publique fédérale, … »
Résultats de la requête
Alternative à LangChain
Il existe plusieurs outils basés sur le chat qui pourraient être considérés comme des alternatives à LangChain, et les gens débattent souvent pour savoir lesquels sont les meilleurs. Beaucoup de ces alternatives utilisent également des modèles de chat spécialisés conçus pour des applications de chat interactives. Parmi ceux qui reviennent fréquemment, on trouve :
- AgentGPT
- TensorFlow
- Auto-GPT
- BabyAGI
- Semantic UI
- LlamaIndex
Résumé d’un tutoriel LangChain
Dans cet article, nous avons couvert les bases de l’utilisation de LangChain. Nous avons appris que LangChain est un framework pour créer des applications LLM qui repose sur deux facteurs clés. Le premier facteur est l’utilisation de données externes, comme un document texte. La capacité de LangChain à intégrer des données externes améliore l’efficacité des modèles de langage en incorporant des informations propres à l’utilisateur. Le second facteur est l’utilisation d’autres outils, comme une base de données vectorielle.
Nous avons couvert deux exemples. Tout d’abord, nous avons examiné l’un des exemples classiques de LangChain : comment enchaîner plusieurs questions. LangChain fonctionne parfaitement avec divers fournisseurs de modèles, notamment OpenAI et Hugging Face, afin d’améliorer ses fonctionnalités. Ensuite, nous avons examiné une façon pratique d’utiliser LangChain pour injecter des connaissances de domaine en le combinant avec une base de données vectorielle comme Milvus afin d’interroger des documents.
Les analyseurs de sortie jouent un rôle crucial dans l’affinement des réponses du modèle de langage, garantissant des résultats structurés et pertinents.
Continuer à lire
Milvus/Zilliz + Surveillance: How Vector Databases Transform Multi-Camera Tracking
See how Milvus vector database enhances multi-camera tracking with similarity-based matching for better surveillance in retail, warehouses and transport hubs.

Vector Databases vs. Document Databases
Use a vector database for similarity search and AI-powered applications; use a document database for flexible schema and JSON-like data storage.

What is the K-Nearest Neighbors (KNN) Algorithm in Machine Learning?
KNN is a supervised machine learning technique and algorithm for classification and regression. This post is the ultimate guide to KNN.



