def create_or_update_sample_index()

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)