Initial clean commit - unified Lyra stack
This commit is contained in:
32
cortex/rag.py
Normal file
32
cortex/rag.py
Normal file
@@ -0,0 +1,32 @@
|
||||
import os, requests
|
||||
from typing import Dict, Any, List
|
||||
|
||||
RAG_API_URL = os.getenv("RAG_API_URL", "http://localhost:7090")
|
||||
|
||||
def query_rag(query: str, where: Dict[str, Any] | None = None, k: int = 6) -> Dict[str, Any]:
|
||||
payload = {"query": query, "k": k}
|
||||
if where:
|
||||
payload["where"] = where
|
||||
try:
|
||||
r = requests.post(f"{RAG_API_URL}/rag/search", json=payload, timeout=8)
|
||||
r.raise_for_status()
|
||||
data = r.json() or {}
|
||||
except Exception as e:
|
||||
data = {"answer": "", "chunks": [], "error": str(e)}
|
||||
return data
|
||||
|
||||
def format_rag_block(result: Dict[str, Any]) -> str:
|
||||
answer = (result.get("answer") or "").strip()
|
||||
chunks: List[Dict[str, Any]] = result.get("chunks") or []
|
||||
lines = ["[RAG]"]
|
||||
if answer:
|
||||
lines.append(f"Synthesized answer: {answer}")
|
||||
if chunks:
|
||||
lines.append("Top excerpts:")
|
||||
for i, c in enumerate(chunks[:5], 1):
|
||||
src = c.get("metadata", {}).get("source", "unknown")
|
||||
txt = (c.get("text") or "").strip().replace("\n", " ")
|
||||
if len(txt) > 220:
|
||||
txt = txt[:220] + "…"
|
||||
lines.append(f" {i}. {txt} — {src}")
|
||||
return "\n".join(lines) + ("\n" if lines else "")
|
||||
Reference in New Issue
Block a user