惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

M
MIT News - Artificial intelligence
D
Darknet – Hacking Tools, Hacker News & Cyber Security
SecWiki News
SecWiki News
Latest news
Latest news
A
Arctic Wolf
Know Your Adversary
Know Your Adversary
G
GRAHAM CLULEY
L
Lohrmann on Cybersecurity
T
Tor Project blog
T
Threatpost
S
Schneier on Security
P
Palo Alto Networks Blog
C
Cyber Attacks, Cyber Crime and Cyber Security
Cyberwarzone
Cyberwarzone
C
Cybersecurity and Infrastructure Security Agency CISA
C
CERT Recently Published Vulnerability Notes
博客园_首页
P
Privacy & Cybersecurity Law Blog
I
Intezer
PCI Perspectives
PCI Perspectives
Spread Privacy
Spread Privacy
G
Google Developers Blog
H
Help Net Security
WordPress大学
WordPress大学
aimingoo的专栏
aimingoo的专栏
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
V
Visual Studio Blog
U
Unit 42
Application and Cybersecurity Blog
Application and Cybersecurity Blog
W
WeLiveSecurity
D
DataBreaches.Net
N
News and Events Feed by Topic
AI
AI
The Register - Security
The Register - Security
云风的 BLOG
云风的 BLOG
The GitHub Blog
The GitHub Blog
Help Net Security
Help Net Security
K
Kaspersky official blog
Recent Announcements
Recent Announcements
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
S
Security @ Cisco Blogs
H
Hacker News: Front Page
Jina AI
Jina AI
S
Secure Thoughts
Project Zero
Project Zero
T
The Exploit Database - CXSecurity.com
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
B
Blog RSS Feed
爱范儿
爱范儿

Analytics Vidhya

Handling Imbalanced Classification: What Works Better Than SMOTE GPT-5.6 Is Here: Sol, Terra, and Luna Loop Engineering for AI Agents: How /loop is Changing AI Workflows DeepSeek DSpark: The Speculative Decoding Trick Behind 400% Faster LLM OKF: Redefining Knowledge Bases for AI Agents Modern VLMs Explained: How GPT-4o, Gemini, Claude Vision, and Qwen-VL Work YOLO26 Tutorial: Object Detection, Pose Estimation & More Large Action Models (LAMs) vs Agentic LLMs: What's the Real Difference? Claude Sonnet 5: The Fable 5 at Home The Best $20 AI Plan: ChatGPT Plus vs Claude Pro vs Gemini Pro GraphRAG vs Vector RAG: Which Retrieval Method is Best? Using AI When You Don’t Trust AI The Self-Improving Loop in AI Agents: Architecture, Benefits, and How it Outperforms Traditional Agent Workflows Harness-1: The 20B Retrieval Subagent That Beats GPT-5.4 at Search Sakana Fugu: Multi-Agent System as a Model Claude's Hidden Art Skill: Making Illustrations With Code System Design for ML Interviews: 10 Real Problems Walked Through Most People Use ChatGPT Wrong: 10 Features and Tips That Changed How I Work OpenAI Just Launched 3 Free AI Courses with Certificates Autoregressive Models: Predicting the Future Using the Past Gemini Omni: AI Video Generation Inside Gemini DiffusionGemma: Google’s Diffusion-Based Open Model for Faster Text Generation Top 10 AI Engineering Tools Everyone is Using in 2026 I Tested Claude Fable 5: Can Anthropic’s Newest AI Deliver on the Hype? Prophet vs NeuralProphet vs TimeGPT vs Chronos: A Practical Comparison Build an Emergency Helpline Voice Agent with LangChain Choosing the Right Vector Database for RAG and AI Applications Google Gemma 4 12B: Architecture, Benchmarks, Access, and Hands-on Guide for Developers How to Choose the Right AI Model for Your Needs Agent Observability with LangSmith, Langfuse, and Arize: A Hands-On Comparison How to Use Claude Managed Agents? Google AI Studio vs Gemini App: What’s the Difference? AI Workflows for Sales Teams: Prospect Research, Lead Qualification, and CRM Updates on Autopilot Using LangGraph 25 Most Influential AI Pioneers to Meet at DataHack Summit 2026 Claude Opus 4.8: A Smarter Model in the Right Direction PySpark Optimization: 12 Proven Techniques to Speed Up Your Spark Jobs 10 Everyday Tasks You Can Automate with AI Today (With n8n Templates) Google Antigravity 2.0: The Full Developer Guide (I/O 2026) Build a Claude Cowork-Like Browser Agent Using Playwright MCP and Claude Desktop Pandas vs Polars vs DuckDB: Which Library Should You Choose? Qwen3.7-Max: Alibaba’s New Agent-First LLM for Coding, Reasoning, and Long-Horizon AI Workflows The Biggest Announcements from Google I/O 2026 Top 9 AI Events and Conferences in 2026 that you Must Attend Gemini 3.5 Flash: Frontier Intelligence with Speed Kimi WebBridge: Hands-on Guide to Kimi’s Browser Extension for AI Agents 40 Advanced SQL Window Functions Every Data Scientist Must Know(with examples) Top 10 AI Research Papers of 2025 6 Steps to Crack GenAI Case Study Interviews (With Real Examples) OpenAI Omni Moderation: How to Filter Text & Images for Free DataHack Summit 2026: You Just Cannot Skip This AI Event of the Year OpenAI’s New API Voice Models Will Change the Way You Use AI Hermes Agent Guide: What is it and How to Use it? Top 10 LLM Research Papers of 2026 Agent Memory Patterns in Cognitive Science and AI Systems 10 AI Agents Every AI Engineer Must Build (with GitHub Samples) 23 Tips for Smart Claude Code Token Saving and Workflow Optimization Feature Engineering with LLMs: Techniques & Python Examples ChatGPT is Now Inside Excel and Google Sheets: Here is How to Use it Gemini API File Search: The Easy Way to Build RAG Top 10 Open-Source Libraries to Fine-Tune LLMs Locally ML Intern in Practice: From Prompt to a Shipped Hugging Face Model 15+ Solved Agentic AI Projects with Github Links How People are Figuring Out Life With Claude MemPalace Explained: Building Long-Term Memory for AI Agents Beyond RAG Grok Voice Think Fast 1.0: Build Voice AI Agents That Actually Think Compressing LSTM Models for Retail Edge Deployment: A Practical Comparison MCP vs Agent Skills: Different Altogether GPT 5.5 vs Opus 4.7: Which is the Best AI Model Today? What is Agentic AI? Claude Code vs Codex: A Detailed Terminal Agent Comparison Google Deep Research Max: Build Autonomous AI Research Agents in Minutes Meta Muse Spark Review: Is It Worth the Hype? ChatGPT Images 2.0 vs Nano Banana 2: Which is Better? Cursor V3 Explained: The AI Coding Agent That’s Replacing Traditional IDEs in 2026 DeepSeek-V4: The Most Powerful Open-Source Model Ever Is GPT Image 2 the Best Image Generation Model? Token Economics: Why AI is Getting “Cheaper” From Idea to Output: Claude Does the Design Work Opus 4.7 vs Opus 4.6: Should You Switch? Build Human-Like AI Voice App with Gemini 3.1 Flash TTS How to Structure a Claude Code Project that Thinks Like an Engineer Gemma 4 Tool Calling Explained: Build AI Agents with Function Calling (Step-by-Step Guide) Anthropic Launches Claude Opus 4.7 For “Most Difficult Tasks” Top 28 Claude Shortcuts that will 10X your Speed GPT-5.4-Cyber: Why OpenAI is Keeping its Most Powerful Model Under Lock and Key Google AI Studio Guide: Every Feature Explained Mastering Deep Agents: Context Engineering that Actually Works 21 Computer Vision Projects from Beginner to Advanced (2026 Guide) Excel 101: Excel Agent Mode Explained MiniMax M2.7 Goes Open-Weight to Let You Run Agents Locally Top 10 Gemma 4 Projects That Will Blow Your Mind GLM-5.1: Architecture, Benchmarks, Capabilities & How to Use It Understanding BERTopic: From Raw Text to Interpretable Topics From Karpathy’s LLM Wiki to Graphify: AI Memory Layers are Here 10 Most Important AI Concepts Explained Simply Project Glasswing is World’s Most Powerful AI in Action How to Run Gemma 4 on Your Phone Without Internet: A Hands-On Guide Running Claude Code for Free with Gemma 4 and Ollama LLM Wiki Revolution: How Andrej Karpathy’s Idea is Changing AI Google’s Gemma 4: Is it the Best Open-Source Model of 2026?
Rethinking Enterprise Search: How Cortex Search Turns Data into Business Impact
2026-04-07 · via Analytics Vidhya

According to Stack Overflow and Atlassian, developers lose between 6 and 10 hours every week searching for information or clarifying unclear documentation. For a 50-developer team, that adds up to $675,000–$1.1 million in wasted productivity every year. This is not just a tooling issue. It is a retrieval problem.
Enterprises have plenty of data but lack fast, reliable ways to find the right information. Traditional search fails as systems grow complex, slowing onboarding, decisions, and support. In this article, we explore how modern enterprise search solves these gaps.

Why Traditional Enterprise Search Falls Short

Most enterprise search systems were built for a different era. They assume relatively static content, predictable bugs and queries, and manual tuning to stay relevant. In modern data environment none of those assumptions hold significance. 

Teams work across rapidly changing datasets. Queries are ambiguous and conversational. Context matters as much as Keywords. Yet many search tools still rely on brittle rules and exact matches, forcing users guess the right phrasing rather than expressing real intent.  

The result is familiar. People search repeatedly, refine queries manually or abandon search altogether. In AI-powered applications, the problem becomes more serious. Poor retrieval does not just slow users down. It often feeds incomplete or irrelevant context into language models, increasing the risk of low-quality or misleading outputs.  

The Switch to Hybrid Retrieval

The next generation of enterprise search is built on hybrid retrieval. Instead of choosing between keyword search and semantic search, modern systems combine both of them.  

Keyword search excels at precision. Vector search captures meaning and intent. Together, they enable search experiences that are fast, flexible and resilient across a wide range of queries. 

Cortex Search is designed orienting this hybrid approach from the start. It provides low latency, high-quality fuzzy search directly over Snowflake data, without requiring teams to manage embeddings and tune relevance parameters or maintain custom infrastructure. The retrieval layer adapts to the data, not the other way around. 

Rather than treating search as an add on feature, Coretx Search makes it a foundational capability that scales with enterprise data complexity. 

Cortex Search supports two primary use cases that are increasingly central to modern data strategies. 

First is Retrieval Augmented Generation. Cortex Search acts as the retrieval engine that supplies large language models with accurate, up-to-date enterprise context. This grounding layer is what allows AI chat applications to deliver responses that are specific, relevant and aligned with proprietary data rather than generic patterns. 

Second is Enterprise Search. Cortex Search can power high-quality search experiences embedded directly into applications, tools and workflows. Users ask questions in natural language and receive results ranked by both semantic relevance and keyword precision.

Under the hood, cortex search indexes text data, applies hybrid retrieval and uses semantic reranking to surface the most relevant results. Refreshes are automated and incremental, so search results stay aligned with the current state of the data without manual intervention. 

This matters because retrieval quality directly shapes user trust. When search works consistently, people rely on it. When it does not, they stop using it and fall back to slower, more expensive paths. 

How Cortex Search Works in Practice

At a high level, Cortex Search abstracts away the hardest parts of building a modern retrieval system. 

What we’ll Build: A customer support AI assistant that answers user questions by retrieving grounded context from historical support tickets and transcripts: then passing that context to a Snowflake Cortex LLM to generate accurate, specific answers.

Prerequisites

Requirement Details
Snowflake Account Free trial at trial.snowflake.com — Enterprise tier or above
Snowflake Role SYSADMIN or a role with CREATE DATABASE, CREATE WAREHOUSE, CREATE CORTEX SEARCH SERVICE privileges
Python 3.9+
Packages snowflake-snowpark-python, snowflake-core

Setting up Snowflake account

  1. Head over to trial.snowflake.com and Sign up for the Enterprise account
Snowflake Account Creation
  1. Now you will see something like this:
Snowflake dashboard

Step 1 — Set Up Snowflake Environment

Run the following in a Snowflake Worksheet to create the database, schema 

First create a new sql file.

Setting Snowflake Environment
CREATE DATABASE IF NOT EXISTS SUPPORT_DB;

CREATE WAREHOUSE IF NOT EXISTS COMPUTE_WH
WAREHOUSE_SIZE = 'X-SMALL'
AUTO_SUSPEND = 60
AUTO_RESUME = TRUE;

USE DATABASE SUPPORT_DB;
USE WAREHOUSE COMPUTE_WH;

Step 2 — Create and Populate the Source Table

This table simulates historical support tickets. In production, this could be a live table synced from your CRM, ticketing system, or data pipeline.

CREATE TABLE IF NOT EXISTS SUPPORT_DB.PUBLIC.support_tickets (
    ticket_id VARCHAR(20),
    issue_category VARCHAR(100),
    user_query TEXT,
    resolution TEXT,
    created_at TIMESTAMP_NTZ DEFAULT CURRENT_TIMESTAMP()
);

INSERT INTO SUPPORT_DB.PUBLIC.support_tickets (ticket_id, issue_category, user_query, resolution) VALUES
('TKT-001', 'Connectivity',
'My internet keeps dropping every few minutes. The router lights look normal.',
'Agent checked line diagnostics. Found intermittent signal degradation on the coax line. Dispatched technician to replace splitter. Issue resolved after hardware swap.'),

('TKT-002', 'Connectivity',
'Internet is very slow during evenings but fine in the morning.',
'Network congestion detected in customer segment during peak hours (6–10 PM). Upgraded customer to a less congested node. Speeds normalized within 24 hours.'),

('TKT-003', 'Billing',
'I was charged twice for the same month. Need a refund.',
'Duplicate billing confirmed due to payment gateway retry error. Refund of $49.99 issued. Customer notified via email. Root cause patched in billing system.'),

('TKT-004', 'Device Setup',
'My new router is not showing up in the Wi-Fi list on my laptop.',
'Router was broadcasting on 5GHz only. Customer laptop had outdated Wi-Fi driver that did not support 5GHz. Guided customer to update driver. Both 2.4GHz and 5GHz bands now visible.'),

('TKT-005', 'Connectivity',
'Frequent packet loss during video calls. Wired connection also affected.',
'Packet loss traced to faulty ethernet port on modem. Replaced modem under warranty. Customer confirmed stable connection post-replacement.'),

('TKT-006', 'Account',
'Cannot log into the customer portal. Password reset emails are not arriving.',
'Email delivery blocked by SPF record misconfiguration on customer domain. Advised customer to provide support domain. Reset email delivered successfully.'),

('TKT-007', 'Connectivity',
'Internet unstable only when microwave is running in the kitchen.',
'2.4GHz Wi-Fi interference caused by microwave proximity to router. Recommended switching router channel from 6 to 11 and enabling 5GHz band. Issue eliminated.'),

('TKT-008', 'Speed',
'Advertised speed is 500Mbps but I only get around 120Mbps on speedtest.',
'Speed test confirmed 480Mbps at node. Customer router limited to 100Mbps due to Fast Ethernet port. Recommended router upgrade. Post-upgrade speed confirmed at 470Mbps.');

Step 3 — Create the Cortex Search Service

This single SQL command handles embedding generation, indexing, and hybrid retrieval setup automatically. The ON clause specifies which column to index for full-text and semantic search. ATTRIBUTES defines filterable metadata columns.

CREATE OR REPLACE CORTEX SEARCH SERVICE SUPPORT_DB.PUBLIC.support_search_svc
ON resolution
ATTRIBUTES issue_category, ticket_id
WAREHOUSE = COMPUTE_WH
TARGET_LAG = '1 minute'
AS (
    SELECT
        ticket_id,
        issue_category,
        user_query,
        resolution
    FROM SUPPORT_DB.PUBLIC.support_tickets
);

What happens here: Snowflake automatically generates vector embeddings for the resolution column, builds both a keyword index and a vector index, and exposes a unified hybrid retrieval endpoint. No embedding model management, no separate vector database.

You can verify the service is active:

SHOW CORTEX SEARCH SERVICES IN SCHEMA SUPPORT_DB.PUBLIC;

Output:

Snowflake table

Step 4 — Query the Search Service from Python

Connect to Snowflake and use the snowflake-core SDK to query the service:

First Install required packages:

pip install snowflake-snowpark-python snowflake-core

Now to find your account details go to your account and click on “Connect a tool to Snowflake”

Snowflake account creation
from snowflake.snowpark import Session
from snowflake.core import Root

# --- Connection config ---
connection_params = {
    "account": "YOUR_ACCOUNT_IDENTIFIER",  # e.g. abc12345.us-east-1
    "user": "YOUR_USERNAME",
    "password": "YOUR_PASSWORD",
    "role": "SYSADMIN",
    "warehouse": "COMPUTE_WH",
    "database": "SUPPORT_DB",
    "schema": "PUBLIC",
}

# --- Create Snowpark session ---
session = Session.builder.configs(connection_params).create()
root = Root(session)

# --- Reference the Cortex Search service ---
search_svc = (
    root.databases["SUPPORT_DB"]
    .schemas["PUBLIC"]
    .cortex_search_services["SUPPORT_SEARCH_SVC"]
)

def retrieve_context(query: str, category_filter: str = None, top_k: int = 3):
    """Run hybrid search against the Cortex Search service."""
    filter_expr = {"@eq": {"issue_category": category_filter}} if category_filter else None

    response = search_svc.search(
        query=query,
        columns=["ticket_id", "issue_category", "user_query", "resolution"],
        filter=filter_expr,
        limit=top_k,
    )
    return response.results

# --- Test retrieval ---
user_question = "Why is my internet unstable?"
results = retrieve_context(user_question, top_k=3)

print(f"\n🔍 Query: {user_question}\n")
print("=" * 60)

for i, r in enumerate(results, 1):
    print(f"\n[Result {i}]")
    print(f"  Ticket ID : {r['ticket_id']}")
    print(f"  Category  : {r['issue_category']}")
    print(f"  User Query: {r['user_query']}")
    print(f"  Resolution: {r['resolution'][:200]}...")

Output:

Output fetched via RAG

Step 5 — Build the Full RAG Pipeline

Now pass the retrieved context into Snowflake Cortex LLM (mistral-large or llama3.1-70b) to generate a grounded answer:

import json

def build_rag_prompt(user_question: str, retrieved_results: list) -> str:
    """Format retrieved context into an LLM-ready prompt."""
    context_blocks = []
    for r in retrieved_results:
        context_blocks.append(
            f"- Ticket {r['ticket_id']} ({r['issue_category']}): "
            f"Customer reported '{r['user_query']}'. "
            f"Resolution: {r['resolution']}"
        )
    context_str = "\n".join(context_blocks)

    return f"""You are a helpful customer support assistant. Use ONLY the context below
to answer the customer's question. Be specific and concise.

CONTEXT FROM HISTORICAL TICKETS:
{context_str}

CUSTOMER QUESTION: {user_question}
ANSWER:"""

def ask_rag_assistant(user_question: str, model: str = "mistral-large2"):
    """Full RAG pipeline: retrieve → augment → generate."""
    print(f"\n📡 Retrieving context for: '{user_question}'")
    results = retrieve_context(user_question, top_k=3)
    print(f"   ✅ Retrieved {len(results)} relevant tickets")

    prompt = build_rag_prompt(user_question, results)

    safe_prompt = prompt.replace("'", "\\'")
    sql = f"""
        SELECT SNOWFLAKE.CORTEX.COMPLETE(
            '{model}',
            '{safe_prompt}'
        ) AS answer
    """

    result = session.sql(sql).collect()
    answer = result[0]["ANSWER"]
    return answer, results

# --- Run the assistant ---
questions = [
    "Why is my internet unstable?",
    "I'm being charged incorrectly, what should I do?",
    "My router is not visible on my devices",
]

for q in questions:
    answer, ctx = ask_rag_assistant(q)
    print(f"\n{'='*60}")
    print(f"❓ Customer: {q}")
    print(f"\n🤖 AI Assistant:\n{answer.strip()}")
    print(f"\n📎 Grounded in tickets: {[r['ticket_id'] for r in ctx]}")

Output:

Output

Key takeaway: The AI never generates generic answers. Every response is traceable to specific historical tickets, dramatically reducing hallucination risk and making outputs auditable.

Example: Building Enterprise Search into Applications

What we’ll build: 

A natural language support ticket search interface — embedded directly into an application — that lets agents and customers search historical tickets using plain English. No new infrastructure is needed: this example reuses the exact same support_tickets table and support_search_svc Cortex Search service created in the RAG section above.

This shows how the same Cortex Search service can power two entirely different surfaces: an AI assistant on one hand, and a browsable search UI on the other.

Step 1 — Confirm the Existing Service is Active

Verify the service created in the previous section is still running:

USE DATABASE SUPPORT_DB;

USE SCHEMA PUBLIC;

SHOW CORTEX SEARCH SERVICES IN SCHEMA RAG_SCHEMA;

Output:

Table

Step 2 — Build the Enterprise Search Client

This module connects to the same Snowpark session and support_search_svc service, and exposes a search function with category filtering and ranked result display — the kind of interface you’d embed into a support portal, an internal knowledge tool, or an agent dashboard.

# enterprise_search.py

from snowflake.snowpark import Session
from snowflake.core import Root

# --- Connection config ---
connection_params = {
    "account": "YOUR_ACCOUNT_IDENTIFIER",  # e.g. abc12345.us-east-1
    "user": "YOUR_USERNAME",
    "password": "YOUR_PASSWORD",
    "role": "SYSADMIN",
    "warehouse": "COMPUTE_WH",
    "database": "SUPPORT_DB",
    "schema": "PUBLIC",
}

session = Session.builder.configs(connection_params).create()
root = Root(session)

# --- Same service as the RAG example — no new service needed ---
search_svc = (
    root.databases["SUPPORT_DB"]
    .schemas["RAG_SCHEMA"]
    .cortex_search_services["SUPPORT_SEARCH_SVC"]
)

def search_tickets(query: str, category: str = None, top_k: int = 5) -> list:
    """Natural language ticket search with optional category filter."""
    filter_expr = {"@eq": {"issue_category": category}} if category else None

    response = search_svc.search(
        query=query,
        columns=["ticket_id", "issue_category", "user_query", "resolution"],
        filter=filter_expr,
        limit=top_k,
    )
    return response.results

def display_tickets(query: str, results: list, filter_label: str = None):
    """Render search results as a formatted ticket list."""
    label = f" [{filter_label}]" if filter_label else ""

    print(f"\n🔎 Search{label}: \"{query}\"")
    print(f"   {len(results)} ticket(s) found\n")
    print("-" * 72)

    for i, r in enumerate(results, 1):
        print(f"  #{i}  {r['ticket_id']}  |  Category: {r['issue_category']}")
        print(f"       Customer: {r['user_query']}")
        print(f"       Resolution: {r['resolution'][:160]}...\n")

Step 3 — Run Natural Language Ticket Searches

# --- Search 1: Semantic query — no exact match needed ---
results = search_tickets("device not connecting to the network")
display_tickets("device not connecting to the network", results)

Output:

Output
# --- Search 2: Category-filtered search (Billing only) ---
results = search_tickets(
    query="incorrect payment or refund request",
    category="Billing"
)

display_tickets(
    "incorrect payment or refund request",
    results,
    filter_label="Billing"
)

2nd Output:

Output in Billing
# --- Search 3: Account & access issues ---
results = search_tickets("can't log in or access my account", category="Account")
display_tickets("can't log in or access my account", results, filter_label="Account")

Output:

Output in Accounting

Step 4 — Expose as a Flask Search API (Optional)

Wrap the search function in a REST endpoint to embed it into any support portal, internal tool, or chatbot backend:

# app.py

from flask import Flask, request, jsonify
from enterprise_search import search_tickets

app = Flask(__name__)

@app.route("/tickets/search", methods=["GET"])

def ticket_search():
    query    = request.args.get("q", "")
    category = request.args.get("category")        # optional filter
    top_k    = int(request.args.get("limit", 5))

    if not query:
        return jsonify({"error": "Query parameter 'q' is required"}), 400

    results = search_tickets(query, category=category, top_k=top_k)

    return jsonify({
        "query":    query,
        "category": category,
        "count":    len(results),
        "results":  results,
    })

if __name__ == "__main__":
    app.run(port=5001, debug=True)

Test with curl:

# Free-text natural language search
curl "http://localhost:5001/tickets/search?q=internet+keeps+dropping&limit=3"

Output:

JSON Output
# Filtered by category

curl "http://localhost:5001/tickets/search?q=charged+incorrectly&category=Billing"

Output:

JSON output

Key takeaway: The same Cortex Search service that grounds the RAG assistant also powers a fully functional enterprise search UI — no duplication of infrastructure, no second index to maintain. One service definition delivers both experiences, and both stay automatically in sync as tickets are added or updated.

The Business Impact of Better Retrieval

Poor data search methods quietly erode enterprise performance. Time is lost to repeated queries and rework. On the other hand, support teams get involved in resolving questions that should have been self-served in the first place. New hires and customers take longer to reach productivity. AI initiatives stall when outputs cannot be trusted. 

By contrast, strong retrieval changes how organizations operate. 

Teams move faster because answers are easier to find. AI applications perform better because they are grounded in relevant, current data. Feature adoption improves because users can discover and understand capabilities without friction. Support costs decline as search absorbs routine questions. 

Cortex Search turns retrieval from a background utility into a strategic lever. It helps enterprises unlock the value already present in their data by making it accessible, searchable and usable at scale.  

Frequently Asked Questions

Q1. Why does traditional enterprise search fail in modern systems?

A. It relies on keyword matching and static indexes, which fail to capture intent and keep up with dynamic, distributed data environments.

Q2. What makes hybrid retrieval more effective than traditional search?

A. It combines keyword precision with semantic understanding, enabling faster, more relevant results even for ambiguous or conversational queries.

Q3. How does Cortex Search improve AI and enterprise applications?

A. It provides accurate, real-time retrieval that grounds AI responses and powers search experiences without complex infrastructure or manual tuning.

Dentsu’s global capability center, Dentsu Global Services (DGS), is shaping the future as an innovation engine. DGS has 5,600+ experts that specialize in digital platforms, performance marketing, product engineering, data science, automation and AI, with media transformation at the core. DGS delivers AI-first, scalable solutions through dentsu’s network seamlessly integrating people, technology, and craft. They blend human creativity and advanced technology, building a diverse, future-focused organization that adapts quickly to client needs while ensuring reliability, collaboration and excellence in every engagement.

DGS brings together world-class talent, breakthrough technology and bold ideas to deliver impact at scale—for dentsu’s clients, its people and the world. It’s a future-focused, industry-leading workplace where talent meets opportunity. At DGS, employees can accelerate their career, collaborate with global teams and contribute to work that shapes the future. Find out more: Dentsu Global Services