Support modern Qdrant search API
This commit is contained in:
@@ -3,7 +3,7 @@ from typing import List, Dict, Any, Optional
|
||||
from pathlib import Path
|
||||
|
||||
from .config import settings
|
||||
from .vector_store import get_client, _collection_name as VECTOR_COLLECTION
|
||||
from .vector_store import get_client, query_points
|
||||
from .embeddings import embed_text, get_embedding_size
|
||||
from .db import get_chunks_for_library, list_libraries
|
||||
|
||||
@@ -55,12 +55,7 @@ def search_docs(
|
||||
search_filter = None
|
||||
|
||||
# Perform vector search
|
||||
results = client.search(
|
||||
collection_name=VECTOR_COLLECTION,
|
||||
query_vector=query_embedding,
|
||||
limit=limit,
|
||||
search_filter=search_filter
|
||||
)
|
||||
results = query_points(client, query_embedding, limit, search_filter)
|
||||
|
||||
# Format and return results
|
||||
formatted_results = []
|
||||
|
||||
@@ -64,6 +64,37 @@ def get_embedding_size() -> int:
|
||||
return 384
|
||||
|
||||
|
||||
def query_points(
|
||||
client: Any,
|
||||
query_vector: List[float],
|
||||
limit: int,
|
||||
search_filter: Optional[Any] = None,
|
||||
) -> List[Any]:
|
||||
"""Run a vector query across old and new qdrant-client APIs."""
|
||||
legacy_search = getattr(client, "search", None)
|
||||
if callable(legacy_search):
|
||||
return legacy_search(
|
||||
collection_name=_collection_name,
|
||||
query_vector=query_vector,
|
||||
limit=limit,
|
||||
search_filter=search_filter,
|
||||
)
|
||||
|
||||
modern_query = getattr(client, "query_points", None)
|
||||
if not callable(modern_query):
|
||||
raise RuntimeError(
|
||||
"Installed qdrant-client supports neither search() nor query_points()"
|
||||
)
|
||||
|
||||
response = modern_query(
|
||||
collection_name=_collection_name,
|
||||
query=query_vector,
|
||||
limit=limit,
|
||||
query_filter=search_filter,
|
||||
)
|
||||
return list(response.points)
|
||||
|
||||
|
||||
def create_collection(client: Any, collection_name: str, size: int, distance: Any) -> None:
|
||||
"""Create a Qdrant collection across qdrant-client keyword changes."""
|
||||
vector_params = VectorParams(size=size, distance=distance)
|
||||
@@ -255,12 +286,7 @@ async def search_vectors(
|
||||
)
|
||||
|
||||
# Perform vector search
|
||||
results = client.search(
|
||||
collection_name=_collection_name,
|
||||
query_vector=query_vector,
|
||||
limit=limit,
|
||||
search_filter=search_filter
|
||||
)
|
||||
results = query_points(client, query_vector, limit, search_filter)
|
||||
|
||||
# Format results
|
||||
formatted_results = []
|
||||
|
||||
Reference in New Issue
Block a user