File size: 1,365 Bytes
c674e24
 
 
22d4865
 
c674e24
22d4865
c674e24
 
6eb1e8c
c674e24
22d4865
c674e24
22d4865
 
c674e24
 
63e95b2
c674e24
 
 
 
 
 
63e95b2
c674e24
63e95b2
c674e24
 
 
 
 
 
 
 
 
 
 
 
 
 
63e95b2
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
import torch
from fastapi import Request
from qdrant_client.http import models
from .BaseControllers import BaseControllers
from .SearchControllers import SearchControllers

class SimilaritySearchControllers(BaseControllers, SearchControllers):
    def __init__(
        self,
        request: Request,
        limit: int,
        image_features: torch.tensor
    ):
        BaseControllers.__init__(self)
        SearchControllers.__init__(self, limit=limit, request=request)
        self.image_features = image_features

    async def simple_search(self):
        search_res = self.client.search(
            collection_name="image_features",
            query_vector=self.image_features[0].tolist(),
            limit=self.limit
        )

        return await self.url_response(search_res=search_res)

    async def color_filter_search(self, color: str):
        search_res = self.client.search(
            collection_name="image_features",
            query_vector=self.image_features[0].tolist(),
            limit=self.limit,
            query_filter=models.Filter(
                must=[
                    models.FieldCondition(
                        key="color",
                        match=models.MatchValue(value=color)
                    )
                ]
            )
        )

        return await self.url_response(search_res=search_res)