student-services-demo-mcp / src /core /retrieval_engine.py
EdyVision's picture
Upload folder using huggingface_hub
5bcb545 verified
Raw
History Blame Contribute Delete
1.34 kB
from typing import List, Tuple, Optional
from ..retrievers.available_aid_api import AvailableAidRetriever
from ..retrievers.student_record_api import StudentRecordRetriever
from ..retrievers.faiss import FAISSRetriever
from ..retrievers.dynamodb import DynamoDBRetriever
from ..retrievers.s3 import S3Retriever
class RetrievalEngine:
def __init__(self):
self.plugins = {
"faiss": FAISSRetriever(),
"dynamodb": DynamoDBRetriever(),
"s3": S3Retriever(),
"available_aid_api": AvailableAidRetriever(),
"student_record_api": StudentRecordRetriever(),
}
def retrieve(
self, query: str, context_priority: List[str], metadata: Optional[dict] = None
) -> Tuple[str, List[str]]:
context_chunks = []
sources_used = []
for source in context_priority:
retriever = self.plugins.get(source)
if retriever:
try:
result = retriever.retrieve(query, metadata)
context_chunks.append(result)
sources_used.append(source)
except Exception as e:
print(f"[WARN] Failed to retrieve from {source}: {e}")
combined_context = "\n".join(context_chunks)
return combined_context, sources_used