Core Query Architecture
Query System Reference
Component | Purpose | Key Methods | Usage |
---|---|---|---|
QueryDescriptor | Query construction via fluent API | find() , similar() , filter() , select() , limit() | Method chaining for query building |
SimilarFilterClause | User input similarity search | from_param() , evaluate() | Text queries, user inputs |
LooksLikeFilterClause | Item-based similarity search | from_param() , evaluate() | Item-to-item recommendations |
HardFilterClause | Exact field filtering | from_param() , evaluate() | Precise constraint application |
QueryParamValueSetter | Parameter resolution pipeline | set_values() , validate_params() | Runtime parameter binding |
NLQHandler | Natural language processing | fill_params() , suggest_improvements() | Natural language query support |
Query Building and Parameter System
TheQueryDescriptor
class provides a fluent API for building complex search operations with dynamic parameters. Queries are constructed through method chaining, where each method adds a specific QueryClause
to the descriptor.
Core Query Methods
The system provides two primary search methods that can be combined and weighted:Method | Purpose | Parameters | Usage |
---|---|---|---|
similar() | Search using user-provided input | space , param , weight | Text queries, user inputs |
with_vector() | Search using stored item vectors | schema , id_param , weight | Item-to-item recommendations |
Similar Clause Usage
Similar Clause Usage
The Key Features:
.similar()
method transforms user input into query vectors through the specified space:- Multi-Space Support: Search across multiple vector spaces simultaneously
- Dynamic Weighting: Runtime adjustment of space importance
- Parameter Binding: Flexible query parameterization for reuse
With Vector Clause Usage
With Vector Clause Usage
The Implementation Features:
.with_vector()
method uses existing item vectors for search:- Vector Reuse: Leverages pre-computed item embeddings
- Space-Specific Weights: Fine-grained control over space contributions
- Efficient Recommendations: Optimized for item-based similarity
Parameter System Implementation
Parameter System Implementation
The
Param
class enables dynamic query construction with runtime value binding:Component | Purpose | Implementation |
---|---|---|
sl.Param("name") | Parameter placeholder | Runtime value substitution |
param.default | Fallback value | Used when no runtime value provided |
param.description | NLQ context | Enables natural language processing |
param.options | Allowed values | Constrains parameter inputs |
Query Execution and Parameter Processing
Query execution involves parameter resolution through theQueryParamValueSetter
class, which handles parameter binding, NLQ processing, and clause evaluation.
Parameter Resolution Process
TheQueryParamValueSetter
coordinates the complete parameter resolution pipeline:
Stage | Purpose | Implementation |
---|---|---|
append_missing_mandatory_clauses() | Adds required clauses | LimitClause , RadiusClause , SelectClause |
validate_params() | Validates parameter names | Checks against clause parameters |
__alter_query_descriptor() | Applies parameter values | Updates clause parameters |
__calculate_nlq_params() | Processes NLQ parameters | Calls NLQHandler.fill_params() |
__calculate_default_params() | Sets default values | Uses Param.default values |
Query Clause Implementation
Query Clause Implementation
Each query method generates specific
QueryClause
objects:Clause Type | Generated By | Key Methods | Purpose |
---|---|---|---|
SimilarFilterClause | similar() | from_param() , evaluate() | Vector similarity search |
LooksLikeFilterClause | with_vector() | from_param() , evaluate() | Item-based search |
HardFilterClause | filter() | from_param() , evaluate() | Exact field filtering |
SelectClause | select() | from_param() , evaluate() | Field selection |
LimitClause | limit() | from_param() , get_value() | Result count limit |
RadiusClause | radius() | from_param() , get_value() | Distance constraint |
Clause Evaluation Process
Clause Evaluation Process
Each
QueryClause
implements parameter evaluation through key methods:Method | Purpose | Return Type |
---|---|---|
evaluate() | Converts clause to executable form | Clause-specific type |
alter_param_values() | Updates parameter values | Modified clause instance |
get_param_value_by_param_name() | Retrieves parameter values | dict[str, PythonTypes] |
Advanced Query Features
Natural Language Query Processing
The system supports natural language query processing through theNLQClause
and NLQHandler
classes, which integrate with OpenAI for automated parameter extraction from natural language queries.
Hard Filtering and Comparison Operations
The query system implements hard filtering throughHardFilterClause
with comprehensive comparison operation support:
Operation Type | Implementation | Usage Example | |
---|---|---|---|
Equality | ComparisonOperation.EQUAL | schema.field == "value" | |
Inequality | ComparisonOperation.NOT_EQUAL | schema.field != "value" | |
Numeric comparison | ComparisonOperation.GREATER_THAN | schema.price > 100 | |
List operations | ComparisonOperation.CONTAINS | schema.categories.contains(["tag"]) | |
Combined filters | _Or[SchemaField] | `(field == “a”) | (field == “b”)` |
Query Weighting System
Query Weighting System
The system implements two distinct weighting mechanisms that control different aspects of similarity calculation:Space Weights vs Clause Weights:
Weight Processing Order:
Component | Purpose | Implementation |
---|---|---|
Space Weights | Inter-space importance control | Reweights normalized per-space vectors |
Clause Weights | Intra-space clause contribution | Controls query vector construction within spaces |
- Clause weights influence query vector construction per space
- Per-space query vectors are normalized
- Space weights reweight normalized vectors for final aggregation
- Final similarity scores computed against aggregated query vector
Query Validation and Error Handling
Query Validation and Error Handling
The system implements comprehensive validation through multiple validator classes:
Validator | Purpose | Key Methods |
---|---|---|
QueryDescriptorValidator | Query structure validation | validate() , __validate_schema() |
QueryFilterValidator | Filter operation validation | validate_operation_is_supported() |
QueryFilterValidator | Parameter type validation | validate_operation_operand_type() |
Result Structure and Metadata
Query results are structured through theQueryResult
class and related result classes that provide comprehensive search result information and metadata.
Result Classes Implementation
The result system implements structured data throughImmutableBaseModel
classes:
Class | Purpose | Key Fields |
---|---|---|
QueryResult | Top-level result container | entries , metadata , __str__() |
ResultEntry | Individual search result | id , fields , metadata |
ResultEntryMetadata | Per-result metadata | score , partial_scores , vector_parts |
ResultMetadata | Query-level metadata | schema_name , search_vector , search_params |
Metadata Access and Processing
Metadata Access and Processing
The system provides metadata access through the
include_metadata()
method:Component | Purpose | Implementation |
---|---|---|
include_metadata() | Enables metadata collection | Sets QueryUserConfig.with_metadata = True |
QueryUserConfig | Query execution configuration | Controls metadata inclusion |
with_metadata property | Metadata inclusion flag | Used by query execution pipeline |
Result Processing and Conversion
Result Processing and Conversion
The system provides multiple ways to process and analyze query results:Result Access Patterns:
Usage Patterns
Basic Query Construction
Advanced Multi-Space Query
Natural Language Query
The Query module supports both programmatic and natural language queries, making it accessible to both developers and end-users while maintaining powerful customization capabilities through comprehensive parameter systems and advanced filtering options.