Comprehensive querying framework for building complex vector searches with filtering, parameters, natural language processing, and advanced result management
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 |
QueryDescriptor
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.
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()
method transforms user input into query vectors through the specified space:With Vector Clause Usage
.with_vector()
method uses existing item vectors for search:Parameter System Implementation
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 |
QueryParamValueSetter
class, which handles parameter binding, NLQ processing, and clause evaluation.
QueryParamValueSetter
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
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
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] |
NLQClause
and NLQHandler
classes, which integrate with OpenAI for automated parameter extraction from natural language queries.
HardFilterClause
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
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 |
Query Validation and Error Handling
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() |
QueryResult
class and related result classes that provide comprehensive search result information and metadata.
ImmutableBaseModel
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
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