diff --git a/test_elasticsearch/test_server/test_helpers_vectorstore/__init__.py b/test_elasticsearch/test_server/test_vectorstore/__init__.py similarity index 100% rename from test_elasticsearch/test_server/test_helpers_vectorstore/__init__.py rename to test_elasticsearch/test_server/test_vectorstore/__init__.py diff --git a/test_elasticsearch/test_server/test_helpers_vectorstore/conftest.py b/test_elasticsearch/test_server/test_vectorstore/conftest.py similarity index 100% rename from test_elasticsearch/test_server/test_helpers_vectorstore/conftest.py rename to test_elasticsearch/test_server/test_vectorstore/conftest.py diff --git a/test_elasticsearch/test_server/test_helpers_vectorstore/docker-compose.yml b/test_elasticsearch/test_server/test_vectorstore/docker-compose.yml similarity index 100% rename from test_elasticsearch/test_server/test_helpers_vectorstore/docker-compose.yml rename to test_elasticsearch/test_server/test_vectorstore/docker-compose.yml diff --git a/test_elasticsearch/test_server/test_helpers_vectorstore/test_embedding_service.py b/test_elasticsearch/test_server/test_vectorstore/test_embedding_service.py similarity index 100% rename from test_elasticsearch/test_server/test_helpers_vectorstore/test_embedding_service.py rename to test_elasticsearch/test_server/test_vectorstore/test_embedding_service.py diff --git a/test_elasticsearch/test_server/test_helpers_vectorstore/test_vectorstore.py b/test_elasticsearch/test_server/test_vectorstore/test_vectorstore.py similarity index 100% rename from test_elasticsearch/test_server/test_helpers_vectorstore/test_vectorstore.py rename to test_elasticsearch/test_server/test_vectorstore/test_vectorstore.py diff --git a/test_elasticsearch/test_strategies.py b/test_elasticsearch/test_strategies.py new file mode 100644 index 000000000..11eb21579 --- /dev/null +++ b/test_elasticsearch/test_strategies.py @@ -0,0 +1,62 @@ +# Licensed to Elasticsearch B.V. under one or more contributor +# license agreements. See the NOTICE file distributed with +# this work for additional information regarding copyright +# ownership. Elasticsearch B.V. licenses this file to you under +# the Apache License, Version 2.0 (the "License"); you may +# not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. + +import pytest + +from elasticsearch.helpers.vectorstore import ( + DenseVectorScriptScoreStrategy, + DenseVectorStrategy, + SparseVectorStrategy, +) + + +def test_sparse_vector_strategy_raises_errors(): + strategy = SparseVectorStrategy("my_model_id") + + with pytest.raises(ValueError): + # missing query + strategy.es_query(None, None, "text_field", "vector_field", 10, 20, []) + + with pytest.raises(ValueError): + # query vector not allowed + strategy.es_query("hi", [1, 2, 3], "text_field", "vector_field", 10, 20, []) + + +def test_dense_vector_strategy_raises_error(): + with pytest.raises(ValueError): + # unknown distance + DenseVectorStrategy(hybrid=True, text_field=None) + + with pytest.raises(ValueError): + # unknown distance + DenseVectorStrategy(distance="unknown distance").es_mappings_settings( + "text_field", "vector_field", 10 + ) + + +def test_dense_vector_script_score_strategy_raises_error(): + with pytest.raises(ValueError): + # missing query vector + DenseVectorScriptScoreStrategy().es_query( + None, None, "text_field", "vector_field", 10, 20, [] + ) + + with pytest.raises(ValueError): + # unknown distance + DenseVectorScriptScoreStrategy(distance="unknown distance").es_query( + None, [1, 2, 3], "text_field", "vector_field", 10, 20, [] + )