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"),
)
]
),
)
)