| from fastapi import APIRouter |
| from qdrant_client import QdrantClient |
| import os |
|
|
| router = APIRouter(prefix="/rag", tags=["RAG Admin"]) |
|
|
|
|
| @router.get("/collections") |
| def list_collections(): |
| client = QdrantClient( |
| url=os.environ["QDRANT_URL"], |
| api_key=os.environ["QDRANT_API_KEY"], |
| ) |
|
|
| collections = client.get_collections().collections |
|
|
| return { |
| "count": len(collections), |
| "collections": [ |
| { |
| "name": c.name, |
| } |
| for c in collections |
| ], |
| } |
|
|
|
|
| @router.get("/collections/{book_id}") |
| def get_collection_info(book_id: str): |
| collection_name = f"book_{book_id}" |
|
|
| client = QdrantClient( |
| url=os.environ["QDRANT_URL"], |
| api_key=os.environ["QDRANT_API_KEY"], |
| ) |
|
|
| try: |
| info = client.get_collection(collection_name) |
| count = client.count(collection_name=collection_name, exact=True) |
|
|
| return { |
| "collection": collection_name, |
| "status": info.status, |
| "vectors_count": count.count, |
| } |
|
|
| except Exception: |
| return { |
| "collection": collection_name, |
| "exists": False, |
| "message": "Collection not found", |
| } |
|
|
|
|
| @router.get("/books") |
| def list_books(): |
| client = QdrantClient( |
| url=os.environ["QDRANT_URL"], |
| api_key=os.environ["QDRANT_API_KEY"], |
| ) |
|
|
| collections = client.get_collections().collections |
|
|
| books = [ |
| c.name.replace("book_", "") for c in collections if c.name.startswith("book_") |
| ] |
|
|
| return { |
| "books_count": len(books), |
| "books": books, |
| } |
|
|