Customizing semantic metadata
Summarize
Summary of Customizing Semantic Metadata
Customizing semantic metadata in ServiceNow's Query Generation allows you to tailor how the system interprets natural language queries by refining descriptions, labels, and usage instructions for entities (tables) and dimensions (fields). This customization improves accuracy and relevance by aligning the AI’s understanding with your organization’s specific terminology and data context.
Show less
Semantic metadata consists of three key fields:
- Semantic Label: A short alias used as a search keyword to match user questions with the correct table or field.
- Semantic Description: A natural-language business context description helping distinguish similar tables or fields.
- Semantic Usage Instructions: Guidance injected into the AI model explaining how to query the data, including operators, abbreviation handling, and hierarchical expansions.
When to Customize
- If the system selects incorrect or missing tables or fields — update labels and descriptions.
- If your business uses terminology different from auto-generated labels — update labels.
- If queries are constructed incorrectly despite correct table/field selection — update usage instructions.
- Focus only on fields involved in consistently failing queries; avoid reviewing all dimensions indiscriminately.
Methods for Customization
There are two methods to customize metadata, each suited for different use cases:
- Semantic Table and Column Configuration Tables: Use snquerygentableconfig and snquerygencolumnconfig to edit records. This is the preferred, update set-compatible method allowing transfer of changes across instances. It supports entity and dimension descriptions and dimension usage instructions but not entity labels or usage instructions.
- Entity and Dimension Tables: Use snquerygenentity and snquerygendimension for simpler, instance-specific edits. This method allows changing entity labels and usage instructions but is not transferable between instances and may be overwritten by upgrades.
Both approaches require the snquerygen.admin role or higher.
Best Practices for Writing Metadata
- Descriptions: Write concise (1–2 sentences) descriptions focused on how users reference the data, including common synonyms and abbreviations. Avoid lengthy paragraphs.
- Usage Instructions: Be specific and structured. Use clear rules, examples, and edge cases. Include matching strategies (e.g., CONTAINS, exact match) and expansion logic where applicable. Focus each instruction on a single entity or field.
Usage Instructions vs. Segments
Usage instructions dynamically guide the AI on how to query fields, ideal for free-text or variable data (e.g., locations). Segments are static filters suited for fixed business terms (e.g., priority levels). For fields with broad possible values like locations, usage instructions provide flexibility and accuracy.
Practical Examples and Patterns
For example, enhance an Incident entity description from “Incident table” to “IT incidents, outages, service disruptions, and IT support tickets” to reflect real user terminology.
For fields like State or Country that use abbreviations and aliases, usage instructions should specify querying both full names and abbreviations (e.g., “California” and “CA”) and include known synonyms (e.g., “UK” and “United Kingdom”).
Complex query logic can be encoded in usage instructions to dynamically expand hierarchical geographic terms (e.g., “Europe” expands to a list of countries), combining OR-based CONTAINS filters to capture all relevant data.
This approach teaches the AI the querying logic once, enabling it to handle a wide range of user questions accurately and consistently.
Implementing Customizations
- Create or modify entity descriptions in the Semantic Table Configuration table to enable update set transfers between instances.
- Create or modify column descriptions and usage instructions in the Semantic Column Configuration table for similar update set compatibility.
Summary for ServiceNow Customers
By customizing semantic metadata, you can significantly improve Query Generation’s natural language understanding and query accuracy tailored to your organization's terminology and data structures. Use update set-compatible tables for scalable customizations across environments, and write clear, concise descriptions and structured usage instructions to guide the AI effectively. Focus your efforts on problematic fields identified by failing queries rather than attempting broad changes. This ensures efficient improvements, better user experience, and more relevant query results.
Semantic metadata — descriptions, labels, and usage instructions — control how Query Generation interprets natural language questions. Customize these metadata to improve accuracy for your organization's terminology and data.
Both entities (tables) and dimensions (fields) in the semantic layer have three metadata fields that Query Generation uses when processing a question:
- Semantic Label
- A short name or alias for the entity or dimension. Functions as a search keyword that helps AI search identify the correct table or field when a user's question does not match the default field label.
- Semantic Description
- A natural-language description of what the entity or dimension represents in business terms. Provides context that helps the system distinguish between similar tables or fields.
- Semantic Usage Instructions
- Instructions injected directly into the LLM prompt when the entity or dimension is selected. Teaches the system how to query the data — for example, which operators to use, how to handle abbreviations, or how to expand hierarchical values.
When to customize
Metadata is auto-generated and works well in its baseline state. Customize it only when you observe consistent, repeatable problems:
- The system selects the wrong table or cannot find one — edit descriptions and labels
- The wrong field is selected or a field is missing — edit descriptions and labels
- Your organization uses different terminology than the auto-generated labels — edit labels
- The right table or field is selected but the query is constructed incorrectly — edit usage instructions
Two methods for customizing metadata
Two methods are available. Editing the configuration tables is considered the default approach.
| Method | Tables | When to use |
|---|---|---|
| Edit records on the Semantic Table Configuration and Semantic Column Configuration tables | Semantic Table Configuration [sn_query_gen_table_config] and Semantic Column Configuration [sn_query_gen_column_config] | Update set compatible. Customizations can be included in update sets and transferred between instances. Overrides values set in the Entity and Dimension tables. Supports entity and dimension descriptions and dimension usage instructions. Doesn't support entity labels or usage instructions. |
| Edit records on the Entity and Dimension tables | Entity [sn_query_gen_entity] and Dimension [sn_query_gen_dimension] | Simpler. Suitable for testing on a single instance. These customizations cannot be transferred between instances. However, this is the only method for changing entity labels and entity-level usage instructions. Could be overridden by an update to the table from an upgrade. |
Writing effective descriptions
Follow these guidelines when writing semantic descriptions:
- Keep descriptions to 1–2 sentences focused on how users refer to this data
- Include common synonyms and abbreviations your users would say
- Avoid full paragraphs. Concise descriptions match better than verbose ones
Writing effective usage instructions
Follow these guidelines when writing semantic usage instructions:
- Be specific and structured. Include rules, examples, and edge cases
- Use numbered steps or labeled sections if the logic is complex
- Include example user questions and what the query should look like
- For free-text fields, specify matching strategy (CONTAINS, exact match) and expansion rules
- Keep instructions focused on one entity or field's needs
Usage instructions vs. Segments
Usage instructions teach the LLM how to query a field dynamically, allowing the LLM to handle many scenarios based on your rules. Segments hard-code specific filter values. For fields like free-text location, usage instructions are the correct approach because you cannot predefine every possible location query. Segments are better for fixed business terminology such as "Sev1" = priority 1.
Semantic description
For an Incident entity, instead of using just "Incident table", use a description like "IT incidents, outages, service disruptions, and IT support tickets" to include terminology your users actually say.
Data conventions in usage instructions
For a State field that stores abbreviations:
"Values in this field may be full state names or two-letter abbreviations (for example, 'California' or 'CA'). Always query for both forms. For country names, also include common aliases (for example, 'United Kingdom' OR 'UK')."
Complex query logic in usage instructions
These usage instructions are for a free-text Approximate Location field with hierarchical expansion and synonym handling:
- Field: Approximate Location - Usage Instruction
- The Approximate Location field is a non-normalized, free-text string. All queries must use case-insensitive CONTAINS matching and handle hierarchical expansion.
- Core Query Logic
-
- Identify the geographic entity (Neighborhood, City, State, Country, Region, or Continent).
- Expand broader entities into explicit lists of sub-entities before querying.
- Use OR logic for all expanded terms and synonyms.
- Expansion Rules
-
- Continents: Expand to a list of all major countries within that continent.
- Regions: Expand to relevant states or countries (for example, "Atlantic Coast" -> NC, VA, FL, etc.).
- States/Provinces: Include both full names and standard abbreviations (for example, "North Carolina" OR "NC").
- Countries: Include common aliases (for example, "UK" OR "United Kingdom").
- Implementation Pattern
-
- Extract geographic intent.
- Classify entity level.
- Expand downward (Continent > Country) or include synonyms (State > Abbreviation).
- Construct a single query string using OR-based CONTAINS filters.
Notice the pattern: the instruction defines rules and examples, and the LLM can handle many related queries dynamically based on the rules you provide. You teach the logic once, and the model applies it to any input.
- Examples of user questions converted to queries
-
- User: "Show me things in Japan" → Query: location CONTAINS "Japan"
-
User: "Show me things in Asian countries" → Decomposition: Asia -> [Japan, China, Indonesia...] → Query: location CONTAINS "Japan" OR location CONTAINS "China" OR location CONTAINS "Indonesia"...
- User: "Show me things in North Carolina" → Query: location CONTAINS "North Carolina" OR location CONTAINS "NC"
- User: "Show me everything in Europe" → Decomposition: Europe > [UK, Spain, France, Germany...] → Query: location CONTAINS "UK" OR location CONTAINS "United Kingdom" OR location CONTAINS "Spain" OR location CONTAINS "France"...