Ajout du constructeur de la pipeline, les fonctions sont appelées dans le main, la prochaine étape est d'ajouter un parser pour pouvoir exécuter la fonction choisie depuis le terminal.

This commit is contained in:
2025-11-06 16:22:24 +01:00
parent abe9e38628
commit 647ffa7a84

49
src/RAG_pipeline.py Normal file
View File

@ -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