Skip to main content
Azure AI Search (formerly known as “Azure Cognitive Search”) provides secure information retrieval at scale over user-owned content in traditional and generative AI search applications.

Usage

Using binary compression for large vector collections

Using Azure Identity for Authentication

As an alternative to using an API key, the Azure Identity credential chain can be used to authenticate with Azure OpenAI. The list below shows the order of precedence for credential application:
  1. Environment Credential: Azure client ID, secret, tenant ID, or certificate in environment variables for service principal authentication.
  2. Workload Identity Credential: Utilizes Azure Workload Identity (relevant for Kubernetes and Azure workloads).
  3. Managed Identity Credential: Authenticates as a Managed Identity (for apps/services hosted in Azure with Managed Identity enabled); this is the most secure production credential.
  4. Shared Token Cache Credential / Visual Studio Credential (Windows only): Uses cached credentials from Visual Studio sign-ins (and sometimes VS Code if SSO is enabled).
  5. Azure CLI Credential: Uses the currently logged-in user from the Azure CLI (az login); this is the most common development credential.
  6. Azure PowerShell Credential: Uses the identity from Azure PowerShell (Connect-AzAccount).
  7. Azure Developer CLI Credential: Uses the session from Azure Developer CLI (azd auth login).
If an API is provided, it will be used for authentication over an Azure Identity
To enable Role-Based Access Control (RBAC) for Azure AI Search, follow these steps:
  1. In the Azure Portal, navigate to your Azure AI Search service.
  2. In the left menu, select Settings > Keys.
  3. Change the authentication setting to Role-based access control, or Both if you need API key compatibility. The default is “Key-based authentication”: you must switch it to use Azure roles.
  4. Go to Access Control (IAM):
    • In the Azure Portal, select your Search service.
    • Click Access Control (IAM) on the left.
  5. Add a Role Assignment:
    • Click Add > Add role assignment.
  6. Choose Role:
    • Mem0 requires the Search Index Data Contributor and Search Service Contributor role.
  7. Choose Member
    • To assign to a User, Group, Service Principal or Managed Identity:
      • For production it is recommended to use a service principal or managed identity.
        • For a service principal: select User, group, or service principal and search for the service principal.
        • For a managed identity: select Managed identity and choose the managed identity.
      • For development, you can assign the role to a user account.
        • For development: select User, group, or service principal and pick an Azure Entra ID account (the same used with az login).
  8. Complete the Assignment:
    • Click Review + Assign.
If you are using Azure Identity, do not set the api_key in the configuration.

Environment Variables to Use Azure Identity Credential

  • For an Environment Credential, you will need to set up a Service Principal and set the following environment variables:
    • AZURE_TENANT_ID: Your Azure Active Directory tenant ID.
    • AZURE_CLIENT_ID: The client ID of your service principal or managed identity.
    • AZURE_CLIENT_SECRET: The client secret of your service principal.
  • For a User-Assigned Managed Identity, you will need to set the following environment variable:
    • AZURE_CLIENT_ID: The client ID of the user-assigned managed identity.
  • For a System-Assigned Managed Identity, no additional environment variables are needed.

Developer Logins for Azure Identity Credential

  • For an Azure CLI Credential, you need to have the Azure CLI installed and logged in with az login.
  • For an Azure PowerShell Credential, you need to have the Azure PowerShell module installed and logged in with Connect-AzAccount.
  • For an Azure Developer CLI Credential, you need to have the Azure Developer CLI installed and logged in with azd auth login.
Troubleshooting tips for Azure Identity.

Configuration Parameters

Notes on Configuration Options

  • compression_type:
    • none: No compression, uses full vector precision
    • scalar: Scalar quantization with reasonable balance of speed and accuracy
    • binary: Binary quantization for maximum compression with some accuracy trade-off
  • vector_filter_mode:
    • preFilter: Applies filters before vector search (faster)
    • postFilter: Applies filters after vector search (may provide better relevance)
  • use_float16: Using half precision (float16) reduces storage requirements but may slightly impact accuracy. Useful for very large vector collections.
  • Filterable Fields: The implementation automatically extracts user_id, run_id, and agent_id fields from payloads for filtering.