cancel
Showing results for 
Search instead for 
Did you mean: 
Machine Learning
Dive into the world of machine learning on the Databricks platform. Explore discussions on algorithms, model training, deployment, and more. Connect with ML enthusiasts and experts.
cancel
Showing results for 
Search instead for 
Did you mean: 

databricks-vectorsearch 0.53 unable to use similarity_search()

snaveedgm
New Contributor

I have an issue with databricks-vectorsearch package. Version 0.51 suddenly stopped working this week because:

  • It now expected me to provide azure_tenant_id in addition to service principal's client ID and secret.
  • After supplying tenant ID, it showed some bug like "Unsupported Types" time.time() + oauth_token_data["expires_in"].
  • I then upgraded to 0.53 and this bug was resolved and some functions like get_index() started working. However, now the similarity_search() function gives:
    • b'{"error_code":"PERMISSION_DENIED","message":"Failed to call Model Serving endpoint: databricks-bge-large-en."}', status_code 403
  • I have tried querying the databricks-bge-large-en  endpoint separately via REST for my service account and it works fine, so the issue seems specific to this package.

Please advise.

 

Code Snippet:

from databricks.vector_search.client import VectorSearchClient

 

vsc = VectorSearchClient(

    workspace_url=workspace_url,

    service_principal_client_id=sp_client_id,

    service_principal_client_secret=sp_client_secret,

    azure_tenant_id=tenant_id

)

index = vsc.get_index(endpoint_name=endpoint_name, index_name=index_name)

index.similarity_search(num_results=3, columns=["chunked_text"], query_text="example_query")

1 REPLY 1

stbjelcevic
Databricks Employee
Databricks Employee

Hi @snaveedgm ,

This is interesting - can you double-check that the service principal has CAN QUERY on the embedding endpoint used for ingestion and/or querying (databricks-bge-large-en in your case)? Even though your direct REST test works, double-check permissions are consistent across workspaces/endpoints if you have multi-workspace setups.

Given your environment and error, the fastest unblock is either PAT or query_vector:

from databricks.vector_search.client import VectorSearchClient

# Use PAT (set DATABRICKS_TOKEN in the environment or pass personal_access_token)
vsc = VectorSearchClient(
workspace_url=workspace_url,
personal_access_token=os.environ["DATABRICKS_TOKEN"] # or pass the token directly
)

index = vsc.get_index(endpoint_name=endpoint_name, index_name=index_name)

Join Us as a Local Community Builder!

Passionate about hosting events and connecting people? Help us grow a vibrant local community—sign up today to get started!

Sign Up Now