in demo-python/code/indexers/document-intelligence-custom-skill/scripts/setup_search_service.py [0:0]
def create_or_update_sample_index(search_index_client: SearchIndexClient):
vector_dimensions = os.environ["AZURE_OPENAI_EMB_MODEL_DIMENSIONS"]
# Create a search index
fields = [
SearchField(name="parent_id", type=SearchFieldDataType.String, sortable=True, filterable=True, facetable=False),
SearchField(name="title", type=SearchFieldDataType.String, sortable=True, filterable=True, facetable=False),
SearchField(name="chunk_id", type=SearchFieldDataType.String, key=True, sortable=True, filterable=True, facetable=False, analyzer_name="keyword"),
SearchField(name="chunk", type=SearchFieldDataType.String, sortable=False, filterable=False, facetable=False),
SearchField(name="chunk_headers", type=SearchFieldDataType.Collection(SearchFieldDataType.String), sortable=False, filterable=False, facetable=False),
SearchField(name="vector", type=SearchFieldDataType.Collection(SearchFieldDataType.Single), vector_search_dimensions=vector_dimensions, vector_search_profile_name="hnswProfile"),
]
vectorizer_resource_uri = os.environ["AZURE_OPENAI_ENDPOINT"]
vectorizer_deployment = os.environ["AZURE_OPENAI_EMB_DEPLOYMENT"]
vectorizer_model = os.environ["AZURE_OPENAI_EMB_MODEL"]
# Configure the vector search configuration
vector_search = VectorSearch(
algorithms=[
HnswAlgorithmConfiguration(
name="hnsw"
)
],
profiles=[
VectorSearchProfile(
name="hnswProfile",
algorithm_configuration_name="hnsw",
vectorizer="vectorizer",
)
],
vectorizers=[
AzureOpenAIVectorizer(
name="vectorizer",
azure_open_ai_parameters=AzureOpenAIParameters(
resource_uri=vectorizer_resource_uri,
deployment_id=vectorizer_deployment,
model_name=vectorizer_model
)
)
]
)
semantic_config = SemanticConfiguration(
name="my-semantic-config",
prioritized_fields=SemanticPrioritizedFields(
content_fields=[SemanticField(field_name="chunk")]
),
)
# Create the semantic settings with the configuration
semantic_search = SemanticSearch(configurations=[semantic_config])
# Create the search index with the semantic settings
index = SearchIndex(name=sample_index_name, fields=fields, vector_search=vector_search, semantic_search=semantic_search)
search_index_client.create_or_update_index(index)