diff --git a/integrations/langchain/src/databricks_langchain/vectorstores.py b/integrations/langchain/src/databricks_langchain/vectorstores.py index ae24f7b4..1ec73856 100644 --- a/integrations/langchain/src/databricks_langchain/vectorstores.py +++ b/integrations/langchain/src/databricks_langchain/vectorstores.py @@ -230,6 +230,11 @@ def __init__( f"The `index_name` parameter must be a string, but got {type(index_name).__name__}." ) + if index_name.count(".") != 2: + raise ValueError( + f"The `index_name` parameter must be in the format 'catalog.schema.name', but got {index_name!r}." + ) + try: from databricks.vector_search.client import ( # type: ignore[import] VectorSearchClient, diff --git a/integrations/langchain/tests/unit_tests/test_vectorstores.py b/integrations/langchain/tests/unit_tests/test_vectorstores.py index dd92be1f..b352b548 100644 --- a/integrations/langchain/tests/unit_tests/test_vectorstores.py +++ b/integrations/langchain/tests/unit_tests/test_vectorstores.py @@ -52,7 +52,9 @@ def test_init_with_endpoint_name() -> None: assert vectorsearch.index.describe() == INDEX_DETAILS[DELTA_SYNC_INDEX] -@pytest.mark.parametrize("index_name", [None, 123, MagicMock(spec=VectorSearchIndex)]) +@pytest.mark.parametrize( + "index_name", [None, 123, "invalid.name", MagicMock(spec=VectorSearchIndex)] +) def test_init_fail_invalid_index_name(index_name) -> None: with pytest.raises(ValueError, match="The `index_name` parameter must be"): DatabricksVectorSearch(index_name=index_name)