Création d’un ChatBot privé avec Langchain, Azure OpenAI et Faiss Vector DB pour les requêtes de documents locaux / Blogs / Perficient

Dans ce blog, nous explorerons comment utiliser efficacement Langchain, Azure OpenAI Text incorporant le modèle ADA et Faiss Vector Store pour créer un chatbot privé capable d’interroger un document téléchargé à partir du stockage local. Un chatbot privé est un chatbot qui peut interagir avec vous en langage naturel et vous fournir des informations ou des services adaptés à vos besoins et préférences. Contrairement à un chatbot public, un chatbot privé ne s’appuie pas sur des sources de données externes ou des API, mais utilise plutôt votre propre document local comme source de connaissances et de contenu. De cette façon, vous pouvez vous assurer que votre chatbot est sécurisé, personnalisé et à jour
Pourquoi utiliser Langchain, Azure OpenAI et Faiss Vector Store ?
Langchain, Azure OpenAI et Faiss Vector Store sont trois technologies puissantes qui peuvent vous aider à créer un chatbot privé avec facilité et efficacité.
- Langchain est une bibliothèque Python qui vous permet de créer et d’exécuter des agents chatbot en utilisant une syntaxe simple et intuitive. Langchain vous propose diverses classes et méthodes capables de gérer les tâches courantes de développement de chatbot, telles que le chargement de texte, le fractionnement de texte, la création d’intégrations, le stockage d’intégrations, l’interrogation d’intégrations, la génération de réponses et la définition de chaînes d’actions. Langchain s’intègre également à d’autres bibliothèques et services populaires, tels que Faiss, OpenAI et Azure OpenAI Service, pour vous permettre d’exploiter leurs fonctionnalités au sein de votre agent chatbot.
- Service Azure OpenAI est un service basé sur le cloud qui vous permet d’accéder aux puissantes capacités de traitement du langage naturel d’OpenAI, telles que GPT-4, Codex et DALL-E. Azure OpenAI Service vous permet d’encoder du texte dans des intégrations, de décoder des intégrations dans du texte et de générer du texte en fonction d’une invite ou d’un contexte. Vous pouvez utiliser Azure OpenAI Service pour créer des réponses en langage naturel de haute qualité pour votre chatbot, ainsi que pour créer des intégrations pour votre document local qui capturent sa signification sémantique.
- Faiss Vector Store est une base de données vectorielle qui vous permet de stocker et de récupérer des intégrations de manière efficace et précise. Faiss Vector Store utilise un algorithme de pointe appelé Product Quantization (PQ) pour compresser et indexer les intégrations, ce qui réduit l’espace de stockage et améliore la vitesse de recherche. Vous pouvez utiliser Faiss Vector Store pour stocker les intégrations de votre document local et leur demander les morceaux les plus pertinents en fonction de la saisie de l’utilisateur.
Créez un chatbot privé avec Langchain, Azure OpenAI et Faiss Vector Store
Maintenant que vous avez une idée de ce que sont ces technologies et de ce qu’elles peuvent faire, utilisons-les pour créer un chatbot privé avec Langchain, Azure OpenAI et Faiss Vector Store pour les requêtes de documents locaux. Les étapes sont les suivantes:
Étape 1 : Installer Langchain et ses dépendances
Vous devez installer Langchain et ses dépendances, telles que Faiss, OpenAI et Azure OpenAI Service, sur votre machine. Vous devez également importer les bibliothèques et modules requis pour votre chatbot.
Étape 2 : Chargez votre document local
Vous devez charger votre document local à l’aide de la classe TextLoader de Langchain. Vous pouvez utiliser n’importe quel format de texte, tel que PDF, HTML ou texte brut, à condition qu’il soit lisible par Langchain. Par exemple, vous pouvez charger un document PDF à l’aide de la classe PyPDFLoader et un docx à l’aide de Docx2txtLoader, comme indiqué dans l’extrait de code suivant :
from langchain.document_loaders import PyPDFLoader from langchain.document_loaders import Docx2txtLoader //load PDF loader = PyPDFLoader(file_path=tmp_file_path) //load docx loader = Docx2txtLoader(file_path=tmp_file_path)
Étape 3 : divisez votre document en morceaux plus petits
Vous devez diviser votre document en morceaux plus petits à l’aide des classes CharacterTextSplitter ou SentenceTextSplitter de Langchain. L’extrait de code ci-dessous divise votre document en phrases à l’aide de la classe SentenceTextSplitter.
# Split the document into sentences using SentenceTextSplitter splitter = SentenceTextSplitter() chunks = splitter.split(document)
Vous pouvez également utiliser la méthode load_and_split des chargeurs pour diviser automatiquement votre document en morceaux, en fonction du format de fichier et de la structure de votre document.
Vous trouverez ci-dessous l’extrait de code de PyPDFLoader pour diviser votre document PDF en pages :# Split the PDF document into pages using PyPDFLoader loader = PyPDFLoader() pages = loader.load_and_split("my_document.pdf", encoding="utf-8", language="en", title="My Document")
De même, vous pouvez utiliser Docx2txtLoader pour diviser votre document DOCX en paragraphes, comme indiqué dans les extraits de code suivants :
# Split the DOCX document into paragraphs using Docx2txtLoader loader = Docx2txtLoader() paragraphs = loader.load_and_split("my_document.docx", encoding="utf-8", language="en", title="My Document")
Étape 4 : Créer des intégrations et les stocker dans une base de données vectorielles Faiss
Vous pouvez utiliser la classe FAISS pour créer une base de données vectorielles Faiss à partir de votre document local, qui stockera les intégrations localement et vous permettra de les interroger ultérieurement.
from langchain.embeddings.openai import OpenAIEmbeddings from langchain.vectorstores import FAISS embeddings=OpenAIEmbeddings(deployment=OPENAI_ADA_DEPLOYMENT_NAME, model=OPENAI_ADA _MODEL_NAME, openai_api_base=OPENAI_DEPLOYMENT_ENDPOINT, openai_api_type="azure", chunk_size=1) db = FAISS.from_documents(documents=pages, embedding=embeddings) db.save_local("./dbs/documentation/faiss_index")
Étape 5 : Créer un agent Chatbot
Vous devez créer un agent chatbot à l’aide de la classe OpenAIAgent de Langchain. Cette classe vous permet d’interagir avec le service Azure OpenAI et de générer des réponses en langage naturel basées sur les entrées de l’utilisateur et les morceaux récupérés. Vous pouvez choisir le modèle et les paramètres du service Azure OpenAI selon vos préférences. Vous devez également créer une instance de la classe AzureChatOpenAI pour votre chatbot, comme indiqué dans l’extrait de code suivant :
from langchain.chat_models import AzureChatOpenAI llm = AzureChatOpenAI(deployment_name=OPENAI_DEPLOYMENT_NAME, model_name=OPENAI_MODEL_NAME, openai_api_base=OPENAI_DEPLOYMENT_ENDPOINT, openai_api_version=OPENAI_DEPLOYMENT_VERSION, openai_api_key=OPENAI_API_KEY, openai_api_type="azure")
Étape 7 : Définissez une chaîne d’actions pour votre agent Chatbot
Vous devez définir une chaîne d’actions pour votre agent chatbot à l’aide de la classe Chain de Langchain. Une chaîne est une séquence d’appels qui peuvent être exécutés par l’agent pour effectuer une tâche spécifique. Par exemple, vous pouvez définir une chaîne qui prend en compte les entrées de l’utilisateur, interroge la base de données vectorielles Faiss pour connaître les morceaux les plus pertinents et génère une réponse à l’aide du service Azure OpenAI.
Utilisez ConversationalRetrievalChain d’Azure-openai pour créer un agent chatbot capable de répondre aux questions à l’aide des modèles Azure OpenAI Service et de l’outil de récupération de documents local.from langchain.vectorstores import FAISS from langchain.chains import ConversationalRetrievalChain from langchain.chains.question_answering import load_qa_chain #load the faiss vector store we saved locally vectorStore = FAISS.load_local("./dbs/documentation/faiss_index", embeddings) #use the faiss vector store we saved to search the local document retriever = vectorStore.as_retriever(search_type="similarity", search_kwargs={"k":2}) qa = ConversationalRetrievalChain.from_llm(llm=llm, retriever=retriever, condense_question_prompt=QUESTION_PROMPT, return_source_documents=True, verbose=False)
Étape 8 : Exécutez votre agent Chatbot
Vous pouvez utiliser la bibliothèque Streamlit pour créer une interface Web pour votre chatbot, comme indiqué dans l’extrait de code suivant :
# Process user query and get response def ask_question_with_context(qa, question, chat_history): result = qa({"question": question, "chat_history": chat_history}) chat_history.append((question, result["answer"])) return chat_history user_query = st.text_input("Ask a question:") if st.button("Submit"): if user_query: st.write("User Query:", user_query) chat_history = ask_question_with_context(qa, user_query, chat_history) response = chat_history[-1][1] if chat_history else "No response" st.write("Answer:", response)
Quels sont les avantages de l’utilisation d’un chatbot privé avec Langchain, Azure OpenAI et Faiss Vector Store ?
En utilisant un chatbot privé avec Langchain, Azure OpenAI et Faiss Vector Store pour les requêtes de documents locaux, vous pouvez bénéficier des avantages suivants :
- Sécurité: Vous pouvez garder votre document local privé et sécurisé, car vous n’avez pas besoin de le télécharger sur un serveur ou un service externe. Vous pouvez également contrôler l’accès et l’utilisation de votre chatbot, car vous n’avez pas besoin de le partager avec quelqu’un d’autre.
- Personnalisation: Vous pouvez personnaliser votre chatbot en fonction de vos besoins et préférences, car vous pouvez choisir le format de texte, la taille du chunk, le modèle d’intégration, le type d’index, le modèle de génération et la chaîne d’actions de votre chatbot.
- Mises à jour en temps réel: Vous pouvez vous assurer que votre chatbot est toujours à jour, car vous pouvez mettre à jour votre document local et votre chatbot quand vous le souhaitez. Vous pouvez également tirer parti des dernières technologies de traitement du langage naturel, telles qu’OpenAI, pour créer des réponses en langage naturel de haute qualité pour votre chatbot.
Comment utiliser votre chatbot privé avec Langchain, Azure OpenAI et Faiss Vector Store ?
Une fois que vous avez créé votre chatbot privé avec Langchain, Azure OpenAI et Faiss Vector Store pour la requête de documents locaux, vous pouvez l’utiliser à diverses fins, telles que :
- Apprentissage: Vous pouvez utiliser votre chatbot pour acquérir de nouvelles informations ou compétences à partir de votre document local, comme un manuel, un manuel ou un didacticiel. Vous pouvez poser des questions à votre chatbot, demander des résumés ou demander des exemples à partir de votre document local.
- Recherche: Vous pouvez utiliser votre chatbot pour rechercher un sujet ou un problème à partir de votre document local, comme un article, un rapport ou une étude de cas. Vous pouvez demander à votre chatbot de vous fournir des faits, des arguments ou des preuves pertinents tirés de votre document local.
- Création: Vous pouvez utiliser votre chatbot pour créer du nouveau contenu ou des produits à partir de votre document local, comme un blog, une présentation ou un prototype. Vous pouvez demander à votre chatbot de générer des idées, des suggestions ou des solutions à partir de votre document local.
Conclusion
Dans ce blog, nous avons appris à créer un chatbot privé avec Langchain, Azure OpenAI et Faiss Vector Store pour les requêtes de documents locaux. L’intégration de ces technologies permet le développement d’un chatbot privé sécurisé et personnalisé. Cette approche offre une sécurité, une personnalisation et un accès améliorés aux connaissances documentaires locales. En suivant les étapes fournies, vous pouvez créer un chatbot adapté à vos besoins, garantissant la confidentialité et le contrôle de vos données. Cette pile technologique recèle un grand potentiel pour diverses applications, notamment l’apprentissage, la recherche et la création de contenu.
Merci pour la lecture!
Source link