Cloud / Azure AI search Interview questions
Last updated
1. What is Azure AI Search?
Azure AI Search (formerly Azure Cognitive Search) is a managed search service on Azure. You load your own content into an index, then query it with full-text, vector, hybrid or semantic search over REST or an SDK.
It is used for website and enterprise search, and increasingly as the retrieval layer in RAG (retrieval-augmented generation) apps, where an LLM needs grounded answers from private data.
Three things set it apart from a plain database query: a relevance-tuned query engine, ingestion tools (indexers and skillsets) that pull and enrich data from Azure sources, and built-in scaling and security so you do not run search servers yourself.
Take quiz
Azure Search Studio
Azure Cognitive Search
Azure Bing Custom Search
Azure Data Explorer Search
It retrieves relevant grounding content for the LLM
It fine-tunes the language model on your documents
It hosts the web front end of the chat app
It writes the final answer text on its own
2. What are the main components of Azure AI Search?
An Azure AI Search solution is built from a handful of objects that live on one search service:
- Index - the searchable store of documents and its schema.
- Data source - connection details for the content you want to ingest (Blob Storage, SQL, Cosmos DB and so on).
- Indexer - the crawler that reads a data source and fills the index.
- Skillset - an optional enrichment pipeline (OCR, entity extraction, chunking, embeddings) that runs inside an indexer.
- Synonym maps - query-time term expansion rules.
- Knowledge store - optional storage of enriched output in Azure Storage.
For agentic scenarios you also create knowledge sources and a knowledge base on top of these.
Take quiz
Indexer
Skillset
Suggester
Scoring profile
Data source
Knowledge store
Synonym map
Index
3. What is a search index in Azure AI Search?
A search index is the persistent, queryable store on your search service. It has a schema (a list of fields with types and attributes) and holds the documents you loaded. Queries never touch your original data source, only the index.
Internally, searchable text fields are kept in an inverted index (term to documents), while vector fields are kept in a dedicated vector index. The same index definition can also carry analyzers, scoring profiles, suggesters, a semantic configuration and vector search settings.
Every index needs exactly one key field of type Edm.String.
{ "name": "hotels-index", "fields": [ { "name": "hotelId", "type": "Edm.String", "key": true }, { "name": "hotelName", "type": "Edm.String", "searchable": true, "sortable": true }, { "name": "category", "type": "Edm.String", "filterable": true, "facetable": true }, { "name": "rating", "type": "Edm.Double", "filterable": true, "sortable": true } ] }
Take quiz
One per searchable field
None, the service generates IDs
Two: a primary and a secondary
Exactly one, of type Edm.String
A B-tree on every field
A row-store table
An inverted index
A graph of entity relationships
4. What is a search document in Azure AI Search?
A search document is a single record in an index, represented as a JSON object whose properties match the index fields. It is the unit that gets indexed, scored and returned in results.
What counts as a document is a design choice. For a product catalog it is usually one product. For a RAG index built from PDFs it is usually one chunk of a PDF, carrying the chunk text, its embedding and metadata such as the source file name.
Each document has a unique key value. Uploading a document whose key already exists replaces or merges into the existing one, depending on the action you choose.
Take quiz
The entire index
Each individual token
One chunk of a PDF
Each replica of the service
A number generated by the query engine
A unique string within the index
A URL of the original source file
Identical across documents in a partition
5. What are field attributes in an Azure AI Search index?
Field attributes are flags on each index field that decide what you can do with it. Turning on only what you need keeps the index smaller and faster.
| Attribute | What it enables |
key |
Unique document identifier, used for lookups and updates |
searchable |
Full-text search; text is analyzed and tokenized |
filterable |
Use in OData $filter expressions |
sortable |
Use in $orderby |
facetable |
Use in facet counts for faceted navigation |
retrievable |
Field value can be returned in results |
Each extra attribute adds index size, and attributes on an existing field cannot be switched on later without rebuilding, so decide them up front.
Take quiz
facetable
sortable
searchable
retrievable
It can still be searched or filtered but its value is not returned in results
It cannot be queried at all
It becomes the key field
It is encrypted with a customer-managed key
6. What is an indexer in Azure AI Search?
An indexer is a built-in crawler that connects to a supported data source, extracts text and metadata, maps it to index fields and loads the results. It is the pull model of indexing: the service fetches the data, so you write no ingestion code.
Key behaviors:
- Runs on demand or on a schedule (the minimum interval is 5 minutes).
- Tracks state so later runs only pick up new or changed items.
- Applies field mappings, and optionally a skillset for AI enrichment.
- Reports success, warnings and errors in its execution history.
Take quiz
5 minutes
1 second
1 minute
1 hour
It only works when your app calls the Upload Documents API
It runs only inside the Azure portal
It trains the semantic ranking model
It pulls from a data source on demand or on a schedule
7. What data sources can Azure AI Search indexers pull from?
Built-in indexers cover the main Azure data stores:
- Azure Blob Storage and ADLS Gen2 (PDF, Office files, JSON, CSV, HTML, images and more)
- Azure Table Storage
- Azure SQL Database, SQL Managed Instance and SQL Server on Azure VMs
- Azure Cosmos DB
- Microsoft OneLake (Fabric) and SharePoint Online, with some of these still in preview depending on the API version
For anything without a connector, such as an on-premises database or a SaaS API, use the push model: write code (or an Azure Function or Data Factory pipeline) that sends JSON documents to the index.
Take quiz
Point a blob indexer at it directly
Use a synonym map as the connector
Enable the semantic ranker
Push documents to the index with the Index Documents API
Azure Table Storage
Azure Queue Storage
ADLS Gen2
Azure Cache for Redis
8. What are the push and pull indexing models in Azure AI Search?
In the push model your application calls the Index Documents API and sends JSON. In the pull model an indexer fetches the data for you.
| Push | Pull (indexer) |
| Any data source, since your code does the reading | Only supported connectors |
| You handle batching, retries and throttling | Service handles scheduling, retries, change tracking |
| Up to 1,000 documents (16 MB) per batch | Runs on demand or on a schedule |
| No built-in skillset support, so you enrich yourself | Skillsets run inside the indexer |
Many production systems mix both: indexers for the bulk load and push calls for real-time updates.
Take quiz
Pull model through an indexer only
Neither, a connector is always required
Push model
Pull model through a skillset
100
1,000
10,000
No limit
9. What is a skillset in Azure AI Search?
A skillset is an ordered set of enrichment steps (skills) that an indexer runs on each document after it has been cracked open and before it is written to the index. This is what Microsoft calls AI enrichment.
Built-in skills include OCR, image analysis, language detection, key phrase and entity extraction, Text Split (chunking), Document Layout and embedding skills. A custom Web API skill lets you call your own code.
Skills read from and write to an enriched document tree, for example /document/content. Outputs reach the index through output field mappings or index projections.
{ "@odata.type": "#Microsoft.Skills.Text.SplitSkill", "context": "/document", "textSplitMode": "pages", "maximumPageLength": 2000, "pageOverlapLength": 200, "inputs": [ { "name": "text", "source": "/document/content" } ], "outputs": [ { "name": "textItems", "targetName": "pages" } ] }
Take quiz
Language Detection skill
Text Split skill
Key Phrase Extraction skill
Conditional skill
After document cracking and before the index is written
At query time, after results are ranked
Before the indexer connects to the data source
Inside the semantic ranker
10. What is a knowledge store in Azure AI Search?
A knowledge store is optional storage in your Azure Storage account for the enriched output of a skillset. It is defined inside the skillset as a set of projections.
- Table projections: shaped rows in Azure Table Storage, good for Power BI.
- Object projections: JSON blobs of the enriched document.
- File projections: extracted images saved as blobs.
It is meant for analytics, data science and debugging enrichment results. It is not queried by the search engine and does not replace the search index.
Take quiz
Persisting enriched output in Azure Storage for downstream analysis
Caching query results for faster search
Storing admin API keys
Serving vector queries at runtime
Table
File
Index
Object
11. What is full-text search in Azure AI Search?
Full-text search is the lexical (keyword) search mode. The query is run through an analyzer, matched against terms in the inverted index and ranked with BM25. It finds documents that contain the words you typed, not documents that merely mean the same thing.
It supports stemming, phrase queries, wildcards, fuzzy matching (Lucene syntax), field boosting, synonyms and hit highlighting.
POST https://<service>.search.windows.net/indexes/hotels-index/docs/search?api-version=2026-04-01 { "search": "beach resort pool", "searchFields": "hotelName,description", "select": "hotelName,rating", "top": 5 }
Take quiz
Facets
A suggester
A freshness scoring function
A synonym map
HNSW
PageRank
BM25
Reciprocal Rank Fusion
12. What is vector search in Azure AI Search?
Vector search finds documents by meaning instead of exact words. An embedding model turns text (or images) into an array of floats, you store it in a vector field, and at query time the service returns the nearest neighbours of the query vector.
A vector field is typed Collection(Edm.Single) with a fixed number of dimensions and a vector search profile that names the algorithm (HNSW or exhaustive KNN) and similarity metric (cosine is common).
The embedding model and dimensions used at query time must match those used at indexing time.
{ "select": "title,chunk", "vectorQueries": [ { "kind": "text", "text": "how do I reset my password", "fields": "contentVector", "k": 5 } ] }
Take quiz
The analyzer name
The replica count
The embedding model and its dimensions
The scoring profile name
Levenshtein edit distance
Cosine similarity
Jaccard overlap of tokens
BM25 term frequency
13. What is hybrid search in Azure AI Search?
Hybrid search runs a keyword query and one or more vector queries in a single request, in parallel, and merges the ranked lists into one result set using Reciprocal Rank Fusion (RRF).
It covers the weakness of each side. Keywords catch exact tokens such as product codes, names and error numbers. Vectors catch paraphrases and intent. Adding the semantic ranker on top is a common recipe for high-quality RAG retrieval.
{ "search": "error 0x80070005 install fails", "vectorQueries": [ { "kind": "text", "text": "error 0x80070005 install fails", "fields": "contentVector", "k": 50 } ], "select": "title,chunk", "top": 10 }
Take quiz
Embeddings store exact characters perfectly
The keyword side matches the exact token that embeddings can blur
Hybrid skips the ranking stage
Hybrid turns off the inverted index
With Reciprocal Rank Fusion
By adding raw BM25 and cosine scores
Alphabetically by title
By keeping only the vector list
14. What is the semantic ranker in Azure AI Search?
The semantic ranker is a second-stage reranker that uses Microsoft's language understanding models to reorder the top results of a BM25 or hybrid query by meaning. It does not retrieve anything new, it only reorders what the first stage found.
It adds:
- A
@search.rerankerScorefrom 0 to 4. - Extractive captions (highlighted passages) and optional answers.
To use it, define a semantic configuration on the index (title, content and keyword fields) and send queryType=semantic with the configuration name. It is billed separately from search units.
Take quiz
0 to 4
0 to 1
-1 to 1
0 to 100
A full scan of every document in the index
Only the vector query results
The raw files in blob storage
The top results from the first-stage BM25 or hybrid retrieval
15. What are the service tiers available in Azure AI Search?
You pick a tier when you create the service, and it sets storage, scale limits and price. Switching tiers later generally means creating a new service, so size up front.
| Tier | Intended use |
| Free | Learning and small tests; shared resources, no scaling, no SLA |
| Basic | Small production workloads with a few replicas |
| Standard S1, S2, S3 | General production; more storage and partitions as you go up |
| S3 High Density | Many small indexes (multitenant scenarios) |
| Storage Optimized L1, L2 | Very large indexes at lower cost per TB, with higher query latency |
Microsoft has also introduced a consumption-based serverless model in preview alongside these dedicated tiers.
Take quiz
Basic
Standard S1
Storage Optimized L1
Free
Free
Basic
Storage Optimized (L1, L2)
S3 High Density
16. What are replicas and partitions in Azure AI Search?
Replicas are copies of your index that share query load and give high availability. Partitions split the index into shards, adding storage and faster indexing.
| Replicas | Partitions | |
| Purpose | Query throughput and availability | Storage and indexing throughput |
| Allowed values | 1 to 12 | 1, 2, 3, 4, 6 or 12 |
| SLA need | 2 for read-only, 3 for read-write | None |
A request that fans out to several partitions is merged by the service, and replicas of the same partition answer in a load-balanced way.
Take quiz
Partitions
Suggesters
Replicas
Skillsets
5
6
3
2
17. What is a search unit (SU) and how is Azure AI Search billed?
A search unit is the billing and capacity unit: one replica times one partition. The formula is SU = replicas x partitions, so 2 replicas and 3 partitions is 6 SUs.
You pay an hourly rate per SU for the tier you chose, for as long as the service exists. There is no pause button, so an idle service still bills until you delete it.
Some costs sit outside SUs: built-in AI skills such as OCR are billed through an Azure AI services resource, semantic ranker usage is metered on its own, and models used for agentic query planning bill on your model deployment.
Take quiz
Yes, with the Stop button in the portal
No, billing continues until the service is deleted
Yes, by setting replicas to zero
Yes, by disabling API keys
Built-in AI enrichment skills such as OCR
Each GET request to an index
Every field marked searchable
Each entry in a synonym map
18. What authentication methods does Azure AI Search support?
There are two inbound options, plus managed identity for outbound calls:
- API keys - two admin keys (full control) and up to 50 query keys (read-only on documents).
- Microsoft Entra ID with Azure RBAC - roles such as
Search Service Contributor,Search Index Data ContributorandSearch Index Data Reader. - Managed identity - lets indexers and skills reach Storage, SQL or Azure OpenAI without connection-string secrets.
RBAC is the better choice for production. You can disable key-based access entirely once your apps use Entra tokens.
Take quiz
Search Index Data Reader
Search Service Contributor
Search Index Data Contributor
Storage Blob Data Owner
Admin key
Storage account key
Cosmos DB master key
Query key
19. What is an analyzer in Azure AI Search?
An analyzer turns raw text into the tokens stored in the inverted index, and does the same to query text so both sides line up. It runs three stages in order: character filters, a tokenizer, then token filters (lowercasing, stop words, stemming).
The default is the standard Lucene analyzer. You can switch to a language analyzer such as en.microsoft or en.lucene for stemming, or define a custom analyzer.
Set it per field with analyzer, or split it with indexAnalyzer and searchAnalyzer. Changing it on an existing field needs a rebuild. The Analyze Text API shows the tokens an analyzer produces.
Take quiz
Token filters, tokenizer, character filters
Tokenizer, scorer, character filters
Ranker, tokenizer, token filters
Character filters, tokenizer, token filters
Keyword
Whitespace
Standard Lucene
en.microsoft
20. What is a scoring profile in Azure AI Search?
A scoring profile is part of the index definition that tweaks how text-query relevance scores are calculated. It lets you push certain matches up without changing the data.
- Field weights - a match in
titlecounts more than one inbody. - Functions -
freshness(newer first),magnitude(higher numbers first),distance(nearer first),tag(matching tags first).
Apply it per request with scoringProfile, or make it the index default. Scoring profiles adjust BM25-style scores for text queries; they do not change vector similarity.
{ "name": "boost-recent-titles", "text": { "weights": { "title": 3, "body": 1 } }, "functions": [ { "type": "freshness", "fieldName": "publishedOn", "boost": 2, "parameters": { "boostingDuration": "P30D" } } ] }
Take quiz
magnitude
distance
freshness
tag
Set it in the indexer schedule
Pass the scoringProfile parameter in the search request
Embed it in the skillset
Re-embed all documents with it
21. What is a synonym map in Azure AI Search?
A synonym map is a service-level resource that lists terms that should be treated as equivalent. You attach it to a searchable field, and the engine expands the query at search time. The index itself is not changed.
It uses the Solr format. Equivalent terms are comma-separated; an arrow maps several terms to one:
USA, United States, United States of America Washington, WA => WA
Because expansion happens at query time, you can edit a map and see the effect without rebuilding the index. Synonyms apply to text queries, not to vector queries.
Take quiz
Yes, always a full rebuild
No, expansion happens at query time
Yes, but only for numeric fields
Only after adding a partition
The => arrow
A double colon ::
A pipe symbol |
A tilde ~
22. What are suggesters and autocomplete in Azure AI Search?
Both power type-ahead search boxes, working on partial input as the user types.
- Suggest API - returns matching suggestions, optionally with the documents that matched, for a prefix like "lux".
- Autocomplete API - returns completed terms or short phrases (for example "luxury" or "luxury hotel") and no documents.
Both depend on a suggester declared in the index definition, with a list of sourceFields to draw suggestions from. Autocomplete has modes (oneTerm, twoTerms, oneTermWithContext) that control how much is completed.
Take quiz
Autocomplete
Suggest
Lookup Document
Facet search
In the indexer schedule
In the skillset's cognitive services key
Only in the query URL
In a suggester in the index definition
23. How do you use facets in Azure AI Search?
Facets give the category counts you see in the sidebar of a shopping site. Mark the field facetable, then request it with the facet parameter. The response includes @search.facets with a count per value.
POST /indexes/hotels-index/docs/search?api-version=2026-04-01 { "search": "*", "facets": [ "category,count:5", "rating,interval:1" ], "filter": "rating ge 3" }
When the user clicks a value, send the same query again with a $filter such as category eq 'Resort'. With many partitions, counts on high-cardinality fields can be approximate, so raise count if accuracy matters.
Take quiz
$groupby=category
$orderby=category
$apply=category
facet=category
An Autocomplete call for 'Resort'
A request to delete the facet field
The same query plus $filter=category eq 'Resort'
A new index rebuild
24. What is agentic retrieval in Azure AI Search?
Agentic retrieval is a multi-query pipeline designed to feed LLMs and agents. An LLM first plans the retrieval: it uses the conversation history to break a complex question into focused subqueries. Those run in parallel across your sources, results are semantically reranked, and everything is merged into one grounding response with references.
It beats a single search call for questions such as "compare the refund policy with the warranty terms I asked about earlier", where one query would miss half of the intent.
The trade-offs are extra latency from the planning step and LLM token charges on your own model deployment. Check the current docs, since the 2026-04-01 REST API covers generally available knowledge source types while newer ones remain in preview.
Take quiz
It re-embeds the whole index
It selects which replica answers
It breaks a complex or conversational question into focused subqueries
It compresses stored vectors
To store the vectors
To plan the subqueries
To authenticate indexers
To compress the index
25. What are knowledge bases and knowledge sources in Azure AI Search?
These are the two building blocks of agentic retrieval.
A knowledge source points at content. An indexed source is ingested into a search index for you (for example from a search index, Blob Storage, OneLake, Azure SQL or uploaded files). A remote source is queried live with no indexing (for example the web, an MCP server or a Microsoft 365 or Fabric source).
A knowledge base is the top-level object that groups one or more knowledge sources with the chat model and retrieval instructions. Your app (or a Foundry agent) calls the knowledge base's retrieve action, and the service plans, queries and merges across all its sources.
| Indexed source | Remote source |
| Content is copied into an index | Content is fetched at query time |
| You manage indexing and freshness | Always as fresh as the origin |
| Example: blob container | Example: web or MCP server |
Many source types are still preview, so verify availability before committing a design.
Take quiz
A skillset
A knowledge base
A synonym map
A suggester
Web content queried live without indexing
A blob container ingested into a generated index
A search index you refresh nightly
A OneLake folder indexed by a pipeline
26. What is the difference between simple and full Lucene query syntax?
Both parse the search text, but simple (the default) is forgiving and meant for user-typed input, while full Lucene (queryType=full) is stricter and exposes advanced operators for developers.
| Capability | Simple | Full Lucene |
| AND / OR / NOT | +, |, - |
AND, OR, NOT |
| Phrase and prefix | Yes | Yes |
| Field-scoped terms | No | name:resort |
| Fuzzy and proximity | No | resot~1, "a b"~3 |
| Term boosting and regex | No | pool^2, /res.*/ |
| On bad syntax | Tolerant | Returns an error |
Wildcard and regex terms skip analysis, so stemming and synonyms are not applied to them.
Take quiz
Regex or fuzzy term search
A phrase in double quotes
Excluding a term with a minus sign
Joining terms with the | operator
They are stemmed before matching
They are expanded by synonym maps
They run against vector fields
They skip lexical analysis such as stemming
27. How does BM25 ranking work in Azure AI Search?
BM25 scores a document for a query by combining three ideas:
- Term frequency with saturation - more occurrences help, but with diminishing returns so repeating a word 50 times does not win.
- Inverse document frequency - rare terms count more than common ones.
- Length normalization - a match in a short field counts more than the same match buried in a long one.
Two parameters tune it at the index level: k1 (saturation, default 1.2) and b (length normalization, default 0.75). A higher b penalizes long fields more.
IDF is computed per shard, so tiny indexes spread over several partitions can rank slightly differently between runs. Setting scoringStatistics=global on the query makes the stats consistent.
Take quiz
The reranker score
Facet counts
Partition count
Term frequency saturation controlled by k1
It increases the weight of vector fields
It disables inverse document frequency
It strengthens the penalty on long fields
It raises the top limit
28. How does hybrid search merge results using Reciprocal Rank Fusion?
RRF ignores raw scores and uses only ranks. Each retriever (the keyword query and every vector query) produces its own ranked list, and a document's fused score is the sum of 1 / (k + rank) across the lists it appears in. k is a smoothing constant, commonly shown as 60.
Ranks are used because BM25 scores and cosine similarities live on different scales and cannot be added meaningfully.
| Doc | Text rank | Vector rank | Fused score (k=60) |
| A | 1 | 3 | 1/61 + 1/63 = 0.0323 |
| C | - | 1 | 1/61 = 0.0164 |
| B | 2 | - | 1/62 = 0.0161 |
Document A wins because both retrievers liked it. Vector queries can also carry a weight to tilt the fusion, and the final @search.score is the RRF value, which is why it looks tiny.
Take quiz
Ranks use less storage
Vector scores are always negative
BM25 and cosine scores are not on comparable scales
The service cannot read raw scores
The rank-1 document
The document found in both lists
They always tie
It depends on partition count
29. How does the semantic ranker rerank search results?
The semantic ranker works as a second stage after normal retrieval:
- The first stage (BM25, vector or hybrid) returns candidates; the top 50 go to the ranker.
- For each candidate, the text of the fields in your semantic configuration is assembled (title first, then content fields in priority order) and truncated to the model's input limit.
- A language model scores how well each document answers the query and reorders them.
- It returns
@search.rerankerScore, plus optional captions and answers.
"semantic": { "configurations": [ { "name": "default-semantic", "prioritizedFields": { "titleField": { "fieldName": "title" }, "prioritizedContentFields": [ { "fieldName": "chunk" } ] } } ] } // query: queryType=semantic, semanticConfiguration=default-semantic, // captions=extractive, answers=extractive|count-3
Since text beyond the input limit is cut, put the most informative field first.
Take quiz
titleField
prioritizedContentFields
prioritizedKeywordsFields
The key field
Earlier fields are favored when text is truncated to the input limit
It decides the primary key
It sets the partition
It controls billing
30. What is the difference between HNSW and exhaustive KNN in Azure AI Search?
Both find nearest neighbours but trade speed against exactness.
| HNSW | Exhaustive KNN | |
| Method | Approximate graph search (ANN) | Brute force: compares to every vector |
| Speed | Fast, scales to large indexes | Slow as data grows |
| Recall | Very high but not guaranteed 100% | Exact |
| Tuning | m (default 4), efConstruction (400), efSearch (500) |
None |
efSearch controls how many candidates are examined at query time: higher means better recall and more latency. Use exhaustive KNN for small sets, for heavy filtering, or to build a ground truth for measuring HNSW recall. A query can also set exhaustive: true on an HNSW field for that request only.
Take quiz
efSearch
efConstruction
m
dimensions
For billions of vectors with low latency
To cut memory use
When vectors are binary only
For small datasets or to measure ground-truth recall
31. What is integrated vectorization and why is it used?
Integrated vectorization moves chunking and embedding inside Azure AI Search, so you do not run your own pipeline code.
At indexing time, an indexer reads the files, a Text Split skill chunks them, an embedding skill (for example Azure OpenAI Embedding) vectorizes each chunk, and index projections write one search document per chunk linked to its parent.
At query time, a vectorizer defined in the index turns the user's text into a vector, so clients send plain text with kind: text.
Why use it: fewer moving parts, embeddings stay in sync through the indexer's change detection, and the query side needs no separate embedding call.
flowchart LR A["Data source"] --> B["Indexer cracks files"] B --> C["Text Split skill"] C --> D["Embedding skill"] D --> E["Index projections"] E --> F[(Chunk index)] Q["User text query"] --> V[Vectorizer] V --> F
Take quiz
The Text Split skill
A suggester
A synonym map
A vectorizer defined in the index
Field mappings
A scoring profile
Index projections
Knowledge store table projections
32. How does an indexer detect changed and deleted documents?
It depends on the data source. Indexers keep a high-water mark or change token between runs and only fetch what moved.
| Source | Change detection | Deletion detection |
| Blob / ADLS Gen2 | Built in, based on LastModified |
Native blob soft delete, or a metadata flag you set |
| Azure SQL | SQL Integrated Change Tracking, or a high-water-mark column (such as rowversion) | Integrated change tracking sees hard deletes; otherwise a soft-delete column |
| Cosmos DB | High-water mark on _ts |
Soft-delete field policy |
With a high-water-mark policy alone, rows physically deleted from the source are invisible to the indexer, which is why a soft-delete column is recommended. You can force a full pass by resetting the indexer.
Take quiz
High water mark policy alone
A rowversion column alone
SQL Integrated Change Tracking
A blob LastModified timestamp
The blob's file name order
The LastModified timestamp
The blob access tier
The container name
33. How can you optimize indexing performance for large datasets?
Start by finding the bottleneck: source reads, enrichment skills or the service itself.
- Batch and parallelize pushes - send batches (often 100 to 1,000 docs) from several threads, and tune batch size by testing.
- Back off on 503 and 429 - retry with exponential backoff instead of hammering the service.
- Add partitions - they raise indexing throughput and storage together.
- Run several indexers in parallel - split the source (for example by blob prefix or SQL key range) across multiple data sources and indexers.
- Trim the index - drop
filterable,sortableorfacetablefrom fields that do not need them. - Enable the enrichment cache - so a skillset change only reruns the affected skills, not the whole corpus.
- Tune custom Web API skills - raise batch size and degree of parallelism if your endpoint can take it.
Take quiz
Resubmit instantly in a tight loop
Retry with exponential backoff
Treat the batch as successful
Delete the documents from the source
Storage capacity and indexing throughput
Only query availability
Semantic ranker accuracy
Synonym expansion
34. How can you reduce vector storage costs in Azure AI Search?
Vector indexes are memory-heavy, so most savings come from storing less per vector.
| Technique | Effect |
Narrow types (Edm.Half) |
16-bit floats instead of 32-bit, about half the size |
| Scalar quantization | Stores int8 values, roughly a 75% reduction in vector index size |
| Binary quantization | Stores 1 bit per dimension, with the largest saving (Microsoft cites up to about 96%) |
| Dimension truncation | Use fewer dimensions on models trained for it (Matryoshka, such as text-embedding-3) |
stored: false |
Do not keep the retrievable full-precision copy of vectors |
Compression costs some recall. Offset it with oversampling and rescoring against the original vectors, and measure recall on your own queries before and after.
Take quiz
It drops the retrievable full-precision copy while keeping vectors searchable
It stops the field from being searched
It encrypts the vectors
It moves the vectors to blob storage
HNSW
Reciprocal Rank Fusion
Semantic captions
Scalar quantization
35. When should you scale replicas versus partitions in Azure AI Search?
Match the move to the symptom.
| Symptom | Scale |
| Query latency rises under load, or queries return 503 | Replicas |
| Need an SLA or zone redundancy | Replicas (at least 2 for read, 3 for read-write) |
| Index nears the storage quota | Partitions |
| Bulk indexing is too slow | Partitions |
| Very large vector index hitting vector quota | Partitions |
Remember that SUs multiply, so going from 3x1 to 3x2 doubles the bill. Adding partitions reshuffles shards in the background, which takes time, so plan it ahead of a big load rather than during one.
Take quiz
Replicas
Synonym maps
Scoring profiles
Partitions
Partitions only
Analyzers
Replicas
The HNSW m value
36. How can you optimize query performance in Azure AI Search?
Most gains come from asking the service to do less.
- Use
$selectto return only the fields you display, and keeptopsmall. - Limit
searchFieldsto the fields that matter instead of searching every searchable field. - Prefer
$filteron filterable fields for exact constraints; filters are cheap compared to scoring text. - Avoid leading wildcards and heavy regex over large indexes.
- Keep vector
kandefSearchonly as high as your recall target needs. - Reuse one SDK client (connection reuse) and run the app in the same region as the service.
- Add replicas for throughput, and watch search latency and throttled-query metrics in Azure Monitor.
Take quiz
$count
facet
$select
highlight
A simple one-term query
Leading wildcards or heavy regex
A Lookup Document by key
A $filter on an integer field
37. How do you implement document-level security trimming in Azure AI Search?
The classic approach is a security filter. Store the allowed principals on every document, then filter on the caller's identity at query time.
- Add a field such as
group_idstypedCollection(Edm.String)and mark itfilterable. - At indexing, fill it with the group or user IDs allowed to see the document.
- At query time, your backend resolves the caller's groups (for example from Entra ID) and appends the filter.
$filter=group_ids/any(g: search.in(g, 'sales-team,emea-staff,all-users'))
Never let the browser build or override this filter. Microsoft is also adding preview support for enforcing source ACLs and RBAC scopes from stores such as ADLS Gen2, so check current docs before building it by hand.
Take quiz
In browser JavaScript so users can edit it
On the trusted backend, not in client code
In the indexer schedule
Inside a synonym map
search.in
search.ismatch
geo.distance
geo.intersects
38. How do you secure network access to an Azure AI Search service?
Think in two directions: who can reach the service, and what the service can reach.
| Direction | Control |
| Inbound | IP firewall rules, or a private endpoint (Private Link) with public network access disabled |
| Outbound | Shared private link so indexers and skills reach Storage, SQL or Azure OpenAI over the Microsoft backbone; managed identity instead of secrets |
| Identity | Entra ID with RBAC; disable API keys once clients move over |
| Data | Encryption at rest, optionally with customer-managed keys |
Typical locked-down setup: private endpoint for the app, shared private links for each data source, and a managed identity with the right Storage and OpenAI roles.
Take quiz
A shared private link
A query key
A scoring profile
A suggester
A shared private link
CORS settings
A synonym map
A private endpoint
39. What is the difference between searchable and filterable fields?
The two attributes build different structures from the same text.
| searchable | filterable | |
| Stored as | Analyzed tokens in the inverted index | The whole value, not tokenized |
| Used by | search= full-text queries |
$filter expressions |
| Matching | Word-level, stemmed, case-insensitive | Exact, and case-sensitive |
| Affects score | Yes | No |
For a category value of Resort Hotel, a search for resort matches. The filter category eq 'Resort Hotel' matches, but category eq 'resort hotel' does not. Fields used both ways cost more space, so enable both only when you really need them.
Take quiz
The field is not searchable
Facets override filters
The top parameter is too small
String comparisons in filters are case-sensitive
filterable
sortable
searchable
key
40. Why is deep paging limited in Azure AI Search?
Each request returns at most $top = 1,000 results, and $skip tops out at 100,000. Skipping is costly because every shard must produce and sort all the earlier results just to throw them away, so the service caps it.
The workaround is keyset pagination: sort on a unique sortable field and ask for items after the last one you saw.
// page 1 $orderby=id asc&$top=1000 // next page: last id of previous page was 'a1042' $filter=id gt 'a1042'&$orderby=id asc&$top=1000
For one-off exports, split the data by a filterable range (date, category) and loop. Users rarely read past a few pages anyway, so refining the query is usually the better UX fix.
Take quiz
Set $skip to 200000
Raise $top to 5000
Keyset pagination with $orderby on a unique field and a $filter on the last value
Add more replicas
50
1,000
10,000
100,000
41. What happens when you change a field definition in an existing index?
Azure AI Search lets you add new fields to a live index, but not alter existing ones in ways that affect the physical index.
- Allowed in place: adding a field, scoring profiles, CORS settings and synonym map assignments. Existing documents simply have
nullin the new field until you reload them. - Needs a rebuild: changing a field's type, its analyzer, or turning on attributes like
filterableorsortablefor a field that already exists.
A rebuild means dropping and recreating the index, then reloading all data. To avoid downtime, build a new index version beside the old one and switch with an alias, as described in the next topic.
Take quiz
Changing the analyzer of an existing field
Adding a new field
Changing a field's type from string to integer
Turning on sortable for an existing field
null
The text N/A
An error marker
Auto-filled values from the indexer
42. How do you rebuild an index with zero downtime?
Use an index alias. The alias is a stable name that points at one real index, and clients query the alias instead of the index name.
- Create
products-v1and an aliasproductspointing to it. - When the schema must change, create
products-v2next to it. - Load
products-v2with an indexer or push job while users keep hitting v1. - Validate counts and test queries on v2.
- Update the alias to target
products-v2, which takes effect immediately. - Delete
products-v1after a rollback window.
flowchart LR App["Client app"] --> Alias["alias: products"] Alias -. before swap .-> V1[(products-v1)] Alias == after swap ==> V2[(products-v2)] Job["Indexer / push job"] --> V2
Take quiz
An index alias
The indexer name
The key field value
A hard-coded versioned index name
Call a Rename Index API
Change the api-version header
Restart the search service
Update the alias to point to v2
43. Explain the execution flow of agentic retrieval in Azure AI Search?
A single call to a knowledge base's retrieve action triggers the whole pipeline.
- The app sends the conversation (recent messages) to the knowledge base.
- The configured LLM plans the query: it rewrites and splits the request into subqueries, guided by any retrieval instructions.
- Subqueries run in parallel against the knowledge sources; indexed sources use hybrid (text plus vector) search.
- The semantic ranker reranks each subquery's results.
- Results are merged into one grounding payload, with references and an activity log showing what was planned and run.
- Your app (or agent) passes the grounding data to an LLM to write the answer. Depending on settings, the knowledge base can also synthesize an answer itself.
sequenceDiagram
participant App
participant KB as Knowledge base
participant LLM as Planning LLM
participant KS as Knowledge sources
App->>KB: retrieve(messages)
KB->>LLM: plan subqueries
LLM-->>KB: subqueries
par each subquery
KB->>KS: hybrid / remote query
KS-->>KB: ranked results
end
KB->>KB: semantic rerank and merge
KB-->>App: grounding data, references, activity log
Take quiz
The index is rebuilt
The indexer is reset
Billing counters are cleared
Semantic reranking and merging into one grounding response
The service API keys
The replica count
The conversation history
The analyzer settings
44. Explain the execution flow of an Azure AI Search indexer run with a skillset?
One run follows a fixed order:
- Connect to the data source and list items that are new or changed since the last high-water mark.
- Document cracking - open each file, pull out text, metadata and images.
- Field mappings copy source fields into the enriched document (for example
/document/content). - Skillset - skills run in dependency order and add nodes to the enriched document tree. Results can be cached.
- Output field mappings (or index projections) move enriched nodes into index fields.
- Documents are written to the index; optional projections go to the knowledge store.
- The indexer saves its checkpoint and logs successes, warnings and errors.
flowchart TD A["Data source"] --> B["Document cracking"] B --> C["Field mappings"] C --> D["Skillset enrichment"] D --> E["Output field mappings / projections"] E --> F[(Search index)] D --> G[(Enrichment cache)] D --> H[(Knowledge store)]
Take quiz
Runs skills before connecting
Writes to the knowledge store before cracking
Connects to the source and cracks open the new or changed documents
Rebuilds the index schema
Defining the key field
Moving enriched nodes into index fields
Scheduling the indexer
Choosing the analyzer
45. How does Azure AI Search support RAG with Azure OpenAI?
Azure AI Search is the retrieval half of RAG. The LLM never searches by itself; your app retrieves relevant chunks first and hands them to the model as context.
- Chunk and embed documents into an index (integrated vectorization or your own pipeline).
- At question time, run a hybrid query with the semantic ranker and take the top few chunks.
- Build a prompt: instructions, the retrieved chunks with their sources, then the question.
- Call the Azure OpenAI chat model and return the answer with citations.
from azure.search.documents.models import VectorizableTextQuery results = client.search( search_text=question, vector_queries=[VectorizableTextQuery( text=question, k_nearest_neighbors=50, fields="contentVector")], query_type="semantic", semantic_configuration_name="default-semantic", select=["title", "chunk"], top=5, ) context = "\n\n".join(f"[{r['title']}] {r['chunk']}" for r in results)
Azure OpenAI On Your Data and Foundry agents use the same service underneath, so you can start with those or code the loop yourself for control.
Take quiz
Vector-only exhaustive search with no filters
Hybrid search with semantic ranking
Keyword search on unchunked files
Random sampling of documents
Instruct the model to answer only from the retrieved chunks and to cite them
Send the entire index in the prompt
Raise top to 1,000 chunks
Turn off all filters
46. When would you choose Azure AI Search over database full-text search?
Choose Azure AI Search when search itself is the product feature, not just a lookup on a column. Database full-text search is fine when the need is small and tightly tied to transactional data.
| Need | Azure AI Search | Database full-text |
| Hybrid keyword plus vector, semantic reranking | Built in | Limited or absent |
| Search across PDFs, Office files and images | Indexers, OCR and skills | Not designed for it |
| Faceting, suggestions, scoring profiles, highlighting | Built in | Mostly manual |
| Scale search separately from the OLTP database | Replicas and partitions | Shares database resources |
| Strict transactional consistency with the row | Eventual (index lags source) | Immediate |
A simple keyword lookup over one SQL table with modest data is a good case for staying in the database. A multi-source, relevance-sensitive or RAG scenario is where Azure AI Search pays off.
Take quiz
A simple keyword lookup on one small SQL table with transactional needs
Hybrid vector and keyword search across PDFs
Faceted search with semantic reranking
OCR and entity extraction on scanned files
Storing text columns
Matching keywords
Filtering by numbers
Built-in AI enrichment and semantic reranking
47. How do you troubleshoot an Azure AI Search indexer that processes zero documents?
Work from the outside in.
- Read the execution history (portal or Get Indexer Status). Compare
itemsProcessedwithitemsFailedand read the first error or warning. - Check connectivity - connection string or managed identity roles, firewall, shared private link.
- Check the source scope - container and folder path, SQL query, and
indexedFileNameExtensionsorexcludedFileNameExtensionsfilters on blob indexers. - Check change detection - the high-water mark may say nothing is new. Reset the indexer and rerun to force a full pass.
- Check deletion policy - a soft-delete column that is true for every row will skip everything.
- Check mappings and parsing - wrong
parsingMode, a missing key mapping or a type mismatch. - Use a debug session for skillset problems to inspect the enriched tree.
Take quiz
The replica count
The semantic configuration
The suggester definition
Extension filters and the container or folder path in the indexer config
Delete a synonym map
Add a partition
Reset the indexer and run it again
Change a scoring profile
48. How do you troubleshoot poor relevance in Azure AI Search results?
Change one thing at a time and keep a set of test queries with the results you expect.
- Check tokenization with the Analyze Text API. A wrong analyzer is a common cause of misses.
- Check which fields are searched - use
searchFieldsand field weights so titles outrank body text. - Check
searchMode-any(default) is broad,allis strict. - Add synonyms for vocabulary gaps.
- Try hybrid and semantic ranking if keyword matches miss intent.
- Review chunking for RAG: chunks that are too large or too small hurt retrieval.
- Rule out noise - on small indexes with several partitions, use
scoringStatistics=global, and asessionIdto keep results steady across replicas.
Take quiz
Lookup Document
Get Index Statistics
The Analyze Text API
Autocomplete
Vector quantization changes weights
Scoring statistics are computed per shard; scoringStatistics=global evens this out
Synonym map caching
Semantic captions rewrite scores
49. What happens when Azure AI Search returns HTTP 503 or 429?
It means the service cannot take the request right now, usually because indexing or query load exceeds what the current replicas and partitions can handle. It is a signal to slow down, not a permanent failure.
What to do:
- Retry with exponential backoff and jitter. The Azure SDKs include a retry policy; custom REST clients need their own.
- Check metrics such as search latency and the percentage of throttled queries.
- Fix the cause - add replicas for query spikes, add partitions or smaller batches for indexing, and remove expensive queries.
Related: an index batch can return HTTP 207, meaning some documents succeeded and others failed. Read the per-document status in the response and retry only the failed ones.
Take quiz
Resubmit immediately in a tight loop
Retry with exponential backoff
Treat it as success
Drop the failed documents from the source
Some documents succeeded and some failed, so check per-document status
The entire batch was rejected
The service is restarting
Authentication failed
50. How do you apply a chunking strategy for RAG in Azure AI Search?
Chunking decides what the retriever can return, so it deserves testing, not guessing.
- Split with the Text Split skill using
maximumPageLengthandpageOverlapLength. Newer versions can count tokens rather than characters. - Respect structure. The Document Layout skill outputs headings and sections, so you can chunk by section instead of cutting mid-sentence.
- Overlap a little (often 10 to 20%) so facts at a boundary are not lost.
- Carry metadata - title, source and page number go into every chunk for citations and filters.
- Use index projections to store one document per chunk linked to a parent.
| Chunks too small | Chunks too large |
| Lose context, answers fragment | Diluted embeddings, wasted prompt tokens |
| More documents to store and rank | Relevant sentence gets buried |
A few hundred tokens with light overlap is a common starting point. Then compare variants on real questions and keep what retrieves best.