Spaces:
Sleeping
Sleeping
| """Async wrappers for vector store search.""" | |
| from __future__ import annotations | |
| from functools import partial | |
| from app.async_executor import run_sync_in_executor | |
| from app.models.schemas import SearchResult | |
| from app.vectorstore.base import VectorStore | |
| async def async_vs_search( | |
| vs: VectorStore, | |
| query: str, | |
| tenant_id: str, | |
| k: int = 10, | |
| *, | |
| hierarchy_level: str | None = None, | |
| doc_id_in: frozenset[str] | None = None, | |
| ) -> list[SearchResult]: | |
| search_async = getattr(vs, "search_async", None) | |
| if callable(search_async): | |
| return await search_async( | |
| query, | |
| tenant_id, | |
| k=k, | |
| hierarchy_level=hierarchy_level, | |
| doc_id_in=doc_id_in, | |
| ) | |
| return await run_sync_in_executor( | |
| partial( | |
| vs.search, | |
| query, | |
| tenant_id, | |
| k=k, | |
| hierarchy_level=hierarchy_level, | |
| doc_id_in=doc_id_in, | |
| ), | |
| ) | |