<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Pedro</title>
    <description>The latest articles on DEV Community by Pedro (@pedromonteiroleite).</description>
    <link>https://dev.to/pedromonteiroleite</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3274400%2F5efc1a66-998d-4843-af76-bca052fa3aff.png</url>
      <title>DEV Community: Pedro</title>
      <link>https://dev.to/pedromonteiroleite</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/pedromonteiroleite"/>
    <language>en</language>
    <item>
      <title>What is Azure AI Search</title>
      <dc:creator>Pedro</dc:creator>
      <pubDate>Wed, 18 Jun 2025 17:07:57 +0000</pubDate>
      <link>https://dev.to/pedromonteiroleite/what-is-azure-ai-search-jlk</link>
      <guid>https://dev.to/pedromonteiroleite/what-is-azure-ai-search-jlk</guid>
      <description>&lt;p&gt;Azure AI Search is a &lt;strong&gt;cloud-based search-as-a-service&lt;/strong&gt; solution that allows you to integrate sophisticated search capabilities into your applications, including:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Full-text search&lt;/li&gt;
&lt;li&gt;Semantic ranking&lt;/li&gt;
&lt;li&gt;Vector-based similarity&lt;/li&gt;
&lt;li&gt;Hybrid search (text + vector)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It supports unstructured and structured content from documents, databases, websites, and more.&lt;/p&gt;




&lt;h3&gt;
  
  
  💡 Two Phases of Working with Azure AI Search
&lt;/h3&gt;

&lt;p&gt;There are &lt;strong&gt;two key phases&lt;/strong&gt; when working with Azure AI Search:&lt;/p&gt;




&lt;h4&gt;
  
  
  1. &lt;strong&gt;Ingestion&lt;/strong&gt; (Define &amp;amp; Populate Indexes)
&lt;/h4&gt;

&lt;p&gt;This phase involves both &lt;strong&gt;defining the structure&lt;/strong&gt; of the index and &lt;strong&gt;populating it with data&lt;/strong&gt;.&lt;/p&gt;

&lt;h5&gt;
  
  
  🔧 &lt;strong&gt;Index Definition&lt;/strong&gt;
&lt;/h5&gt;

&lt;p&gt;Before you can search anything, you must define how your data will be stored and retrieved:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Define index fields (types, attributes like &lt;em&gt;searchable&lt;/em&gt;, &lt;em&gt;filterable&lt;/em&gt;, &lt;em&gt;sortable&lt;/em&gt;, &lt;em&gt;facetable&lt;/em&gt;, etc.)&lt;/li&gt;
&lt;li&gt;Configure &lt;strong&gt;analyzers&lt;/strong&gt; for full-text search&lt;/li&gt;
&lt;li&gt;Add &lt;strong&gt;semantic configuration&lt;/strong&gt; for semantic search capabilities&lt;/li&gt;
&lt;li&gt;Add &lt;strong&gt;vector configuration&lt;/strong&gt; for vector search (e.g., field dimensions, vector profiles)&lt;/li&gt;
&lt;li&gt;Enable &lt;strong&gt;scoring profiles&lt;/strong&gt;, &lt;strong&gt;synonyms&lt;/strong&gt;, and &lt;strong&gt;suggesters&lt;/strong&gt; as needed&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;This step defines the “search contract” — how your data can be queried later.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h5&gt;
  
  
  📥 &lt;strong&gt;Index Population&lt;/strong&gt;
&lt;/h5&gt;

&lt;p&gt;Once the schema is defined, you populate the index with documents:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Push&lt;/strong&gt;: Upload data using REST API or SDK&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Pull&lt;/strong&gt;: Use indexers (e.g., Azure Blob, SQL DB, ADLS Gen2)&lt;/li&gt;
&lt;li&gt;Supports batch or incremental updates&lt;/li&gt;
&lt;/ul&gt;




&lt;h4&gt;
  
  
  2. &lt;strong&gt;Retrieval&lt;/strong&gt; (Search &amp;amp; Rank Results)
&lt;/h4&gt;

&lt;p&gt;In this phase, you query the indexed data:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Send search requests (keyword, semantic, vector, or hybrid)&lt;/li&gt;
&lt;li&gt;Use filters, scoring, semantic captions, and highlights&lt;/li&gt;
&lt;li&gt;Receive structured search results&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  ❓ Why REST API Instead of SDK?
&lt;/h3&gt;

&lt;p&gt;While Azure provides an official Python SDK (&lt;code&gt;azure-search-documents&lt;/code&gt;), it:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Wraps&lt;/strong&gt; the REST API, offering limited abstraction&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Lags behind&lt;/strong&gt; the REST API in supporting newer features (e.g., hybrid search and latest vector capabilities)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Lacks clear documentation&lt;/strong&gt; for advanced use cases&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  📚 References and Further Reading
&lt;/h3&gt;

&lt;p&gt;This section consolidates the key documentation used to build this project and serves as a study guide.&lt;/p&gt;




&lt;h3&gt;
  
  
  🔍 Querying &amp;amp; Retrieval
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Search Documents (REST API: &lt;code&gt;POST /search&lt;/code&gt;)&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
&lt;a href="https://learn.microsoft.com/en-us/rest/api/searchservice/documents/search-post?view=rest-searchservice-2024-07-01&amp;amp;tabs=HTTP" rel="noopener noreferrer"&gt;https://learn.microsoft.com/en-us/rest/api/searchservice/documents/search-post?view=rest-searchservice-2024-07-01&amp;amp;tabs=HTTP&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Search Result Pagination and Layout&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
&lt;a href="https://learn.microsoft.com/pt-br/azure/search/search-pagination-page-layout" rel="noopener noreferrer"&gt;https://learn.microsoft.com/pt-br/azure/search/search-pagination-page-layout&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  📦 Index Management &amp;amp; Structure
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Create an Index (Core Guide)&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
&lt;a href="https://learn.microsoft.com/en-us/azure/search/search-how-to-create-search-index?tabs=portal" rel="noopener noreferrer"&gt;https://learn.microsoft.com/en-us/azure/search/search-how-to-create-search-index?tabs=portal&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Add Vector Fields &amp;amp; Vector Profiles&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
&lt;a href="https://learn.microsoft.com/en-us/azure/search/vector-search-how-to-create-index" rel="noopener noreferrer"&gt;https://learn.microsoft.com/en-us/azure/search/vector-search-how-to-create-index&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Add Semantic Ranking&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
&lt;a href="https://learn.microsoft.com/en-us/azure/search/semantic-how-to-configure" rel="noopener noreferrer"&gt;https://learn.microsoft.com/en-us/azure/search/semantic-how-to-configure&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  🔐 Security in Azure AI Search
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Security Trimming&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
&lt;a href="https://docs.azure.cn/en-us/search/search-security-trimming-for-azure-search" rel="noopener noreferrer"&gt;https://docs.azure.cn/en-us/search/search-security-trimming-for-azure-search&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Index ACLs &amp;amp; RBAC via REST API&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
&lt;a href="https://learn.microsoft.com/en-us/azure/search/search-index-access-control-lists-and-rbac-push-api" rel="noopener noreferrer"&gt;https://learn.microsoft.com/en-us/azure/search/search-index-access-control-lists-and-rbac-push-api&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Query-Time ACL/RBAC Enforcement&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
&lt;a href="https://learn.microsoft.com/en-us/azure/search/search-query-access-control-rbac-enforcement" rel="noopener noreferrer"&gt;https://learn.microsoft.com/en-us/azure/search/search-query-access-control-rbac-enforcement&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;ADLS Gen2 Indexer for Permission Metadata&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
&lt;a href="https://learn.microsoft.com/en-us/azure/search/search-indexer-access-control-lists-and-role-based-access" rel="noopener noreferrer"&gt;https://learn.microsoft.com/en-us/azure/search/search-indexer-access-control-lists-and-role-based-access&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  🔄 Index Ingestion &amp;amp; Updates
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Data Import Overview&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
&lt;a href="https://learn.microsoft.com/en-us/azure/search/search-what-is-data-import" rel="noopener noreferrer"&gt;https://learn.microsoft.com/en-us/azure/search/search-what-is-data-import&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Load Documents into an Index&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
&lt;a href="https://learn.microsoft.com/en-us/azure/search/search-how-to-load-search-index" rel="noopener noreferrer"&gt;https://learn.microsoft.com/en-us/azure/search/search-how-to-load-search-index&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Update or Rebuild an Index&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
&lt;a href="https://learn.microsoft.com/en-us/azure/search/search-howto-reindex" rel="noopener noreferrer"&gt;https://learn.microsoft.com/en-us/azure/search/search-howto-reindex&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Change and delete detection using indexers&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
&lt;a href="https://learn.microsoft.com/en-us/azure/search/search-howto-index-changed-deleted-blobs?tabs=portal" rel="noopener noreferrer"&gt;https://learn.microsoft.com/en-us/azure/search/search-howto-index-changed-deleted-blobs?tabs=portal&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
    </item>
  </channel>
</rss>
