Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

As compared with other search engines such as Elasticsearch or OpenSearch, there are several items to take into consideration.

Azure AI Search API Version

The Azure AI Search engine for Gaia was initially implemented using version 2024-05-01-preview.  This version provides features such as Semantic Search and Semantic Reranking that were otherwise not available in the regular versions.  The version to be used can be changed in the config.py file under the engines section.

Table of Contents

QPL Implementation for Azure

A QPL to Azure translator was implemented in PyQpl with most operators except for SPAN related ones.  Azure Full query syntax is Lucene based but filters in Azure are OData filter expressions, which are also supported for the specific QPL operators.

CRUD and bulk operations

Azure doesn't support single CRUD (Create, Update and Delete) operations.  These operations need to be performed inside a bulk operation.  Having said this, the Gaia implementation internally builds the bulk payload that Azure requires for operations such as Index Document, Delete, Update and Upsert.

Update/Delete by query

Azure doesn't support updates or deletes by query.  A two step process of query and then update/delete will need to be performed.

Boolean Structures

Boolean structures are not supported by Azure.  A similar behavior can be achieved using the Lucene query syntax.

Inner hits

While Azure supports complex types of values up to an extent, inner hit transformation was not implemented in the Engine since the results in Azure include all nested values and can be queried within a normal query using Lucene syntax.

Multi-search support

The current implementation of Azure AI Search does not support performing multiple index searches.  A separate search needs to be done for each.

Scroll search support

Azure does not support scroll search.  Pagination in azure is done by using the regular top/skip arguments in the search request using the default results order and range filters as specified here:

https://learn.microsoft.com/en-us/azure/search/search-pagination-page-layout#paging-through-a-large-number-of-results

Index templates and mapping support

Azure does not support index templates as a way to predefine the schema of automatically created indexes.  Indexes will need to be created by an explicit call to the corresponding Engine method.

Vector queries

Vector queries were not implemented due to the fact that they can be performed

.toc

through semantic or hybrid queries using natural language and letting the search service do the embedding.  The REST endpoint used for embedding in Azure is extremely slow and prone to throttling errors.  If need be, an external direct call to the model can be done for text encoding.

Highlighting

Highlighting in Azure is not supported in hybrid search, only in full and semantic searches.

Spell checking

Spell checking in Azure AI Search can be performed when configured but it happens internally with no feedback to the user.  This feature was not used because in some cases an apparent misspell might be intended by the user.