from langchain_community.vectorstores import FAISS
from langchain_huggingface import HuggingFaceEmbeddings
from langchain_core.documents import Document
from langchain_community.document_loaders import PyPDFLoader
from langchain.text_splitter import RecursiveCharacterTextSplitter

# 1. Load the local embedding model
embedding = HuggingFaceEmbeddings(model_name="sentence-transformers/all-MiniLM-L6-v2")

# 2. Load text from a PDF file
pdf_path = "my-notes.pdf"  # 🔁 Change to your actual PDF path

loader = PyPDFLoader(pdf_path)
pages = loader.load()

# 3. Split into smaller chunks (important for long PDFs)
text_splitter = RecursiveCharacterTextSplitter(
    chunk_size=500,
    chunk_overlap=50
)
documents = text_splitter.split_documents(pages)

# 4. Create the FAISS vector store
vectorstore = FAISS.from_documents(documents, embedding)

# 5. Ask a question
query = "What does the document say about machine learning?"

# 6. Do a similarity search
results = vectorstore.similarity_search(query, k=3)

# 7. Print top matching chunks
for i, doc in enumerate(results, 1):
    print(f"Result {i}: {doc.page_content}")
