Ce projet construit un chatbot médical qui récupère les informations à partir d'un livre PDF médical et utilise Langchain pour le traitement et le pignon pour une récupération efficace des informations.
from langchain_community . embeddings import HuggingFaceEmbeddings
from langchain_community . document_loaders import PyPDFLoader
from langchain . text_splitter import RecursiveCharacterTextSplitter
def create_knowledge_base ( pdf_path ):
# Load PDF text
loader = PyPDFLoader ( pdf_path , glob = "*.pdf" )
text_data = loader . load ()
# Text processing and chunking
text_splitter = RecursiveCharacterTextSplitter ( chunk_size = 500 , chunk_overlap = 20 )
text_chunks = text_splitter . split_documents ( text_data )
# Download Llama2 embeddings (or your chosen model)
embeddings = HuggingFaceEmbeddings ( model_name = "sentence-transformers/all-MiniLM-L6-v2" )
# Generate embeddings for each text chunk
# ... (code to generate embeddings for each chunk using embeddings object)
# Store text chunks and embeddings in a data structure (e.g., list of dictionaries)
knowledge_base = []
for i , chunk in enumerate ( text_chunks ):
chunk_embedding = embeddings . encode ( chunk ) # Generate embedding for the chunk
knowledge_base . append ({
"text" : chunk ,
"embedding" : chunk_embedding
})
return knowledge_base from langchain_pinecone import PineconeVectorStore
from pinecone . data . index import Index
from dotenv import load_dotenv
import os
def store_knowledge_base_in_pinecone ( knowledge_base ):
load_dotenv ()
PINECONE_API_KEY = os . getenv ( "PINECONE_API_KEY" )
PINECONE_ENV = os . getenv ( "PINECONE_ENV" )
PINECONE_INDEX_NAME = os . getenv ( "PINECONE_INDEX_NAME" )
# Connect to Pinecone
pc = pinecone . Pinecone ( api_key = PINECONE_API_KEY , environment = PINECONE_ENV )
index = pc . Index ( PINECONE_INDEX_NAME )
# Extract text and embeddings from knowledge base
text_data = [ kb [ "text" ] for kb in knowledge_base ]
embeddings = [ kb [ "embedding" ] for kb in knowledge_base ]
# Store embeddings in Pinecone
PineconeVectorStore . from_documents ( text_data , embeddings , index_name = PINECONE_INDEX_NAME )
print ( f"Knowledge base stored in Pinecone index: { PINECONE_INDEX_NAME } " ) # This section is a placeholder as the full chatbot development requires additional libraries
# like Rasa or Dialogflow. Here's a basic outline to illustrate the concept.
def chatbot_loop ():
while True :
user_query = input ( "Ask me a medical question (or type 'quit' to exit): " )
if user_query . lower () == "quit" :
break
# Process user query (similar to text processing in knowledge base creation)
processed_query = # (code to clean and process the user query)
# Generate embedding for the user query
query_embedding = embeddings . encode ( processed_query )
# Retrieve similar text snippets from Pinecone using query embedding
similar_results = retrieve_from_pinecone ( query_embedding )
# Extract and present relevant information to the user
if similar_results :
for result in similar_results :
print ( f"Relevant Information: { result [ 'text' ] } " )
else :
print ( "Sorry, I couldn't find any information related to your question." )Ce projet présente le potentiel de Langchain et Pinecone dans la création d'un chatbot médical qui offre un moyen accessible et efficace d'accéder et de comprendre les informations médicales. N'oubliez pas de s'adapter et de développer ce concept pour répondre aux besoins spécifiques de votre livre PDF médical et des fonctionnalités souhaitées.
Pour configurer le projet Langchain Pinecone Vector Store, suivez ces étapes:
Clone le référentiel:
git clone https://github.com/ < username > / < repository > .git
cd < repository >Installez les dépendances:
pip install -r requirements.txtConfigurer les variables d'environnement:
Créez un fichier .env dans le répertoire racine et spécifiez les variables suivantes:
PINECONE_API_KEY=<your_pinecone_api_key>
PINECONE_ENV=<pinecone_environment>
PINECONE_INDEX_NAME=<pinecone_index_name>
Pour stocker des vecteurs dans la base de données de vecteur de pignon, exécutez la commande suivante:
python store_vectors.pyLes contributions au projet Langchain Pinecone Vector Store sont encouragées et appréciées! Si vous avez des idées d'améliorations, de corrections de bogues ou de nouvelles fonctionnalités, veuillez soumettre une demande de traction. Assurez-vous de suivre les directives de contribution décrites dans le référentiel.
Ce projet est autorisé en vertu de la licence MIT, qui permet une utilisation, une distribution et une modification sans restriction, sous réserve des termes et conditions spécifiés dans le contrat de licence.