Medical_ChatBot
1.0.0
이 프로젝트는 의료용 PDF 책에서 정보를 검색하고 Langchain을 사용하여 처리하고 효율적인 정보 검색을 위해 Pinecone을 사용하는 의료 챗봇을 구축합니다.
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." )이 프로젝트는 의료 정보에 액세스하고 이해할 수있는 접근 가능하고 효율적인 방법을 제공하는 의료 챗봇을 만드는 데있어 Langchain과 Pinecone의 잠재력을 보여줍니다. 의료 PDF 책과 원하는 기능의 특정 요구에 맞게이 개념을 적응하고 확장해야합니다.
Langchain Pinecone Vector Store 프로젝트를 설정하려면 다음을 수행하십시오.
저장소 복제 :
git clone https://github.com/ < username > / < repository > .git
cd < repository >종속성 설치 :
pip install -r requirements.txt환경 변수 구성 :
루트 디렉토리에서 .env 파일을 만들고 다음 변수를 지정하십시오.
PINECONE_API_KEY=<your_pinecone_api_key>
PINECONE_ENV=<pinecone_environment>
PINECONE_INDEX_NAME=<pinecone_index_name>
Pinecone 벡터 데이터베이스에 벡터를 저장하려면 다음 명령을 실행하십시오.
python store_vectors.pyLangchain Pinecone Vector Store Project에 대한 기여가 권장되고 감사합니다! 향상, 버그 수정 또는 새로운 기능에 대한 아이디어가 있으면 풀 요청을 제출하십시오. 저장소에 요약 된 기여 가이드 라인을 따르십시오.
이 프로젝트는 라이센스 계약에 명시된 이용 약관에 따라 무제한 사용, 배포 및 수정을 허용하는 MIT 라이센스에 따라 라이센스가 부여됩니다.