mirror of
https://github.com/langgenius/dify.git
synced 2026-05-10 05:56:31 +08:00
fix: parameterize myscale query vector and add regression test
This commit is contained in:
parent
e0436bf2db
commit
b923090e47
@ -142,7 +142,12 @@ class MyScaleVector(BaseVector):
|
||||
)
|
||||
|
||||
def search_by_vector(self, query_vector: list[float], **kwargs: Any) -> list[Document]:
|
||||
return self._search(f"distance(vector, {str(query_vector)})", self._vec_order, **kwargs)
|
||||
return self._search(
|
||||
"distance(vector, %(query_vector)s)",
|
||||
self._vec_order,
|
||||
parameters={"query_vector": query_vector},
|
||||
**kwargs,
|
||||
)
|
||||
|
||||
def search_by_full_text(self, query: str, **kwargs: Any) -> list[Document]:
|
||||
return self._search(
|
||||
|
||||
@ -0,0 +1,32 @@
|
||||
from unittest.mock import MagicMock, patch
|
||||
|
||||
from core.rag.datasource.vdb.myscale.myscale_vector import MyScaleConfig, MyScaleVector
|
||||
|
||||
|
||||
@patch("core.rag.datasource.vdb.myscale.myscale_vector.get_client")
|
||||
def test_search_by_vector_uses_parameterized_query(mock_get_client):
|
||||
mock_client = MagicMock()
|
||||
mock_get_client.return_value = mock_client
|
||||
|
||||
vector = MyScaleVector(
|
||||
collection_name="test_collection",
|
||||
config=MyScaleConfig(
|
||||
host="localhost",
|
||||
port=8123,
|
||||
user="default",
|
||||
password="",
|
||||
database="dify",
|
||||
fts_params="",
|
||||
),
|
||||
)
|
||||
vector._search = MagicMock(return_value=[])
|
||||
|
||||
query_vector = [0.1, 0.2, 0.3]
|
||||
vector.search_by_vector(query_vector, top_k=5)
|
||||
|
||||
vector._search.assert_called_once_with(
|
||||
"distance(vector, %(query_vector)s)",
|
||||
vector._vec_order,
|
||||
parameters={"query_vector": query_vector},
|
||||
top_k=5,
|
||||
)
|
||||
Loading…
Reference in New Issue
Block a user