Corin1998 commited on
Commit
fa9ab56
·
verified ·
1 Parent(s): e89ec77

Create modules/rag_retriever.py

Browse files
Files changed (1) hide show
  1. modules/rag_retriever.py +32 -0
modules/rag_retriever.py ADDED
@@ -0,0 +1,32 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import faiss
2
+ import pickle
3
+ from typing import List, Tuple
4
+ from pathlib import Path
5
+ from sentence_transformers import SentenceTransformer
6
+
7
+ DATA_DIR = Path("data")
8
+ INDEX_PATH = DATA_DIR / "vector_store.faiss"
9
+ META_PATH = DATA_DIR / "vector_store_meta.pkl"
10
+
11
+ _model = None
12
+
13
+ def _embedder():
14
+ global _model
15
+ if _model is None:
16
+ _model = SentenceTransformer("sentence-transformers/all-MiniLM-L6-v2")
17
+ return _model
18
+
19
+ def retrieve_contexts(query: str, k: int=5) -> List[str]:
20
+ if not INDEX_PATH.exists():
21
+ return []
22
+ index = faiss.read_index(str(INDEX_PATH))
23
+ with open(META_PATH, "rb") as f:
24
+ meta = pickle.load(f)
25
+ vec = _embedder().encode([query], normalize_embeddings=True)
26
+ D, I = index.search(vec, k)
27
+ contexts = []
28
+ for idx in I[0]:
29
+ if idx == -1:
30
+ continue
31
+ contexts.append(meta[idx]["text"])
32
+ return contexts