in code/embedding-function/utilities/helpers/azure_search_helper.py [0:0]
def create_index(self):
fields = [
SimpleField(
name=self.env_helper.AZURE_SEARCH_FIELDS_ID,
type=SearchFieldDataType.String,
key=True,
filterable=True,
),
SearchableField(
name=self.env_helper.AZURE_SEARCH_CONTENT_COLUMN,
type=SearchFieldDataType.String,
),
SearchField(
name=self.env_helper.AZURE_SEARCH_CONTENT_VECTOR_COLUMN,
type=SearchFieldDataType.Collection(SearchFieldDataType.Single),
searchable=True,
vector_search_dimensions=self.search_dimensions,
vector_search_profile_name="myHnswProfile",
),
SearchableField(
name=self.env_helper.AZURE_SEARCH_FIELDS_METADATA,
type=SearchFieldDataType.String,
),
SearchableField(
name=self.env_helper.AZURE_SEARCH_TITLE_COLUMN,
type=SearchFieldDataType.String,
facetable=True,
filterable=True,
),
SearchableField(
name=self.env_helper.AZURE_SEARCH_SOURCE_COLUMN,
type=SearchFieldDataType.String,
filterable=True,
),
SimpleField(
name=self.env_helper.AZURE_SEARCH_CHUNK_COLUMN,
type=SearchFieldDataType.Int32,
filterable=True,
),
SimpleField(
name=self.env_helper.AZURE_SEARCH_OFFSET_COLUMN,
type=SearchFieldDataType.Int32,
filterable=True,
),
SearchableField(
name=self.env_helper.AZURE_SEARCH_SHAREPOINT_FILE_ID_COLUMN,
type=SearchFieldDataType.String,
filterable=True,
),
]
if self.env_helper.USE_ADVANCED_IMAGE_PROCESSING:
logger.info("Adding image_vector field to index")
fields.append(
SearchField(
name="image_vector",
type=SearchFieldDataType.Collection(SearchFieldDataType.Single),
searchable=True,
vector_search_dimensions=self.image_search_dimensions,
vector_search_profile_name="myHnswProfile",
),
)
index = SearchIndex(
name=self.env_helper.AZURE_SEARCH_INDEX,
fields=fields,
semantic_search=(
SemanticSearch(
configurations=[
SemanticConfiguration(
name=self.env_helper.AZURE_SEARCH_SEMANTIC_SEARCH_CONFIG,
prioritized_fields=SemanticPrioritizedFields(
title_field=None,
content_fields=[
SemanticField(
field_name=self.env_helper.AZURE_SEARCH_CONTENT_COLUMN
)
],
),
)
]
)
),
vector_search=VectorSearch(
algorithms=[
HnswAlgorithmConfiguration(
name="default",
parameters=HnswParameters(
metric=VectorSearchAlgorithmMetric.COSINE
),
kind=VectorSearchAlgorithmKind.HNSW,
),
ExhaustiveKnnAlgorithmConfiguration(
name="default_exhaustive_knn",
kind=VectorSearchAlgorithmKind.EXHAUSTIVE_KNN,
parameters=ExhaustiveKnnParameters(
metric=VectorSearchAlgorithmMetric.COSINE
),
),
],
profiles=[
VectorSearchProfile(
name="myHnswProfile",
algorithm_configuration_name="default",
),
VectorSearchProfile(
name="myExhaustiveKnnProfile",
algorithm_configuration_name="default_exhaustive_knn",
),
],
),
)
if self._index_not_exists(self.env_helper.AZURE_SEARCH_INDEX):
logger.info(
f"Creating or updating index {self.env_helper.AZURE_SEARCH_INDEX}"
)
self.search_index_client.create_index(index)