Blog Post

AI - Azure AI services Blog
3 MIN READ

Introducing Multi-Vector and Scoring Profile integration with Semantic Ranking in Azure AI Search

fsunavala-msft's avatar
May 28, 2025

We're excited to announce two powerful new enhancements in Azure AI Search: Multi-Vector Field Support and Scoring Profiles Integration with Semantic Ranking. Developed based on your feedback, these features unlock more control and enable additional scenarios in your search experiences

 

Why these Enhancements Matter

As search experiences become increasingly sophisticated, handling complex, multimodal data and maintaining precise relevance is crucial. These new capabilities directly address common pain points:

  • Multi-Vector Field Support helps you manage detailed, multimodal, and segmented content more effectively.
  • Scoring Profiles Integration with Semantic Ranking ensures consistent relevance throughout your search pipeline.

Multi-Vector Field Support

Previously, vector fields `(Collection(Edm.Single))` or other narrow types could only exist at the top level of your index. Now, Azure AI Search enables you to embed multiple vectors within nested fields, providing richer context and deeper semantic understanding

This is particularly valuable for:

  • Segmenting long-form documents into manageable and searchable chunks.
  • Handling multimodal datasets, including combined textual and visual data.
  • Enhancing semantic accuracy for complex data scenarios.

Key Capabilities

  • Index multiple vectors within nested complex fields.
  • Query nested vectors directly.
  • Intelligent ranking selects the most relevant vector per document.

Example Index Definition

{
  "name": "multivector-index",
  "fields": [
    { "name": "id", "type": "Edm.String", "key": true, "searchable": true },
    { "name": "title", "type": "Edm.String", "searchable": true },
    { "name": "descriptionEmbedding", "type": "Collection(Edm.Single)", "dimensions": 3, "searchable": true, "vectorSearchProfile": "hnsw" },
    { "name": "scenes", "type": "Collection(Edm.ComplexType)", "fields": [
        { "name": "embedding", "type": "Collection(Edm.Single)", "dimensions": 3, "searchable": true, "vectorSearchProfile": "hnsw" },
        { "name": "timestamp", "type": "Edm.Int32" },
        { "name": "description", "type": "Edm.String", "searchable": true }
    ]}
  ]

Querying Nested Vectors

{
  "vectorQueries": [{
      "kind": "text",
      "text": "whales swimming",
      "K": 50,
      "fields": "scenes/embedding",
      "perDocumentVectorLimit": 0
  }],
  "select": "title, scenes/timestamp, scenes/description"
}

The above snippet assumes a vectorizer has been configured in the vector search configuration.

Enhanced Semantic Ranking with Scoring Profiles

Previously, scoring profiles influenced search results only during initial ranking. With this enhancement, scoring profiles also apply after semantic reranking, ensuring that your boosts shape the final results.

Why Use Scoring Profiles?

Scoring profiles tune ranking based on business needs, enabling scenarios such as:

  • Term boosting: Highlight important keywords.
  • Freshness boosting: Prioritize recent documents.
  • Geographic boosting: Adjust rankings based on geographic location.

Enabling Scoring Profiles

Integrate scoring profiles with semantic ranker:

{
  "semantic": {
    "configurations": [
      {
        "name": "mySemanticConfig",
        "rankingOrder": "boostedReRankerScore"
      }
    ]
  }
}

Sample Semantic Query with Boosted Scores:

{
  "search": "my query to be boosted",
  "scoringProfile": "myScoringProfile",
  "queryType": "semantic"
}

NOTE: This also composes with vector search and hybrid search as well. All query types and scenarios will carry your scoring profile through the final reranked set of results. Read about how relevance and scoring here. 

Example Response:

{
  "value": [
    {
      "@search.score": 0.63,
      "@search.rerankerScore": 2.98,
      "@search.rerankerBoostedScore": 7.68,
      "content": "boosted content 2"
    },
    {
      "@search.score": 1.12,
      "@search.rerankerScore": 3.12,
      "@search.rerankerBoostedScore": 5.61,
      "content": "boosted content 1"
    }
  ]
}

Practical Guidance:

Consider the following best practices when leveraging these new features:

  • For long documents: Use nested vectors when you want diverse, unique top-level document results. Nested vectors with perDocumentVectorLimit set ensure distinct document diversity.
  •  For multimodal scenarios: Combine text and image embeddings within nested vectors for detailed contextual insights.
  • Experiment with scoring profiles: Use term, freshness, or geographic boosts to precisely influence your semantic search ranking.

Get Started Today

Explore these new features today, combining multi-vector fields with semantic ranking enhancements:

Also check out our other latest blogs:

We welcome your feedback and questions. Drop a comment below or visit https://feedback.azure.com to share your ideas!

Published May 28, 2025
Version 1.0

1 Comment

  • shergill's avatar
    shergill
    Copper Contributor

    Multi Vector Support is a great initiative. thank you for sharing this.

    a feedback:  I noticed that the Microsoft link article mentioned: "A single document can include up to 100 vectors in total, across all complex collection fields. Vector fields can only be nested one level deep.


    however only 10 are allowed?

    Error Message: "The document with key 'xxxx' has '92' nested vectors. At most '10' nested vectors are allowed across the entire document. Please remove nested vectors and try indexing the document again.","statusCode":400}

    I am using only one complex type in the index with vector nested only one level down... Any suggestion on this would be helpful. Thank you!

    {

          "name": "textdata",

          "type": "Collection(Edm.ComplexType)",

          "fields": [

            {

              "name": "contentVector",

              "type": "Collection(Edm.Single)",

              "searchable": true,

              "filterable": false,

              "retrievable": true,

              "stored": true,

              "sortable": false,

              "facetable": false,

              "key": false,

              "dimensions": 3072,

              "vectorSearchProfile": "default",

              "synonymMaps": []

            },

            {

              "name": "contentSplit",

              "type": "Edm.String",

              "searchable": true,

              "filterable": false,

              "retrievable": true,

              "stored": true,

              "sortable": false,

              "facetable": false,

              "key": false,

              "synonymMaps": []

            }

          ]

        }