Vector Fields error while creating Azure Search index with Python SDK

Yash Shukla 40 Reputation points
2024-04-20T09:37:21.36+00:00

I am using the Python SDK azure-search-documents=11.4.0b8 to create a search index in Azure AI Search. However, I am encountering an error after creation, which is shown in the user's attached image. The code I am using for index creation is provided in the question. I understand that the preview definition I am using will eventually be deprecated, so I need help mitigating this error.

User's image

from azure.search.documents import SearchClient
from azure.search.documents.indexes import SearchIndexClient
from azure.search.documents.indexes.models import (
    HnswParameters,
    PrioritizedFields,
    SearchableField,
    SearchField,
    SearchFieldDataType,
    SearchIndex,
    SemanticConfiguration,
    SemanticField,
    SemanticSettings,
    SimpleField,
    VectorSearch,
    VectorSearchAlgorithmConfiguration,
)


def create_search_index(index):
  client = SearchClient(
      endpoint=f"https://{searchservice}.search.windows.net/",
      credential=search_creds
  )

  fields = [
      SearchField(name="id", type="Edm.String", key=True),
      SearchField(name="content", type="Edm.String", analyzer_name="en.microsoft"),
      SearchField(
          name="embedding",
          type=SearchFieldDataType.Collection(SearchFieldDataType.Single),
          vector_dimension=1536,  # Use vector_dimension instead of vector_search_dimensions
          vector_configuration="default",  # Use vector_configuration instead of vector_search_configuration
      ),
      SearchField(name="category", type="Edm.String", filterable=True, facetable=True),
      SearchField(name="sourcepage", type="Edm.String", filterable=True, facetable=True),
      SearchField(name="sourcefile", type="Edm.String", filterable=True, facetable=True),
  ]

  if useacls:
      fields.extend([
          SearchField(name="oids", type=SearchFieldDataType.Collection(SearchFieldDataType.String), filterable=True),
          SearchField(name="groups", type=SearchFieldDataType.Collection(SearchFieldDataType.String), filterable=True),
      ])

  if index not in client.list_index_names():
      index_definition = SearchIndex(
          name=index,
          fields=fields,
          semantic_settings=SemanticSettings(
              configurations=[
                  SemanticConfiguration(
                      name="default",
                      prioritized_fields=PrioritizedFields(
                          title_field=None,
                          prioritized_content_fields=[SemanticField(field_name="content")]
                      )
                  )
              ]
          ),
          vector_search=VectorSearch(
              algorithms=[
                  VectorSearchAlgorithmConfiguration(
                      name="default",
                      kind="hnsw",
                      hnsw_parameters=HnswParameters(metric="cosine")
                  )
              ]
          )
      )

      if verbose:
          print(f"Creating search index")
      client.create_index(index_definition)
  else:
      if verbose:
          print(f"Search index {index} already exists")
Azure AI Search
Azure AI Search
An Azure search service with built-in artificial intelligence capabilities that enrich information to help identify and explore relevant content at scale.
718 questions
{count} votes