Update app.py
Browse files
app.py
CHANGED
@@ -16,8 +16,8 @@ class RAGLoader:
|
|
16 |
def __init__(self,
|
17 |
docs_folder: str = "./docs",
|
18 |
splits_folder: str = "./splits",
|
19 |
-
index_folder: str = "./index",
|
20 |
-
model_name: str = "intfloat/multilingual-e5-large")
|
21 |
"""
|
22 |
Initialise le RAG Loader
|
23 |
|
@@ -30,7 +30,7 @@ class RAGLoader:
|
|
30 |
self.docs_folder = Path(docs_folder)
|
31 |
self.splits_folder = Path(splits_folder)
|
32 |
self.index_folder = Path(index_folder)
|
33 |
-
self.model_name = model_name
|
34 |
|
35 |
# Créer les dossiers s'ils n'existent pas
|
36 |
self.splits_folder.mkdir(parents=True, exist_ok=True)
|
@@ -42,10 +42,16 @@ class RAGLoader:
|
|
42 |
self.documents_path = self.index_folder / "documents.pkl"
|
43 |
|
44 |
# Initialiser le modèle
|
45 |
-
self.model = None
|
46 |
self.index = None
|
47 |
self.indexed_documents = None
|
48 |
|
|
|
|
|
|
|
|
|
|
|
|
|
49 |
def load_and_split_texts(self) -> List[Document]:
|
50 |
"""
|
51 |
Charge les textes du dossier docs, les découpe en morceaux et les sauvegarde
|
@@ -163,10 +169,10 @@ class RAGLoader:
|
|
163 |
bool: True si l'index a été créé avec succès, False sinon
|
164 |
"""
|
165 |
try:
|
166 |
-
# Initialiser le modèle si nécessaire
|
167 |
-
if self.model is None:
|
168 |
-
|
169 |
-
|
170 |
|
171 |
# Charger les documents si non fournis
|
172 |
if documents is None:
|
@@ -178,7 +184,7 @@ class RAGLoader:
|
|
178 |
|
179 |
print("Création des embeddings...")
|
180 |
texts = [doc.page_content for doc in documents]
|
181 |
-
embeddings = self.
|
182 |
|
183 |
# Initialiser l'index FAISS
|
184 |
dimension = embeddings.shape[1]
|
@@ -222,12 +228,12 @@ class RAGLoader:
|
|
222 |
if not self.create_index():
|
223 |
raise ValueError("Impossible de charger ou créer l'index")
|
224 |
|
225 |
-
if self.model is None:
|
226 |
-
|
227 |
|
228 |
def retriever_function(query: str) -> List[Document]:
|
229 |
# Créer l'embedding de la requête
|
230 |
-
query_embedding = self.
|
231 |
|
232 |
# Rechercher les documents similaires
|
233 |
distances, indices = self.index.search(
|
|
|
16 |
def __init__(self,
|
17 |
docs_folder: str = "./docs",
|
18 |
splits_folder: str = "./splits",
|
19 |
+
index_folder: str = "./index",):
|
20 |
+
# model_name: str = "intfloat/multilingual-e5-large")
|
21 |
"""
|
22 |
Initialise le RAG Loader
|
23 |
|
|
|
30 |
self.docs_folder = Path(docs_folder)
|
31 |
self.splits_folder = Path(splits_folder)
|
32 |
self.index_folder = Path(index_folder)
|
33 |
+
# self.model_name = model_name
|
34 |
|
35 |
# Créer les dossiers s'ils n'existent pas
|
36 |
self.splits_folder.mkdir(parents=True, exist_ok=True)
|
|
|
42 |
self.documents_path = self.index_folder / "documents.pkl"
|
43 |
|
44 |
# Initialiser le modèle
|
45 |
+
# self.model = None
|
46 |
self.index = None
|
47 |
self.indexed_documents = None
|
48 |
|
49 |
+
def encode(self,payload):
|
50 |
+
API_URL = "https://api-inference.huggingface.co/models/intfloat/multilingual-e5-large"
|
51 |
+
headers = {"Authorization": "Bearer ffff"}
|
52 |
+
response = requests.post(API_URL, headers=headers, json=payload)
|
53 |
+
return response.json()
|
54 |
+
|
55 |
def load_and_split_texts(self) -> List[Document]:
|
56 |
"""
|
57 |
Charge les textes du dossier docs, les découpe en morceaux et les sauvegarde
|
|
|
169 |
bool: True si l'index a été créé avec succès, False sinon
|
170 |
"""
|
171 |
try:
|
172 |
+
# # Initialiser le modèle si nécessaire
|
173 |
+
# if self.model is None:
|
174 |
+
# print("Chargement du modèle...")
|
175 |
+
# self.model = SentenceTransformer(self.model_name)
|
176 |
|
177 |
# Charger les documents si non fournis
|
178 |
if documents is None:
|
|
|
184 |
|
185 |
print("Création des embeddings...")
|
186 |
texts = [doc.page_content for doc in documents]
|
187 |
+
embeddings = self.encode(texts)
|
188 |
|
189 |
# Initialiser l'index FAISS
|
190 |
dimension = embeddings.shape[1]
|
|
|
228 |
if not self.create_index():
|
229 |
raise ValueError("Impossible de charger ou créer l'index")
|
230 |
|
231 |
+
# if self.model is None:
|
232 |
+
# self.model = SentenceTransformer(self.model_name)
|
233 |
|
234 |
def retriever_function(query: str) -> List[Document]:
|
235 |
# Créer l'embedding de la requête
|
236 |
+
query_embedding = self.encode([query])[0]
|
237 |
|
238 |
# Rechercher les documents similaires
|
239 |
distances, indices = self.index.search(
|