"""RAG 知识库路由。""" from fastapi import APIRouter, Depends, Query from sqlalchemy.ext.asyncio import AsyncSession from app.core.database import get_db from app.core.dependencies import get_current_user from app.models.user import User from app.schemas.common import ApiResponse, success from app.services.rag import semantic_search, build_context router = APIRouter(prefix="/knowledge", tags=["knowledge"]) @router.get("/search", response_model=ApiResponse[list]) async def search_knowledge( q: str = Query(..., min_length=1), top_k: int = Query(default=5, ge=1, le=20), db: AsyncSession = Depends(get_db), user: User = Depends(get_current_user), ): """语义搜索知识库。""" results = await semantic_search(db, user.tenant_id, q, top_k) return success(data=results) @router.post("/context", response_model=ApiResponse[str]) async def get_context(req: dict, db: AsyncSession = Depends(get_db), user: User = Depends(get_current_user)): """构建 RAG 上下文。""" results = await semantic_search(db, user.tenant_id, req.get("query", "")) context = await build_context(results) return success(data=context)