Este proyecto construye un chatbot médico que recupera información de un libro de PDF médico y utiliza Langchain para el procesamiento y el piñón para la recuperación de información eficiente.
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." )Este proyecto muestra el potencial de Langchain y Pinecone en la creación de un chatbot médico que ofrece una forma accesible y eficiente de acceder y comprender la información médica. Recuerde adaptar y expandir este concepto para satisfacer las necesidades específicas de su libro de PDF médico y las funcionalidades deseadas.
Para configurar el proyecto Langchain Pinecone Vector Store, siga estos pasos:
Clon el repositorio:
git clone https://github.com/ < username > / < repository > .git
cd < repository >Instalar dependencias:
pip install -r requirements.txtConfigurar variables de entorno:
Cree un archivo .env en el directorio raíz y especifique las siguientes variables:
PINECONE_API_KEY=<your_pinecone_api_key>
PINECONE_ENV=<pinecone_environment>
PINECONE_INDEX_NAME=<pinecone_index_name>
Para almacenar vectores en la base de datos de vector de pinecone, ejecute el siguiente comando:
python store_vectors.py¡Se alientan y aprecian las contribuciones al proyecto Langchain Pinecone Vector Store! Si tiene ideas para mejoras, correcciones de errores o nuevas funciones, envíe una solicitud de extracción. Asegúrese de seguir las pautas de contribución descritas en el repositorio.
Este proyecto tiene licencia bajo la licencia MIT, que permite un uso, distribución y modificación sin restricciones, sujeto a los términos y condiciones especificados en el acuerdo de licencia.