From 9f2dd0dfc35558a8881c2322c99044b8d9e3f3cb Mon Sep 17 00:00:00 2001 From: johnpccd Date: Sun, 25 May 2025 16:29:26 +0200 Subject: [PATCH] remove unused function --- README.md | 1 - src/api/v1/search.py | 119 ------------------------------------------- 2 files changed, 120 deletions(-) diff --git a/README.md b/README.md index b8e5f74..21de490 100644 --- a/README.md +++ b/README.md @@ -411,7 +411,6 @@ The API provides the following main endpoints with their authentication and pagi - `collection_id` (optional) - Filter by collection - **Response includes:** `results`, `total`, `limit`, `threshold`, `query` - `POST /api/v1/search` - Advanced search with same pagination - - `GET /api/v1/search/similar/{image_id}` - Find similar images with pagination ### 🔑 **Authentication Model** diff --git a/src/api/v1/search.py b/src/api/v1/search.py index c457f6e..f1499c7 100644 --- a/src/api/v1/search.py +++ b/src/api/v1/search.py @@ -237,122 +237,3 @@ async def search_images_advanced( except Exception as e: logger.error(f"Error in advanced search: {e}") raise HTTPException(status_code=500, detail="Advanced search failed") - -@router.get("/similar/{image_id}", response_model=SearchResponse) -async def find_similar_images( - image_id: str, - request: Request, - limit: int = Query(10, ge=1, le=50, description="Number of similar images to return"), - threshold: float = Query(0.65, ge=0.0, le=1.0, description="Similarity threshold"), - current_user: UserModel = Depends(get_current_user) -): - """ - Find images similar to a given image - """ - log_request( - { - "path": request.url.path, - "method": request.method, - "image_id": image_id, - "limit": limit, - "threshold": threshold - }, - user_id=str(current_user.id), - team_id=str(current_user.team_id) - ) - - try: - from bson import ObjectId - - # Get the reference image - try: - obj_id = ObjectId(image_id) - except: - raise HTTPException(status_code=400, detail="Invalid image ID") - - reference_image = await image_repository.get_by_id(obj_id) - if not reference_image: - raise HTTPException(status_code=404, detail="Reference image not found") - - # Check team access - if reference_image.team_id != current_user.team_id: - raise HTTPException(status_code=403, detail="Not authorized to access this image") - - # Check if the image has embeddings - if not reference_image.has_embedding or not reference_image.embedding_id: - raise HTTPException(status_code=400, detail="Reference image does not have embeddings") - - # Get the embedding for the reference image - reference_data = get_vector_db_service().get_image_vector(image_id) - if not reference_data or not reference_data.get('vector'): - raise HTTPException(status_code=400, detail="Failed to get reference image embedding") - - reference_embedding = reference_data['vector'] - - # Search for similar images - search_results = get_vector_db_service().search_similar_images( - query_vector=reference_embedding, - limit=limit + 1, # +1 to account for the reference image itself - score_threshold=threshold, - filter_conditions={"team_id": str(current_user.team_id)} if current_user.team_id else None - ) - - # Remove the reference image from results - search_results = [result for result in search_results if result['image_id'] != image_id][:limit] - - if not search_results: - return SearchResponse( - query=f"Similar to image {image_id}", - results=[], - total=0, - limit=limit, - threshold=threshold - ) - - # Get image IDs and scores from search results - image_ids = [result['image_id'] for result in search_results if result['image_id']] - scores = {result['image_id']: result['score'] for result in search_results if result['image_id']} - - # Get image metadata from database - images = await image_repository.get_by_ids(image_ids) - - # Convert to response format with similarity scores - results = [] - for image in images: - image_id_str = str(image.id) - similarity_score = scores.get(image_id_str, 0.0) - - result = ImageResponse( - id=image_id_str, - filename=image.filename, - original_filename=image.original_filename, - file_size=image.file_size, - content_type=image.content_type, - storage_path=image.storage_path, - team_id=str(image.team_id), - uploader_id=str(image.uploader_id), - upload_date=image.upload_date, - description=image.description, - metadata=image.metadata, - has_embedding=image.has_embedding, - collection_id=str(image.collection_id) if image.collection_id else None, - similarity_score=similarity_score - ) - results.append(result) - - # Sort by similarity score (highest first) - results.sort(key=lambda x: x.similarity_score or 0, reverse=True) - - return SearchResponse( - query=f"Similar to image {image_id}", - results=results, - total=len(results), - limit=limit, - threshold=threshold - ) - - except HTTPException: - raise - except Exception as e: - logger.error(f"Error finding similar images: {e}") - raise HTTPException(status_code=500, detail="Similar image search failed") \ No newline at end of file