CoolFace
Apppublic

rk22012000/Agentic_QA_System

sourceHugging Facemitupdated 7mo agoView on Hugging Face
0likes
vector_store.py56 linesDownload Raw Back to root
1# vector_store.py
2
3
4import faiss
5import numpy as np
6from sentence_transformers import SentenceTransformer
7from pypdf import PdfReader
8
9model = SentenceTransformer("sentence-transformers/all-MiniLM-L6-v2")
10
11documents = []
12index = None
13
14def chunk_text(text, chunk_size=500):
15    return [text[i:i+chunk_size] for i in range(0, len(text), chunk_size)]
16
17def build_index(text_chunks):
18    global documents, index
19
20    documents = text_chunks
21    embeddings = model.encode(text_chunks)
22
23    dim = embeddings.shape[1]
24    index = faiss.IndexFlatL2(dim)
25    index.add(np.array(embeddings))
26
27def load_text_file():
28    try:
29        with open("knowledge.txt", "r", encoding="utf-8") as f:
30            text = f.read()
31
32        chunks = chunk_text(text)
33        build_index(chunks)
34    except:
35        pass
36
37def load_pdf(file_path):
38    reader = PdfReader(file_path)
39    text = ""
40
41    for page in reader.pages:
42        if page.extract_text():
43            text += page.extract_text()
44
45    chunks = chunk_text(text)
46    build_index(chunks)
47
48def retrieve(query, k=3):
49    if index is None:
50        return ["No documents loaded"]
51
52    query_embedding = model.encode([query])
53    distances, indices = index.search(np.array(query_embedding), k)
54
55    return [documents[i] for i in indices[0]]
56