Vector Fields error while creating Azure Search index with Python SDK
Yash Shukla
40
Reputation points
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.
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")