remove unused function

This commit is contained in:
johnpccd 2025-05-25 16:29:26 +02:00
parent 1eb545840e
commit 9f2dd0dfc3
2 changed files with 0 additions and 120 deletions

View File

@ -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**

View File

@ -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")