Spaces:
Running
Running
| from functools import lru_cache | |
| from app.modules.search.application.ports.search_provider import SearchProvider | |
| from app.modules.search.application.use_cases.search_all import SearchAllUseCase | |
| from app.modules.search.application.use_cases.search_candidates import ( | |
| SearchCandidatesUseCase, | |
| ) | |
| from app.modules.search.domain.models import ALL_SEARCH_RESOURCE_TYPES, SearchResourceType | |
| from app.modules.search.infrastructure.mock_provider import ( | |
| MockHybridSearchProvider, | |
| get_mock_search_documents, | |
| ) | |
| from app.modules.search.infrastructure.pgvector_provider import ( | |
| PgvectorHybridSearchProvider, | |
| PgvectorPlaceSearchProvider, | |
| ) | |
| from app.modules.search.infrastructure.relevance_policy import build_relevance_policy | |
| from app.modules.search.domain.relevance import SearchRelevancePolicy | |
| from app.modules.places.infrastructure.main_api_nearby_place_provider import ( | |
| MainApiNearbyPlaceProvider, | |
| ) | |
| from app.shared.config.settings import get_settings | |
| from app.shared.dependencies import get_embedding_provider | |
| from app.shared.vector_store.aws_pgvector import AwsPgvectorClient | |
| def get_search_relevance_policy() -> SearchRelevancePolicy: | |
| return build_relevance_policy(get_settings()) | |
| def get_global_search_providers() -> tuple[SearchProvider, ...]: | |
| settings = get_settings() | |
| embedding_provider = get_embedding_provider() | |
| relevance_policy = get_search_relevance_policy() | |
| if settings.vector_store_provider == "aws_pgvector": | |
| vector_client = AwsPgvectorClient(settings, role="reader") | |
| return tuple( | |
| ( | |
| PgvectorPlaceSearchProvider(vector_client, relevance_policy) | |
| if resource_type == SearchResourceType.PLACES | |
| else PgvectorHybridSearchProvider( | |
| resource_type, | |
| vector_client, | |
| relevance_policy, | |
| ) | |
| ) | |
| for resource_type in ALL_SEARCH_RESOURCE_TYPES | |
| ) | |
| documents = get_mock_search_documents() | |
| return tuple( | |
| MockHybridSearchProvider( | |
| resource_type=resource_type, | |
| embedding_provider=embedding_provider, | |
| documents=documents[resource_type], | |
| relevance_policy=relevance_policy, | |
| ) | |
| for resource_type in ALL_SEARCH_RESOURCE_TYPES | |
| ) | |
| def get_search_all_use_case() -> SearchAllUseCase: | |
| return SearchAllUseCase( | |
| embedding_provider=get_embedding_provider(), | |
| providers=list(get_global_search_providers()), | |
| nearby_place_provider=MainApiNearbyPlaceProvider(get_settings()), | |
| ) | |
| def get_search_candidates_use_case() -> SearchCandidatesUseCase: | |
| policy = get_search_relevance_policy() | |
| return SearchCandidatesUseCase( | |
| embedding_provider=get_embedding_provider(), | |
| providers=list(get_global_search_providers()), | |
| policy_version=policy.version, | |
| nearby_place_provider=MainApiNearbyPlaceProvider(get_settings()), | |
| ) | |