Nehaa's picture
Update utils.py
9f20b6a verified
Raw History Blame Contribute Delete
1.24 kB
import fitz # PyMuPDF
import faiss
from sentence_transformers import SentenceTransformer
import numpy as np
# model = SentenceTransformer('all-MiniLM-L6-v2')
from huggingface_hub import snapshot_download
from sentence_transformers import SentenceTransformer
# Download model to a local folder in your Space
model_path = snapshot_download('sentence-transformers/all-MiniLM-L6-v2')
# Load it from the local path
model = SentenceTransformer(model_path)
def extract_text_from_pdf(pdf_file):
doc = fitz.open(stream=pdf_file.read(), filetype="pdf")
full_text = ""
for page in doc:
full_text += page.get_text()
return full_text
def chunk_text(text, chunk_size=300):
words = text.split()
return [' '.join(words[i:i+chunk_size]) for i in range(0, len(words), chunk_size)]
def embed_chunks(chunks):
embeddings = model.encode(chunks)
return np.array(embeddings)
def create_faiss_index(embeddings):
dim = embeddings.shape[1]
index = faiss.IndexFlatL2(dim)
index.add(embeddings)
return index
def get_top_chunks(query, index, chunks, k=3):
query_embedding = model.encode([query])
distances, indices = index.search(query_embedding, k)
return [chunks[i] for i in indices[0]]