|
from fastapi import APIRouter, HTTPException |
|
from llama_index.core.indices.base import BaseIndex |
|
from llama_index.core.query_engine import BaseQueryEngine |
|
from components.indexers.news_indexer import get_or_build_index |
|
import os |
|
|
|
router = APIRouter() |
|
|
|
DATA_PATH = "data/raw" |
|
INDEX_PATH = "storage/index" |
|
|
|
_index: BaseIndex = None |
|
|
|
def get_index() -> BaseIndex: |
|
global _index |
|
if _index is None: |
|
if not os.path.exists(DATA_PATH): |
|
raise RuntimeError("❌ `data/raw/` is missing! Add documents for indexing.") |
|
_index = get_or_build_index(DATA_PATH, INDEX_PATH) |
|
return _index |
|
|
|
@router.get("/query-news") |
|
def query_news(q: str): |
|
index = get_index() |
|
query_engine: BaseQueryEngine = index.as_query_engine() |
|
response = query_engine.query(q) |
|
return {"response": str(response)} |
|
|