docs/components/vectordbs/dbs/azure.mdx
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.
import os
from mem0 import Memory
os.environ["OPENAI_API_KEY"] = "sk-xx" # This key is used for embedding purpose
config = {
"vector_store": {
"provider": "azure_ai_search",
"config": {
"service_name": "<your-azure-ai-search-service-name>",
"api_key": "<your-api-key>",
"collection_name": "mem0",
"embedding_model_dims": 1536
}
}
}
m = Memory.from_config(config)
messages = [
{"role": "user", "content": "I'm planning to watch a movie tonight. Any recommendations?"},
{"role": "assistant", "content": "How about thriller movies? They can be quite engaging."},
{"role": "user", "content": "I'm not a big fan of thriller movies but I love sci-fi movies."},
{"role": "assistant", "content": "Got it! I'll avoid thriller recommendations and suggest sci-fi movies in the future."}
]
m.add(messages, user_id="alice", metadata={"category": "movies"})
config = {
"vector_store": {
"provider": "azure_ai_search",
"config": {
"service_name": "<your-azure-ai-search-service-name>",
"api_key": "<your-api-key>",
"collection_name": "mem0",
"embedding_model_dims": 1536,
"compression_type": "binary",
"use_float16": True # Use half precision for storage efficiency
}
}
}
config = {
"vector_store": {
"provider": "azure_ai_search",
"config": {
"service_name": "<your-azure-ai-search-service-name>",
"api_key": "<your-api-key>",
"collection_name": "mem0",
"embedding_model_dims": 1536,
"hybrid_search": True,
"vector_filter_mode": "postFilter"
}
}
}
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:
Environment Credential: Azure client ID, secret, tenant ID, or certificate in environment variables for service principal authentication.
Workload Identity Credential: Utilizes Azure Workload Identity (relevant for Kubernetes and Azure workloads).
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.
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).
Azure CLI Credential:
Uses the currently logged-in user from the Azure CLI (az login), this is the most common development credential.
Azure PowerShell Credential:
Uses the identity from Azure PowerShell (Connect-AzAccount).
Azure Developer CLI Credential:
Uses the session from Azure Developer CLI (azd auth login).
<Note> If an API is provided, it will be used for authentication over an Azure Identity </Note> To enable Role-Based Access Control (RBAC) for Azure AI Search, follow these steps:
az login).If you are using Azure Identity, do not set the api_key in the configuration.
config = {
"vector_store": {
"provider": "azure_ai_search",
"config": {
"service_name": "<your-azure-ai-search-service-name>",
"collection_name": "mem0",
"embedding_model_dims": 1536,
"compression_type": "binary",
"use_float16": True # Use half precision for storage efficiency
}
}
}
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.AZURE_CLIENT_ID: The client ID of the user-assigned managed identity.az login.Connect-AzAccount.azd auth login.Troubleshooting tips for Azure Identity.
| Parameter | Description | Default Value | Options |
|---|---|---|---|
service_name | Azure AI Search service name | Required | - |
api_key | API key of the Azure AI Search service | Optional | If not present, the Azure Identity credential chain will be used |
collection_name | The name of the collection/index to store vectors | mem0 | Any valid index name |
embedding_model_dims | Dimensions of the embedding model | 1536 | Any integer value |
compression_type | Type of vector compression to use | none | none, scalar, binary |
use_float16 | Store vectors in half precision (Edm.Half) | False | True, False |
vector_filter_mode | Vector filter mode to use | preFilter | postFilter, preFilter |
hybrid_search | Use hybrid search | False | True, False |
compression_type:
none: No compression, uses full vector precisionscalar: Scalar quantization with reasonable balance of speed and accuracybinary: Binary quantization for maximum compression with some accuracy trade-offvector_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.