MedicalChat / src /helper.py
jk2951's picture
Initial commit
4a1402a
Raw
History Blame Contribute Delete
1.65 kB
from langchain_community.document_loaders import PyPDFLoader, DirectoryLoader
# from langchain.text_splitter import RecursiveCharacterTextSplitter
from langchain_text_splitters import RecursiveCharacterTextSplitter
from langchain_pinecone import PineconeVectorStore
from langchain_huggingface import HuggingFaceEmbeddings
from langchain_core.documents import Document
from typing import List
# Extract text from PDF files
def load_pdf_files(data):
loader = DirectoryLoader(
data,
glob="*.pdf",
loader_cls=PyPDFLoader
)
documents = loader.load()
return documents
# Keep only minimal metadata (source)
def filter_to_minimal_docs(docs: List[Document]) -> List[Document]:
"""
Given a list of Document objects, return a new list
containing only 'source' metadata and original page content.
"""
minimal_docs: List[Document] = []
for doc in docs:
src = doc.metadata.get("source")
minimal_docs.append(
Document(
page_content=doc.page_content,
metadata={"source": src}
)
)
return minimal_docs
# Split documents into smaller chunks
def text_split(minimal_docs):
text_splitter = RecursiveCharacterTextSplitter(
chunk_size=500,
chunk_overlap=20,
)
texts_chunk = text_splitter.split_documents(minimal_docs)
return texts_chunk
# Download HuggingFace embedding model
def download_hugging_face_embeddings():
model_name = "sentence-transformers/all-MiniLM-L6-v2"
embeddings = HuggingFaceEmbeddings(
model_name=model_name
)
return embeddings