22import logging
33
44import numpy as np
5+ from fastapi import APIRouter , Depends , Query
6+ from redisvl .index import AsyncSearchIndex
7+ from redisvl .query import CountQuery , FilterQuery , VectorQuery
8+
59from arxivsearch import config
6- from arxivsearch .db import redis_helpers
10+ from arxivsearch .db import utils
711from arxivsearch .schema .models import (
812 PaperSimilarityRequest ,
913 SearchResponse ,
1014 UserTextSimilarityRequest ,
1115 VectorSearchResponse ,
1216)
1317from arxivsearch .utils .embeddings import Embeddings
14- from fastapi import APIRouter , Depends , Query
15- from redisvl .index import AsyncSearchIndex
16- from redisvl .query import CountQuery , FilterQuery , VectorQuery
1718
1819logger = logging .getLogger (__name__ )
1920
2627
2728@router .get ("/" , response_model = SearchResponse )
2829async def get_papers (
29- index : AsyncSearchIndex = Depends (redis_helpers .get_async_index ),
30+ index : AsyncSearchIndex = Depends (utils .get_async_index ),
3031 limit : int = Query (default = 20 , description = "Maximum number of papers to return." ),
3132 skip : int = Query (
3233 default = 0 , description = "Number of papers to skip for pagination."
@@ -53,9 +54,8 @@ async def get_papers(
5354 Returns:
5455 SearchResponse: Pydantic model containing papers and total count.
5556 """
56-
5757 # Build queries
58- filter_expression = redis_helpers .build_filter_expression (
58+ filter_expression = utils .build_filter_expression (
5959 years .split ("," ), categories .split ("," )
6060 )
6161 filter_query = FilterQuery (return_fields = [], filter_expression = filter_expression )
@@ -72,7 +72,7 @@ async def get_papers(
7272@router .post ("/vector_search/by_paper" , response_model = VectorSearchResponse )
7373async def find_papers_by_paper (
7474 similarity_request : PaperSimilarityRequest ,
75- index : AsyncSearchIndex = Depends (redis_helpers .get_async_index ),
75+ index : AsyncSearchIndex = Depends (utils .get_async_index ),
7676):
7777 """
7878 Find and return papers similar to a given paper based on vector
@@ -93,7 +93,7 @@ async def find_papers_by_paper(
9393 paper [similarity_request .provider .value ], dtype = np .float32
9494 )
9595 # Build filter expression
96- filter_expression = redis_helpers .build_filter_expression (
96+ filter_expression = utils .build_filter_expression (
9797 similarity_request .years , similarity_request .categories
9898 )
9999 # Create queries
@@ -115,7 +115,7 @@ async def find_papers_by_paper(
115115@router .post ("/vector_search/by_text" , response_model = VectorSearchResponse )
116116async def find_papers_by_text (
117117 similarity_request : UserTextSimilarityRequest ,
118- index : AsyncSearchIndex = Depends (redis_helpers .get_async_index ),
118+ index : AsyncSearchIndex = Depends (utils .get_async_index ),
119119):
120120 """
121121 Find and return papers similar to user-provided text based on
@@ -131,7 +131,7 @@ async def find_papers_by_text(
131131 """
132132
133133 # Build filter expression
134- filter_expression = redis_helpers .build_filter_expression (
134+ filter_expression = utils .build_filter_expression (
135135 similarity_request .years , similarity_request .categories
136136 )
137137 # Check available paper count and create vector from user text
0 commit comments