def _create_index()

in datastore/providers/azuresearch_datastore.py [0:0]


    def _create_index(self, mgmt_client: SearchIndexClient):
        """
        Creates an Azure Cognitive Search index, including a semantic search configuration if a name is specified for it
        """
        logger.info(
            f"Creating index {AZURESEARCH_INDEX} in service {AZURESEARCH_SERVICE}"
            + (
                f" with semantic search configuration {AZURESEARCH_SEMANTIC_CONFIG}"
                if AZURESEARCH_SEMANTIC_CONFIG is not None
                else ""
            )
        )
        mgmt_client.create_index(
            SearchIndex(
                name=AZURESEARCH_INDEX,
                fields=[
                    SimpleField(
                        name=FIELDS_ID, type=SearchFieldDataType.String, key=True
                    ),
                    SearchableField(
                        name=FIELDS_TEXT,
                        type=SearchFieldDataType.String,
                        analyzer_name="standard.lucene",
                    ),
                    SearchField(
                        name=FIELDS_EMBEDDING,
                        type=SearchFieldDataType.Collection(SearchFieldDataType.Single),
                        hidden=False,
                        searchable=True,
                        filterable=False,
                        sortable=False,
                        facetable=False,
                        vector_search_dimensions=AZURESEARCH_DIMENSIONS,
                        vector_search_configuration="default",
                    ),
                    SimpleField(
                        name=FIELDS_DOCUMENT_ID,
                        type=SearchFieldDataType.String,
                        filterable=True,
                        sortable=True,
                    ),
                    SimpleField(
                        name=FIELDS_SOURCE,
                        type=SearchFieldDataType.String,
                        filterable=True,
                        sortable=True,
                    ),
                    SimpleField(
                        name=FIELDS_SOURCE_ID,
                        type=SearchFieldDataType.String,
                        filterable=True,
                        sortable=True,
                    ),
                    SimpleField(name=FIELDS_URL, type=SearchFieldDataType.String),
                    SimpleField(
                        name=FIELDS_CREATED_AT,
                        type=SearchFieldDataType.DateTimeOffset,
                        filterable=True,
                        sortable=True,
                    ),
                    SimpleField(
                        name=FIELDS_AUTHOR,
                        type=SearchFieldDataType.String,
                        filterable=True,
                        sortable=True,
                    ),
                ],
                semantic_settings=None
                if AZURESEARCH_SEMANTIC_CONFIG is None
                else SemanticSettings(
                    configurations=[
                        SemanticConfiguration(
                            name=AZURESEARCH_SEMANTIC_CONFIG,
                            prioritized_fields=PrioritizedFields(
                                title_field=None,
                                prioritized_content_fields=[
                                    SemanticField(field_name=FIELDS_TEXT)
                                ],
                            ),
                        )
                    ]
                ),
                vector_search=VectorSearch(
                    algorithm_configurations=[
                        HnswVectorSearchAlgorithmConfiguration(
                            name="default",
                            kind="hnsw",
                            # Could change to dotproduct for OpenAI's embeddings since they normalize vectors to unit length
                            hnsw_parameters=HnswParameters(metric="cosine"),
                        )
                    ]
                ),
            )
        )