From 647ffa7a84a0c17a7d593133e072650a3e2b09fa Mon Sep 17 00:00:00 2001 From: Matthieu Date: Thu, 6 Nov 2025 16:22:24 +0100 Subject: [PATCH] =?UTF-8?q?Ajout=20du=20constructeur=20de=20la=20pipeline,?= =?UTF-8?q?=20les=20fonctions=20sont=20appel=C3=A9es=20dans=20le=20main,?= =?UTF-8?q?=20la=20prochaine=20=C3=A9tape=20est=20d'ajouter=20un=20parser?= =?UTF-8?q?=20pour=20pouvoir=20ex=C3=A9cuter=20la=20fonction=20choisie=20d?= =?UTF-8?q?epuis=20le=20terminal.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/RAG_pipeline.py | 49 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 49 insertions(+) create mode 100644 src/RAG_pipeline.py diff --git a/src/RAG_pipeline.py b/src/RAG_pipeline.py new file mode 100644 index 0000000..5bee608 --- /dev/null +++ b/src/RAG_pipeline.py @@ -0,0 +1,49 @@ +from typing import List, Optional, Dict +from dataclasses import dataclass +from .interface.base_datastore import BaseDatastore +from .interface.base_evaluator import BaseEvaluator +from .interface.base_indexer import BaseIndexer +from .interface.base_response_generator import BaseResponseGenerator +from .interface.base_retriever import BaseRetriever + +@dataclass +class RAGpipeline: + + indexer: BaseIndexer + datastore: BaseDatastore + retriever: BaseRetriever + response_generator: BaseResponseGenerator + evaluator: Optional[BaseEvaluator] = None + + def reset(self) -> None: + self.datastore.reset_table() + + def add_documents(self, documents: List[str]) -> None: + items = self.indexer.index(documents) + self.datastore.add_items(items= items) + return + + def process_query(self, query: str, top_k: int = 5, source: bool = False) -> str: + """Génère la réponse à la requête à partir du contexte récupéré. + Affiche éventuellement les sources. + Args: + query (str): Requête + top_k (int, optional): Nombre de documents à renvoyer. Defaults to 5. + source (bool, optional): Afficher ou non les sources. Default to false + Returns: + str: Réponse générée + """ + context = self.retriever.search_retriever(query, top_k= top_k) + + if( source): + for i, doc in enumerate(context): + print(f"Based on the document {i+1}: {doc} \n") + + response = self.response_generator.generate_response(query= query, context= context) + return response + + def evaluate(self) -> None: + """A compléter lors de l'ajout de l'évaluateur + """ + print("Function not completed.") + pass \ No newline at end of file