""" DataBus RAG Provider - wire the world-class RAG engine into DataBus. """ import logging logger = logging.getLogger("databus.rag_provider") async def _rag_search_provider(**kwargs) -> dict | None: """DataBus provider for hybrid RAG search across all collections.""" from dotenv import load_dotenv load_dotenv("/root/backend/.env", override=True) query = kwargs.get("query", kwargs.get("q", "")) collections = kwargs.get("collections", []) top_k = int(kwargs.get("limit", 10)) enrich = kwargs.get("enrich", False) if not query: return { "error": "query required", "collections": [ "rmi_news", "rmi_scams", "rmi_research", "rmi_entities", "rmi_security", ], } try: from app.databus.rag_engine import ai_enrich, hybrid_search if isinstance(collections, str): collections = [c.strip() for c in collections.split(",") if c.strip()] if not collections: collections = ["rmi_news"] results = hybrid_search(query, collections, top_k) if enrich and results.get("results"): results["ai_summary"] = ai_enrich(query, results["results"]) return { "query": query, "results": results.get("results", []), "ai_summary": results.get("ai_summary", ""), "collections_searched": collections, "total_collections": 5, "source": "RMI RAG Engine (Qdrant + Ollama embeddings + Redis cache)", "model": "nomic-embed-text (768d)", } except Exception as e: return {"error": str(e), "source": "RMI RAG Engine"}