Skip to content

fabiomartineli/ai-net-azure-search-with-foundry

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Azure Search AI Agent Retrieval

API .NET que implementa um sistema de RAG (Retrieval-Augmented Generation) utilizando Azure AI Search, Azure AI Foundry e Azure Service Bus. O sistema indexa documentos de knowledge bases armazenados no Azure Blob Storage, gera embeddings vetoriais e responde perguntas por meio de agentes de IA com busca semântica e vetorial.

🔗 Fluxograma do Sistema

image

🏗️ Arquitetura

O projeto segue Clean Architecture com as seguintes camadas:

Api/
├── Domain/          # Interfaces, contratos e comandos
├── Application/     # Handlers de comandos e queries
├── Infra/           # Integrações com serviços Azure
│   ├── Rag/             # Agente RAG via Azure AI Projects
│   ├── VectorSearch/    # Indexação e busca vetorial no Azure AI Search
│   └── MessageBus/      # Consumo e publicação via Azure Service Bus
└── Presentation/    # Workers de inicialização e consumo de mensagens

Fluxo de Dados

  1. Indexação: ao iniciar, workers criam índices vetoriais no Azure AI Search a partir de containers no Azure Blob Storage (articles e faq).
  2. Atualização assíncrona: eventos de criação/remoção de blobs são publicados no Azure Service Bus e processados pelo MessageBusWorker, que atualiza os índices dinamicamente.
  3. Consulta: a API expõe um endpoint de chat que recebe uma pergunta, busca nos índices vetoriais e encaminha o contexto ao agente de IA no Azure AI Foundry, retornando a resposta em streaming.

🛠️ Stack Tecnológica

Tecnologia Versão Uso
.NET 10.0 Runtime da API
Azure AI Search SDK 11.8 Indexação e busca vetorial / semântica
Azure AI Projects SDK 2.0 Agentes RAG no Azure AI Foundry
Azure OpenAI SDK 2.1 Embeddings (text-embedding-3-small)
Azure Service Bus SDK 7.20 Mensageria para atualização de índices

📸 Demonstração

Indexers no Azure AI Search

Indexers article-indexer e faq-indexer executados com sucesso, indexando documentos dos respectivos containers no Blob Storage.

Azure AI Search Indexers

Agentes no Azure AI Foundry

Dois agentes criados no Azure AI Foundry — articles e faq — configurados como agentes do tipo prompt com integração à ferramenta Pesquisa de IA do Azure.

Azure AI Foundry - Agentes

Configuração do Agente FAQ no Playground

O agente faq configurado com instrução de RAG: responde somente com base na knowledge base disponibilizada, sem buscar informações em fontes externas.

Azure AI Foundry - Playground FAQ

API em Ação

Endpoint de chat respondendo perguntas via GET. Quando a pergunta está fora do escopo da knowledge base, o agente responde de forma controlada.

API Response

chat_resposta

🚀 Endpoint

GET /chat:{context}?question={pergunta}
Parâmetro Descrição Exemplo
context Nome do agente/índice faq, articles
question Pergunta a ser respondida O que é RAG?

Exemplo de requisição:

GET /chat:faq?question=Como funciona o processo de reembolso?

A resposta é retornada em streaming via Server-Sent Events (SSE).

⚙️ Configuração

Preencha o appsettings.json com as credenciais dos serviços Azure:

{
  "AzureSearchIA": {
    "ApiKey": "<chave-do-azure-ai-search>",
    "KnowledgeName": "<nome-do-servico-de-busca>",
    "Endpoint": "<endpoint-do-azure-ai-search>"
  },
  "VectorSearchSettings": {
    "Endpoint": "<endpoint-do-azure-ai-search>",
    "ApiKey": "<chave-do-azure-ai-search>",
    "EmbeddingAiEndpoint": "<endpoint-do-azure-openai>",
    "EmbeddingAiKey": "<chave-do-azure-openai>",
    "StorageAccounts": {
      "articles": "<connection-string-do-blob-storage>",
      "faq": "<connection-string-do-blob-storage>"
    }
  },
  "ConnectionStrings": {
    "ServiceBus": "<connection-string-do-service-bus>"
  },
  "RagAgentSettings": {
    "Endpoint": "<endpoint-do-azure-ai-foundry>",
    "TenentId": "<tenant-id>",
    "ClientId": "<client-id>",
    "SecretKey": "<client-secret>",
    "Agents": {
      "articles": { "Version": "<id-do-agente-articles>" },
      "faq": { "Version": "<id-do-agente-faq>" }
    }
  }
}

Pré-requisitos no Azure

  • Azure AI Search: serviço criado com suporte a vetores e semântica habilitado.
  • Azure OpenAI: implantação do modelo text-embedding-3-small disponível.
  • Azure Blob Storage: containers ai-search/articles e ai-search/faq com documentos.
  • Azure Service Bus: tópico article criado para receber eventos de blob.
  • Azure AI Foundry: agentes articles e faq criados com a ferramenta Azure AI Search conectada aos respectivos índices.
  • Microsoft Entra ID: Service Principal com permissões para acessar o Azure AI Foundry.

▶️ Executando Localmente

# Restaurar dependências
dotnet restore

# Executar a API (porta 5221)
dotnet run --project Api/Api.csproj

A API estará disponível em http://localhost:5221.

📋 Comportamento de Inicialização

Ao iniciar, a aplicação executa automaticamente:

  1. InitializeArticleSourceWorker: cria o índice vetorial articles a partir do container ai-search/articles no Blob Storage.
  2. InitializeFaqSourceWorker: cria o índice vetorial faq a partir do container ai-search/faq no Blob Storage.
  3. MessageBusWorker: inicia o consumo do tópico article no Service Bus para processar atualizações de documentos em tempo real.

Se os índices já existirem, a criação é ignorada e os indexers são executados para manter os dados atualizados.

About

Utilizando Azure AI Search com Azure Foundry para criação de agentes para o contexto de RAG

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages