Blog Post

Microsoft Foundry Blog
2 MIN READ

n8n and Foundry IQ for smarter agents and RAG workflows

fsunavala-msft's avatar
Dec 10, 2025

Azure AI Search vector stores are now available in n8n

TL;DR

n8n now natively supports Azure AI Search as a verified vector store, enabling you to store, retrieve, and query embeddings directly in your automation workflows. Get semantic hybrid search and reranking for better relevance—out of the box.

This integration leverages the same Azure AI Search capabilities that power Microsoft Foundry IQ, with agentic retrieval features coming soon to n8n.

 

Figure 1: n8n Azure AI Search RAG workflow demo

Why This Matters

Retrieval Augmented Generation (RAG) isn't just about storing vectors—it's about surfacing the right context when your AI needs it.

Azure AI Search combines vector similarity, keyword search, and semantic reranking into a single query, delivering better answer quality than vector-only approaches. These are the same core search primitives that power Foundry IQ—Microsoft's knowledge layer for agents—and we're working to bring Foundry IQ's agentic retrieval capabilities to n8n in the future.

What's New in n8n

  • Three query modes: Vector, hybrid, and semantic hybrid search
  • Semantic reranking: Intelligent reordering built directly into the platform
  • OData filters: Pre-filter results by metadata (e.g., metadata/category eq 'technology')
  • Auto-index creation: Optimized HNSW configuration applied automatically
  • Bring your existing indexes: Connect to your current Azure AI Search indexes—no need to rebuild from scratch
  • Flexible operation: Use as a node, tool, or retriever in RAG chains

How It Works

  1. Create credentials – Add your Azure AI Search endpoint and API key in n8n
  2. Add the Vector Store node – Select Azure AI Search Vector Store from the node library
  3. Configure your index – Specify an index name (automatically created with optimized settings if it doesn't exist)
  4. Connect your embedding model – Integrate with OpenAI, Azure OpenAI, or other supported providers
  5. Choose your query mode – Select vector, hybrid, or semantic hybrid based on your use case
  6. Apply filters (optional) – Add OData metadata filters to refine results
  7. Integrate into your workflow – Use as a retriever, tool, or storage node
  8. Deploy and test – Your documents are indexed and searchable with semantic understanding

Get Started Today

Updated Dec 10, 2025
Version 1.0

2 Comments

  • Steven Francis's avatar
    Steven Francis
    Copper Contributor

    Would you be able to post some of your Azure AI Search and N8N configs, or show what fields and settings are needed to get a working n8n Semantic Hybrid search - I have an Azure search that returns results within the Azure AI Index Search Explorer but from n8n I just get empty results -

    { text:{"pageContent":"","metadata":{}}}

    Do you use the Skillsets? Sure I'm just missing a setting or mapping or something. Cheers Steve

    • fsunavala-msft's avatar
      fsunavala-msft
      Icon for Microsoft rankMicrosoft
      {
        "name": "Azure AI Search RAG Agent Template",
        "nodes": [
          {
            "parameters": {
              "formTitle": "Upload Documents",
              "formDescription": "Upload documents to the knowledge base",
              "formFields": {
                "values": [
                  {
                    "fieldLabel": "Upload your file(s)",
                    "fieldType": "file",
                    "acceptFileTypes": ".pdf, .txt, .csv, .docx",
                    "requiredField": true
                  }
                ]
              },
              "options": {}
            },
            "name": "Upload Documents",
            "type": "n8n-nodes-base.formTrigger",
            "position": [
              -608,
              -272
            ],
            "typeVersion": 2.2,
            "id": "57652c5f-42f9-48ab-acb0-62055934abe4",
            "webhookId": "7d893026-11bd-43c4-af75-e5f03d1f5b1b"
          },
          {
            "parameters": {
              "mode": "insert",
              "indexName": "n8n-rag-index",
              "options": {}
            },
            "type": "@n8n/n8n-nodes-langchain.vectorStoreAzureAISearch",
            "typeVersion": 1.3,
            "position": [
              -288,
              -272
            ],
            "name": "Azure AI Search (Insert)",
            "id": "b1d23873-0cc9-4f1b-9910-22600d01fc4c",
            "credentials": {
              "azureAiSearchApi": {
                "id": "A6h7ehOFt7fkW7p1",
                "name": "Azure AI Search account"
              }
            }
          },
          {
            "parameters": {
              "dataType": "binary",
              "options": {}
            },
            "name": "Default Data Loader",
            "type": "@n8n/n8n-nodes-langchain.documentDefaultDataLoader",
            "position": [
              -288,
              -64
            ],
            "typeVersion": 1.1,
            "id": "14cd11be-7043-4752-bbd8-7f1584bb020f"
          },
          {
            "parameters": {
              "options": {}
            },
            "name": "Chat Trigger",
            "type": "@n8n/n8n-nodes-langchain.chatTrigger",
            "position": [
              288,
              -272
            ],
            "typeVersion": 1.1,
            "id": "59f93b4f-ddcf-4945-9e49-29165e14c962",
            "webhookId": "61ecb05d-0b2f-4295-be34-db31dd48517b"
          },
          {
            "parameters": {
              "options": {
                "systemMessage": "You are a helpful AI assistant with access to a knowledge base.\n\nFor any question that involves facts or company knowledge, first use the vector store tool to search for relevant information.\n\nGuidelines:\n- Answer using only retrieved content and the conversation\n- When you use retrieved content, summarize it clearly\n- If retrieval returns nothing useful, say you couldn't find relevant information\n- Be concise and use bullet points when appropriate\n- Be friendly and professional"
              }
            },
            "name": "AI Agent",
            "type": "@n8n/n8n-nodes-langchain.agent",
            "position": [
              608,
              -272
            ],
            "typeVersion": 2,
            "id": "7c78f35b-9d3e-4748-a98e-ce7dfe1e3f1c"
          },
          {
            "parameters": {
              "model": "gpt-4o",
              "options": {}
            },
            "type": "@n8n/n8n-nodes-langchain.lmChatAzureOpenAi",
            "typeVersion": 1,
            "position": [
              448,
              -64
            ],
            "name": "Azure OpenAI Chat Model",
            "id": "43ffa910-0367-455a-9af0-2b7e82895e86",
            "credentials": {
              "azureOpenAiApi": {
                "id": "IHcQQX7itgANOi4k",
                "name": "Azure Open AI account (foundry proj)"
              }
            }
          },
          {
            "parameters": {
              "mode": "retrieve-as-tool",
              "toolDescription": "Retrieve relevant passages from the knowledge base. Use this tool for any question that requires factual information from uploaded documents.",
              "indexName": "n8n-rag-index",
              "options": {
                "queryType": "hybrid"
              }
            },
            "type": "@n8n/n8n-nodes-langchain.vectorStoreAzureAISearch",
            "typeVersion": 1.3,
            "position": [
              608,
              -64
            ],
            "name": "Azure AI Search (Retrieve)",
            "id": "f2b05bf1-f072-42b7-8c65-d905abe61d33",
            "credentials": {
              "azureAiSearchApi": {
                "id": "A6h7ehOFt7fkW7p1",
                "name": "Azure AI Search account"
              }
            }
          },
          {
            "parameters": {
              "model": "text-embedding-3-large",
              "options": {}
            },
            "type": "@n8n/n8n-nodes-langchain.embeddingsAzureOpenAi",
            "typeVersion": 1,
            "position": [
              160,
              144
            ],
            "name": "Azure OpenAI Embeddings Model",
            "id": "cdd3d4e6-1da0-4310-9a60-089b0172aa57",
            "credentials": {
              "azureOpenAiApi": {
                "id": "IHcQQX7itgANOi4k",
                "name": "Azure Open AI account (foundry proj)"
              }
            }
          }
        ],
        "pinData": {},
        "connections": {
          "Upload Documents": {
            "main": [
              [
                {
                  "node": "Azure AI Search (Insert)",
                  "type": "main",
                  "index": 0
                }
              ]
            ]
          },
          "Default Data Loader": {
            "ai_document": [
              [
                {
                  "node": "Azure AI Search (Insert)",
                  "type": "ai_document",
                  "index": 0
                }
              ]
            ]
          },
          "Chat Trigger": {
            "main": [
              [
                {
                  "node": "AI Agent",
                  "type": "main",
                  "index": 0
                }
              ]
            ]
          },
          "Azure OpenAI Chat Model": {
            "ai_languageModel": [
              [
                {
                  "node": "AI Agent",
                  "type": "ai_languageModel",
                  "index": 0
                }
              ]
            ]
          },
          "Azure AI Search (Retrieve)": {
            "ai_tool": [
              [
                {
                  "node": "AI Agent",
                  "type": "ai_tool",
                  "index": 0
                }
              ]
            ]
          },
          "Azure OpenAI Embeddings Model": {
            "ai_embedding": [
              [
                {
                  "node": "Azure AI Search (Retrieve)",
                  "type": "ai_embedding",
                  "index": 0
                },
                {
                  "node": "Azure AI Search (Insert)",
                  "type": "ai_embedding",
                  "index": 0
                }
              ]
            ]
          }
        },
        "active": false,
        "settings": {
          "executionOrder": "v1"
        },
        "versionId": "e6a40201-49b9-4037-a44b-3a9e5723910b",
        "meta": {
          "templateCredsSetupCompleted": true,
          "instanceId": "76af2441440fb33060b59f5292e1294b867382104a6f487d25825b036804ee76"
        },
        "id": "rQNFg4j4gzMtvMSb",
        "tags": []
      }

      Hey nope we don't use any Skillsets just the Push API to insert documents with their embeddings.