Introduction
Snowflake's Cortex Search just received a major upgrade with Multi-Index and Index-Specific Boosts! These powerful features dramatically enhance search flexibility and precision, enabling scenarios like "exact match on product codes while semantic search on descriptions."
In this article, I'll walk you through these new features using hands-on examples with dummy data in Snowsight, demonstrating their value and practical implementation.
For a comprehensive overview of Cortex Search fundamentals, check out the official Snowflake documentation.
Note (2026/1/12): Cortex Search Multi-Index is currently in Public Preview. Features may be significantly updated in the future.
Note: A Custom Embedding (BYO Embed: Bring Your Own Embedding) feature was also released alongside these features, but is not covered in this article.
Note: This article represents my personal views and not those of Snowflake.
Cortex Search Quick Recap
Let me briefly explain what Cortex Search is. Cortex Search is a fully-managed enterprise search service provided by Snowflake.
Key Features
- Hybrid Search: Combines vector search (semantic similarity) with keyword search (lexical similarity) for high-precision results
- Automatic Embedding Generation: Automatically and regularly vectorizes text data to enable semantic search capabilities
- Fully Managed: No infrastructure management or tuning required - ready to use immediately
- Snowflake Native: Complete integration with Snowflake's data governance and security features
What is Multi-Index?
Multi-Index enables you to create separate indexes for multiple columns with different characteristics, and combine them during search.
Previously, Cortex Search was primarily designed for searching a single column. However, real-world business scenarios often require searching across multiple fields like "product code," "product name," and "product description." With Multi-Index, you can integrate these into a single search service and apply the most appropriate search method for each field's characteristics.
Multi-Index Use Cases
| Use Case | Description |
|---|---|
| Cross-field Search | Search across product codes, names, and descriptions with different characteristics simultaneously |
| Field-specific Search Logic | Apply strict keyword matching to product codes while using semantic search for descriptions |
| Precise Result Control | Adjust the importance of each field to achieve optimal search results for your business requirements |
What are Index-Specific Boosts?
Index-Specific Boosts enable you to adjust the weights of individual columns within the same index type in Multi-Index searches.
For example, if you have product_code and product_name as TEXT INDEXes, even when searching with the same keyword, the optimal results differ depending on whether you want to prioritize "matches in product code" or "matches in product name." Index-Specific Boosts let you flexibly control this balance per search query.
| Parameter | Purpose | Description |
|---|---|---|
| weights | Search type weighting | Adjusts the overall balance between keyword search (texts), vector search (vectors), and reranker scores |
| text_boosts | TEXT INDEX weighting | Adjusts individual column weights within TEXT INDEXes |
| vector_boosts | VECTOR INDEX weighting | Adjusts individual column weights within VECTOR INDEXes |
Official documentation: Customizing Cortex Search scoring - Index-specific boosts
Business Value and Benefits
Transforming Search Experience
| Previous Limitation | Multi-Index & Index-Specific Boosts Solution |
|---|---|
| Limited to single-field search | Cross-field integrated search now possible |
| Same search logic applied to all fields | Apply optimal search methods (keyword/semantic) per field |
| Difficult to customize search results | Flexible ranking adjustments with Index-Specific Boosts |
| Hybrid search balance was automatic | Customize each field's contribution per search query |
Expected Benefits
- E-commerce Product Search — Prioritize exact matches on SKUs and product codes while supporting semantic search on product descriptions
- Internal Knowledge Search — Balance strict matching on document titles with semantic search on document bodies
- Customer Support — Apply different weights to FAQ titles and bodies to deliver results that better match user intent
Cortex Search Integration Scenarios
Cortex Search maximizes its value when combined with various Snowflake features beyond standalone use.
AI Agent Context
- Snowflake Managed MCP Server — When AI Agents access data within Snowflake, they can search and retrieve enterprise-specific domain knowledge through Cortex Search. Multi-Index enables flexible searching across both structured and unstructured data.
- Snowflake Intelligence — Cortex Search serves as the foundation for searching relevant documents and knowledge to generate more accurate responses to natural language queries.
Data App Context
- Streamlit in Snowflake — Easily build user-friendly search interfaces by calling Cortex Search within Streamlit apps. With Index-Specific Boosts, you can dynamically control search weighting from the application layer.
The Biggest Value I See
Personally, I find tremendous value in "being able to flexibly control the balance between exact match and fuzzy search for multiple fields per search query." Previously, you could only search with a uniform balance across the entire search service, but by combining Multi-Index with Index-Specific Boosts, you can now dynamically change search behavior based on user intent and business requirements.
Furthermore, I believe enterprise search will serve as a core component for complementing enterprise-specific domain knowledge in RAG and AI Agent applications. In other words, improvements in search flexibility and precision directly translate to improvements in RAG response quality and AI Agent decision accuracy. In this sense, Multi-Index and Index-Specific Boosts represent a significant update that contributes to elevating enterprise AI adoption overall, not just a mere search feature improvement.
Important Considerations
Please keep the following points in mind when using Multi-Index:
| Consideration | Details |
|---|---|
| Cost | Creating and maintaining multiple indexes may increase compute and storage costs |
| Performance | Search performance may be affected by the number and configuration of indexes, so proper design is important |
| Data Size | Query results under 1 million rows are recommended for optimal performance (contact Snowflake if exceeding 1 million rows) |
Official documentation:
Hands-on Tutorial
Let's try out Multi-Index and Index-Specific Boosts! We'll use dummy product catalog data to create a Cortex Search service in Snowsight and verify the behavior with SQL queries.
Demo Scenario
For this demo, we'll simulate an e-commerce product search scenario:
- product_code: Product code (exact match is critical, like SKUs)
- product_name: Product name (balance between exact match and keyword matching)
- description: Product description (semantic fuzzy search is effective)
We'll create a Multi-Index on these three fields and experience how search results change when we adjust each field's importance based on the search context.
Step 1: Prepare Demo Data
First, let's create a table and insert sample data in Snowsight's SQL Worksheets. Run the following query (feel free to use your own data if available):
-- Create demo database and schema
CREATE DATABASE IF NOT EXISTS cortex_search_demo;
CREATE SCHEMA IF NOT EXISTS cortex_search_demo.multi_index_demo;
USE DATABASE cortex_search_demo;
USE SCHEMA multi_index_demo;
-- Create warehouse (you can use your existing warehouse)
CREATE WAREHOUSE IF NOT EXISTS cortex_search_wh WITH
WAREHOUSE_SIZE = 'X-SMALL';
-- Create product catalog table
CREATE OR REPLACE TABLE product_catalog (
product_id NUMBER,
product_code VARCHAR,
product_name VARCHAR,
description VARCHAR,
category VARCHAR,
price NUMBER(10,2)
);
-- Insert sample data (fictional products)
INSERT INTO product_catalog VALUES
(1, 'CBP-16-X9-PRO', 'CloudBook Pro 16 X9', 'The latest 16-inch professional laptop featuring the X9 processor. Known for high-performance graphics processing and extended battery life. Ideal for video editing and CAD work.', 'Laptop', 3988.00),
(2, 'CBP-14-X7', 'CloudBook Pro 14 X7', 'Compact 14-inch model with X7 processor. Lightweight 1.2kg design perfect for mobile workers.', 'Laptop', 2488.00),
(3, 'CBA-15-X5', 'CloudBook Air 15 X5', 'Amazingly thin and light 15-inch large-screen laptop. Handles everything from daily use to creative work.', 'Laptop', 1988.00),
(4, 'PPD-13-Z4', 'PixelPad Pro 13 Z4', 'Top-tier tablet with Z4 chip. Perfect for illustration and design work when paired with a stylus pen.', 'Tablet', 2188.00),
(5, 'ODK-24-X9', 'OmniDesk 24 X9', 'Beautiful all-in-one desktop with 4.5K display. Ideal for home and office use. Quiet design for comfortable extended work sessions.', 'Desktop', 1988.00),
(6, 'TNB-X1-G12', 'TechNova Business X1 Gen12', 'Lightweight business laptop. A proven model that balances durability and portability. Packed with security features.', 'Laptop', 2980.00),
(7, 'FXP-11-HYBRID', 'FlexPad 11 Hybrid', 'The definitive 2-in-1 device. Flexible enough to use as both a tablet and laptop. Recommended for frequent travelers.', 'Tablet', 1768.80),
(8, 'VNS-15-CREATOR', 'VisionStudio 15 Creator Edition', 'High-performance laptop for creators. 4K OLED display ideal for video production. Runs video editing software smoothly.', 'Laptop', 3298.00);
-- Verify data
SELECT * FROM product_catalog;
Verify that the table is created and data is inserted in Snowsight.
Step 2: Create Cortex Search Service with Multi-Index
Next, let's create a Cortex Search service with indexes on multiple columns.
Warning: As of January 2026, Snowsight's GUI does not support creating Multi-Index Cortex Search services. You must use SQL to create Multi-Index services.
Run the following query in Snowflake SQL Worksheets:
-- Create Cortex Search Service with Multi-Index
CREATE OR REPLACE CORTEX SEARCH SERVICE product_multi_search
TEXT INDEXES product_code, product_name
VECTOR INDEXES description (model='voyage-multilingual-2')
ATTRIBUTES category, price
WAREHOUSE = cortex_search_wh
TARGET_LAG = '1 hour'
AS (
SELECT
product_id,
product_code,
product_name,
description,
category,
price
FROM product_catalog
);
Multi-Index uses TEXT INDEXES and VECTOR INDEXES to create indexes:
-
TEXT INDEXES: Indexes for keyword (lexical) search. Suitable for fields like
product_codeorproduct_namewhere exact match or keyword matching is important. -
VECTOR INDEXES: Indexes for vector (semantic) search. Suitable for fields like
descriptionwhere semantic similarity search is important. We explicitly specify thevoyage-multilingual-2model for better multilingual performance.
Note: When creating a Multi-Index service, you must specify at least one column in VECTOR INDEXES. Omitting VECTOR INDEXES will result in an error.
SQL Reference: CREATE CORTEX SEARCH SERVICE
Verify that the service is created in AI Studio's Cortex Search list view or via SHOW CORTEX SEARCH SERVICES;.
Step 3: Testing Multi-Index Search and Index-Specific Boosts
This is where Multi-Index and Index-Specific Boosts really shine!
Warning: As of January 2026, the Playground does not support Index-Specific Boosts, so we'll execute searches via SQL queries.
When querying a Multi-Index service, you can use the multi_index_query parameter to explicitly specify which index receives which query. Additionally, the scoring_config weights parameter lets you adjust the weight balance between keyword search (texts) and vector search (vectors).
Official documentation: Query a Cortex Search Service - Multi-index queries
Demo Scenario Explanation
The key point of Multi-Index is that you can send different appropriate queries to each index. Similar to the official documentation examples, you send keyword-matching strings to TEXT INDEX and semantic queries to VECTOR INDEX.
For this demo, we'll verify the following scenario:
- TEXT INDEX (product_name) receives the keyword "CloudBook" → Products with "CloudBook" in the name get keyword matches
- VECTOR INDEX (description) receives the semantic query "a PC that's safe to use while traveling" → Products with semantically related descriptions get matches
| Product Name | TEXT Match | VECTOR Match |
|---|---|---|
| CloudBook Air 15 X5 | ✓ (contains "CloudBook" in name) | △ (no mention of security) |
| CloudBook Pro 14 X7 | ✓ (contains "CloudBook" in name) | △ (no mention of security) |
| TechNova Business X1 Gen12 | ✗ | ✓ ("Packed with security features" → semantically related to "safe") |
By changing weights, you can control which type of match is prioritized.
Case 1: Prioritize Keyword Search (texts)
By increasing the texts weight, products with "CloudBook" in their names appear at the top.
-- Prioritize keyword search: set texts weight high
SELECT
value['product_name']::VARCHAR AS product_name,
value['description']::VARCHAR AS description
FROM TABLE(FLATTEN(PARSE_JSON(
SNOWFLAKE.CORTEX.SEARCH_PREVIEW(
'cortex_search_demo.multi_index_demo.product_multi_search',
'{
"multi_index_query": {
"product_name": [{"text": "CloudBook"}],
"description": [{"text": "a PC that is safe to use while traveling"}]
},
"scoring_config": {
"weights": {
"texts": 5,
"vectors": 1,
"reranker": 1
}
},
"columns": ["product_name", "description"],
"limit": 5
}'
)
)['results']));
Verify that CloudBook series products appear at the top. This is because the product names contain the keyword "CloudBook." Of course, vector search results are also factored in, albeit with lower weight.
Case 2: Prioritize Vector Search (vectors)
By increasing the vectors weight, products with descriptions semantically related to "a PC that's safe to use while traveling" appear at the top.
-- Prioritize vector search: set vectors weight high
SELECT
value['product_name']::VARCHAR AS product_name,
value['description']::VARCHAR AS description
FROM TABLE(FLATTEN(PARSE_JSON(
SNOWFLAKE.CORTEX.SEARCH_PREVIEW(
'cortex_search_demo.multi_index_demo.product_multi_search',
'{
"multi_index_query": {
"product_name": [{"text": "CloudBook"}],
"description": [{"text": "a PC that is safe to use while traveling"}]
},
"scoring_config": {
"weights": {
"texts": 1,
"vectors": 5,
"reranker": 1
}
},
"columns": ["product_name", "description"],
"limit": 5
}'
)
)['results']));
Verify that "TechNova Business X1 Gen12" appears at the top. Its description mentions "Packed with security features," which semantically matches the query "safe to use while traveling."
Case 3: Query Only VECTOR INDEX
With multi_index_query, you can also target only specific indexes. When searching only the VECTOR INDEX without TEXT INDEX, you get results based purely on semantic relevance.
-- Query only VECTOR INDEX (description)
SELECT
value['product_name']::VARCHAR AS product_name,
value['description']::VARCHAR AS description
FROM TABLE(FLATTEN(PARSE_JSON(
SNOWFLAKE.CORTEX.SEARCH_PREVIEW(
'cortex_search_demo.multi_index_demo.product_multi_search',
'{
"multi_index_query": {
"description": [{"text": "high-spec PC ideal for creative video production"}]
},
"columns": ["product_name", "description"],
"limit": 3
}'
)
)['results']));
Verify that products with descriptions mentioning "video editing," "video production," or "creator" (like VisionStudio 15 Creator Edition) appear at the top.
Case 4: Using Index-Specific Boosts (text_boosts)
With text_boosts, you can adjust the weight of each column within TEXT INDEXes individually. In this demo, we have product_code and product_name defined as TEXT INDEXes, so even when searching with the same keyword "Pro," you can control whether to prioritize matches in product code or product name.
Note:
multi_index_queryrequires at least one VECTOR INDEX to be specified. TEXT INDEX-only queries will result in an error.
-- text_boosts: prioritize product_name matches over product_code
SELECT
value['product_code']::VARCHAR AS product_code,
value['product_name']::VARCHAR AS product_name,
value['description']::VARCHAR AS description
FROM TABLE(FLATTEN(PARSE_JSON(
SNOWFLAKE.CORTEX.SEARCH_PREVIEW(
'cortex_search_demo.multi_index_demo.product_multi_search',
'{
"multi_index_query": {
"product_code": [{"text": "Pro"}],
"product_name": [{"text": "Pro"}],
"description": [{"text": "high-performance laptop"}]
},
"scoring_config": {
"weights": {
"texts": 5,
"vectors": 1,
"reranker": 1
},
"functions": {
"text_boosts": [
{"column": "product_code", "weight": 1},
{"column": "product_name", "weight": 3}
]
}
},
"columns": ["product_code", "product_name", "description"],
"limit": 5
}'
)
)['results']));
The keyword "Pro" appears in both product codes (CBP-16-X9-PRO) and product names (CloudBook Pro 16 X9, PixelPad Pro 13 Z4, etc.), but since we've weighted product_name higher, products with "Pro" in their names are prioritized.
Note: When using
text_boosts, you must specify weights for all columns defined as TEXT INDEXes. Specifying only some columns will result in an error. The same applies tovector_boosts.
Search Results Comparison Summary
| Case | Configuration | Expected Top Products | Reason |
|---|---|---|---|
| Case 1 | Prioritize texts | CloudBook series | "CloudBook" keyword matches in product name |
| Case 2 | Prioritize vectors | TechNova Business X1 Gen12 | "security features" semantically matches "safe to use while traveling" |
| Case 3 | description only | VisionStudio 15 Creator Edition | "video production" related descriptions semantically match |
| Case 4 | text_boosts with product_name priority | Products with "Pro" in name | text_boosts sets product_name weight higher |
As you can see, by sending different queries to TEXT INDEX and VECTOR INDEX, adjusting the weight balance with weights, fine-tuning individual column weights with text_boosts/vector_boosts, and targeting specific indexes, you can flexibly control search results.
Conclusion
How was it? Cortex Search's Multi-Index and Index-Specific Boosts enable flexible cross-field search and fine-grained weight adjustments based on search context.
I see significant value in the following points:
- Enhanced Search Flexibility: Integrate and search across fields with different characteristics like product codes, names, and descriptions
- Dynamic Search Control: Change boost values per search to switch between exact-match focus ↔ fuzzy-search focus
- Business Requirement Alignment: Deliver optimal search experiences across various scenarios including e-commerce, internal knowledge bases, and customer support
- AI Agent Accuracy Improvement: Enhanced search flexibility and precision directly improves RAG response quality and AI Agent decision accuracy
In an era where AI Agents are increasingly adopted within enterprises, enterprise search becomes a core component for complementing domain knowledge. Multi-Index and Index-Specific Boosts represent a significant update that contributes to elevating enterprise AI adoption overall, not just a mere search feature improvement.
If you're considering RAG application development or enterprise search system implementation, I highly encourage you to leverage this Multi-Index feature. Snowflake's AI capabilities continue to evolve as the "AI platform for enterprise data"!
Promotion
Snowflake What's New Updates on X
I share Snowflake What's New updates on X. Follow for the latest insights:
English Version
Snowflake What's New Bot (English Version)
Japanese Version
Snowflake's What's New Bot (Japanese Version)
Change Log
(20260112) Initial post






Top comments (0)