查询
RedisVL 中的查询类提供了一种结构化的方式来定义简单或复杂
查询不同的使用案例。每个查询类将redis-py
查询模块 https://github.com/redis/redis-py/blob/master/redis/commands/search/query.py 具有扩展功能,易于使用。
矢量查询
class VectorQuery(vector, vector_field_name, return_fields=None, filter_expression=None, dtype='float32', num_results=10, return_score=True, dialect=2, sort_by=None, in_order=False)
基地:BaseVectorQuery
,BaseQuery
用于运行向量搜索的查询以及可选筛选器 表达。
- 参数:
- vector (List [ float ]) – 用于执行向量搜索的向量。
- vector_field_name (str) – 要搜索的向量字段的名称 针对。
- return_fields (List [ str ]) – 搜索时返回的声明字段 结果。
- filter_expression (Union [ str , FilterExpression ] , 可选) – 要应用的过滤器 以及向量搜索。默认为 None。
- - 向量的 dtype。默认为 “float32” 的
- num_results (int , optional) – 要从 向量搜索。默认值为 10。
- return_score (bool , optional) – 是否返回向量 距离。默认为 True。
- dialect (int , optional) – RediSearch 查询方言。 默认值为 2。
- sort_by (Optional [ str ]) – 对结果进行排序所依据的字段。违约 设置为 None。结果将按矢量距离排序。
- in_order (bool) – 要求字段中的术语具有 与 Query Filter 中的术语顺序相同,无论 它们之间的偏移量。默认为 False。
- 引发:TypeError – 如果 filter_expression 不是 redisvl.query.FilterExpression 类型
NOTE
详细了解 Redis 中的向量查询:https://redis.io/docs/interact/search-and-query/search/vectors/#knn-search
dialect(dialect)
向查询中添加 dialect 字段。
- dialect - 在
- 参数: dialect (int)
- 返回类型:Query
expander(expander)
向查询添加扩展器字段。
- expander - 扩展器的名称
- 参数: expander (str)
- 返回类型:Query
in_order()
仅匹配查询词出现在 文档中的顺序相同。 即,对于查询 “Hello world”,我们不匹配 “world hello”
- 返回类型:Query
language(language)
将查询分析为使用指定语言。
- 参数: language (str) – 语言(例如中文或英文)
- 返回类型:Query
limit_fields(*fields)
将搜索限制为仅特定的 TEXT 字段。
- fields:字符串列表,区分大小写的字段名称
从定义的架构中。
- 参数: fields (List [ str ])
- 返回类型:Query
limit_ids(*ids)
将结果限制为一组特定的已知文档 任意长度的 id。
- 返回类型:Query
no_content()
将查询设置为仅返回 ids,而不返回文档内容。
- 返回类型:Query
no_stopwords()
防止筛选查询的非索引字。 仅在您确定包含的非常大的查询中有用 没有停用词。
- 返回类型:Query
paging(offset, num)
设置查询的分页 (默认为 0..10) 。
- offset:结果的分页偏移量。默认为 0
- num:我们想要多少个 result
- 参数:
- offset (int (整数))
- num (int (整数))
- 返回类型:Query
query_string()
仅返回此查询的查询字符串。
- 返回类型:str
return_fields(*fields)
添加字段以返回字段。
- 返回类型:Query
scorer(scorer)
使用不同的评分函数来评估文档相关性。 默认值为 TFIDF。
- 参数: scorer (str) – 要使用的评分函数 (例如 TFIDF.DOCNORM 或 BM25)
- 返回类型:Query
set_filter(filter_expression=None)
设置查询的筛选条件表达式。
- 参数: filter_expression (Optional [ Union [ str , FilterExpression ] ] , optional) – 过滤器 要在查询上使用的表达式或查询字符串。
- 引发:TypeError – 如果 filter_expression 不是有效的 FilterExpression 或字符串。
slop(slop)
最多允许 N 个中间的不匹配词 短语术语(0 表示确切的短语)。
- 参数: slop (int)
- 返回类型:Query
sort_by(field, asc=True)
将 sortby 字段添加到查询中。
- field - 要作为排序依据的字段的名称
- asc - 当 True 时,将按顺序进行排序
- 参数:
- 字段 (str)
- ASC (布尔值)
- 返回类型:Query
timeout(timeout)
覆盖模块的 timeout 参数
- 参数: timeout (float)
- 返回类型:Query
verbatim()
将 query 设置为 verbatim,即 use no query expansion 或词干提取。
- 返回类型:Query
with_payloads()
要求引擎返回文档有效负载。
- 返回类型:Query
with_scores()
要求引擎返回文档搜索分数。
- 返回类型:Query
property filter: str |
FilterExpression
查询的筛选条件表达式。
property params: Dict[str, Any]
返回查询的参数。
- 返回:查询的参数。
- 返回类型:Dict[str, 任意]
property query: BaseQuery
返回 self 作为查询对象。
VectorRangeQuery
class VectorRangeQuery(vector, vector_field_name, return_fields=None, filter_expression=None, dtype='float32', distance_threshold=0.2, num_results=10, return_score=True, dialect=2, sort_by=None, in_order=False)
基地:BaseVectorQuery
,BaseQuery
用于运行基于语义的筛选向量搜索的查询 距离阈值。
- 参数:
- vector (List [ float ]) - 用于执行范围查询的向量。
- vector_field_name (str) – 要搜索的向量字段的名称 针对。
- return_fields (List [ str ]) – 搜索时返回的声明字段 结果。
- filter_expression (Union [ str , FilterExpression ] , 可选) – 要应用的过滤器 以及范围查询。默认为 None。
- - 向量的 dtype。默认为 “float32” 的
- distance_threshold (str , float) - 向量距离的阈值。 阈值越小,表示语义搜索越严格。 默认值为 0.2。
- num_results (int) – 要返回的最大结果数。 默认值为 10。
- return_score (bool , optional) – 是否返回向量 距离。默认为 True。
- dialect (int , optional) – RediSearch 查询方言。 默认值为 2。
- sort_by (Optional [ str ]) – 对结果进行排序所依据的字段。违约 设置为 None。结果将按矢量距离排序。
- in_order (bool) – 要求字段中的术语具有 与 Query Filter 中的术语顺序相同,无论 它们之间的偏移量。默认为 False。
- 引发:TypeError – 如果 filter_expression 不是 redisvl.query.FilterExpression 类型
NOTE
了解有关向量范围查询的更多信息:https://redis.io/docs/interact/search-and-query/search/vectors/#range-query
dialect(dialect)
向查询中添加 dialect 字段。
- dialect - 在
- 参数: dialect (int)
- 返回类型:Query
expander(expander)
向查询添加扩展器字段。
- expander - 扩展器的名称
- 参数: expander (str)
- 返回类型:Query
in_order()
仅匹配查询词出现在 文档中的顺序相同。 即,对于查询 “Hello world”,我们不匹配 “world hello”
- 返回类型:Query
language(language)
将查询分析为使用指定语言。
- 参数: language (str) – 语言(例如中文或英文)
- 返回类型:Query
limit_fields(*fields)
将搜索限制为仅特定的 TEXT 字段。
- fields:字符串列表,区分大小写的字段名称
从定义的架构中。
- 参数: fields (List [ str ])
- 返回类型:Query
limit_ids(*ids)
将结果限制为一组特定的已知文档 任意长度的 id。
- 返回类型:Query
no_content()
将查询设置为仅返回 ids,而不返回文档内容。
- 返回类型:Query
no_stopwords()
防止筛选查询的非索引字。 仅在您确定包含的非常大的查询中有用 没有停用词。
- 返回类型:Query
paging(offset, num)
设置查询的分页 (默认为 0..10) 。
- offset:结果的分页偏移量。默认为 0
- num:我们想要多少个 result
- 参数:
- offset (int (整数))
- num (int (整数))
- 返回类型:Query
query_string()
仅返回此查询的查询字符串。
- 返回类型:str
return_fields(*fields)
添加字段以返回字段。
- 返回类型:Query
scorer(scorer)
使用不同的评分函数来评估文档相关性。 默认值为 TFIDF。
- 参数: scorer (str) – 要使用的评分函数 (例如 TFIDF.DOCNORM 或 BM25)
- 返回类型:Query
set_distance_threshold(distance_threshold)
设置查询的距离阈值。
- 参数: distance_threshold (float) – 向量距离
set_filter(filter_expression=None)
设置查询的筛选条件表达式。
- 参数: filter_expression (Optional [ Union [ str , FilterExpression ] ] , optional) – 过滤器 要在查询上使用的表达式或查询字符串。
- 引发:TypeError – 如果 filter_expression 不是有效的 FilterExpression 或字符串。
slop(slop)
最多允许 N 个中间的不匹配词 短语术语(0 表示确切的短语)。
- 参数: slop (int)
- 返回类型:Query
sort_by(field, asc=True)
将 sortby 字段添加到查询中。
- field - 要作为排序依据的字段的名称
- asc - 当 True 时,将按顺序进行排序
- 参数:
- 字段 (str)
- ASC (布尔值)
- 返回类型:Query
timeout(timeout)
覆盖模块的 timeout 参数
- 参数: timeout (float)
- 返回类型:Query
verbatim()
将 query 设置为 verbatim,即 use no query expansion 或词干提取。
- 返回类型:Query
with_payloads()
要求引擎返回文档有效负载。
- 返回类型:Query
with_scores()
要求引擎返回文档搜索分数。
- 返回类型:Query
property distance_threshold: float
返回查询的距离阈值。
- 返回:查询的距离阈值。
- 返回类型:float
property filter: str |
FilterExpression
查询的筛选条件表达式。
property params: Dict[str, Any]
返回查询的参数。
- 返回:查询的参数。
- 返回类型:Dict[str, 任意]
property query: BaseQuery
返回 self 作为查询对象。
FilterQuery
class FilterQuery(filter_expression=None, return_fields=None, num_results=10, dialect=2, sort_by=None, in_order=False, params=None)
基地:BaseQuery
用于使用筛选条件表达式运行筛选条件搜索的查询。
- 参数:
- filter_expression (Optional [ Union [ str , FilterExpression ] ]) – 可选筛选条件 expression 进行查询。默认为 '*'。
- return_fields (Optional [ List [ str ] ] , optional) – 要返回的字段。
- num_results (Optional [ int ] , optional) – 要返回的结果数。默认值为 10。
- dialect (int , optional) – 查询方言。默认值为 2。
- sort_by (Optional [ str ] , optional) – 对结果进行排序所依据的字段。默认为 None。
- in_order (bool , optional) – 要求字段中的术语与查询筛选条件中的术语具有相同的顺序。默认为 False。
- params (Optional [ Dict [ str , Any ] ] , optional) – 查询的参数。默认为 None。
- 引发:TypeError – 如果 filter_expression 不是 redisvl.query.FilterExpression 类型
dialect(dialect)
向查询中添加 dialect 字段。
- dialect - 在
- 参数: dialect (int)
- 返回类型:Query
expander(expander)
向查询添加扩展器字段。
- expander - 扩展器的名称
- 参数: expander (str)
- 返回类型:Query
in_order()
仅匹配查询词出现在 文档中的顺序相同。 即,对于查询 “Hello world”,我们不匹配 “world hello”
- 返回类型:Query
language(language)
将查询分析为使用指定语言。
- 参数: language (str) – 语言(例如中文或英文)
- 返回类型:Query
limit_fields(*fields)
将搜索限制为仅特定的 TEXT 字段。
- fields:字符串列表,区分大小写的字段名称
从定义的架构中。
- 参数: fields (List [ str ])
- 返回类型:Query
limit_ids(*ids)
将结果限制为一组特定的已知文档 任意长度的 id。
- 返回类型:Query
no_content()
将查询设置为仅返回 ids,而不返回文档内容。
- 返回类型:Query
no_stopwords()
防止筛选查询的非索引字。 仅在您确定包含的非常大的查询中有用 没有停用词。
- 返回类型:Query
paging(offset, num)
设置查询的分页 (默认为 0..10) 。
- offset:结果的分页偏移量。默认为 0
- num:我们想要多少个 result
- 参数:
- offset (int (整数))
- num (int (整数))
- 返回类型:Query
query_string()
仅返回此查询的查询字符串。
- 返回类型:str
return_fields(*fields)
添加字段以返回字段。
- 返回类型:Query
scorer(scorer)
使用不同的评分函数来评估文档相关性。 默认值为 TFIDF。
- 参数: scorer (str) – 要使用的评分函数 (例如 TFIDF.DOCNORM 或 BM25)
- 返回类型:Query
set_filter(filter_expression=None)
设置查询的筛选条件表达式。
- 参数: filter_expression (Optional [ Union [ str , FilterExpression ] ] , optional) – 过滤器 要在查询上使用的表达式或查询字符串。
- 引发:TypeError – 如果 filter_expression 不是有效的 FilterExpression 或字符串。
slop(slop)
最多允许 N 个中间的不匹配词 短语术语(0 表示确切的短语)。
- 参数: slop (int)
- 返回类型:Query
sort_by(field, asc=True)
将 sortby 字段添加到查询中。
- field - 要作为排序依据的字段的名称
- asc - 当 True 时,将按顺序进行排序
- 参数:
- 字段 (str)
- ASC (布尔值)
- 返回类型:Query
timeout(timeout)
覆盖模块的 timeout 参数
- 参数: timeout (float)
- 返回类型:Query
verbatim()
将 query 设置为 verbatim,即 use no query expansion 或词干提取。
- 返回类型:Query
with_payloads()
要求引擎返回文档有效负载。
- 返回类型:Query
with_scores()
要求引擎返回文档搜索分数。
- 返回类型:Query
property filter: str |
FilterExpression
查询的筛选条件表达式。
property params: Dict[str, Any]
返回查询参数。
property query: BaseQuery
返回 self 作为查询对象。
计数查询
class CountQuery(filter_expression=None, dialect=2, params=None)
基地:BaseQuery
对简单 count作的查询提供了一些筛选条件表达式。
- 参数:
- filter_expression (Optional [ Union [ str , FilterExpression ] ]) – 要查询的筛选条件表达式。默认为 None。
- params (Optional [ Dict [ str , Any ] ] , optional) – 查询的参数。默认为 None。
- 方言 (int)
- 引发:TypeError – 如果 filter_expression 不是 redisvl.query.FilterExpression 类型
from redisvl.query import CountQuery
from redisvl.query.filter import Tag
t = Tag("brand") == "Nike"
query = CountQuery(filter_expression=t)
count = index.query(query)
dialect(dialect)
dialect(dialect)
Add a dialect field to the query.
- dialect - dialect version to execute the query under
- Parameters:
dialect (int)
- Return type:
Query
expander(expander)
Add a expander field to the query.
- expander - the name of the expander
- Parameters:
expander (str)
- Return type:
Query
in_order()
Match only documents where the query terms appear in
the same order in the document.
i.e. for the query “hello world”, we do not match “world hello”
- Return type:
Query
language(language)
Analyze the query as being in the specified language.
- Parameters:
language (str) – The language (e.g. chinese or english)
- Return type:
Query
limit_fields(*fields)
Limit the search to specific TEXT fields only.
- fields: A list of strings, case sensitive field names
from the defined schema.
- Parameters:
fields (List [ str ])
- Return type:
Query
limit_ids(*ids)
Limit the results to a specific set of pre-known document
ids of any length.
- Return type:
Query
no_content()
Set the query to only return ids and not the document content.
- Return type:
Query
no_stopwords()
Prevent the query from being filtered for stopwords.
Only useful in very big queries that you are certain contain
no stopwords.
- Return type:
Query
paging(offset, num)
Set the paging for the query (defaults to 0..10).
- offset: Paging offset for the results. Defaults to 0
- num: How many results do we want
- Parameters:
- offset (int)
- num (int)
- Return type:
Query
query_string()
Return the query string of this query only.
- Return type:
str
return_fields(*fields)
Add fields to return fields.
- Return type:
Query
scorer(scorer)
Use a different scoring function to evaluate document relevance.
Default is TFIDF.
- Parameters:
scorer (str) – The scoring function to use
(e.g. TFIDF.DOCNORM or BM25)
- Return type:
Query
set_filter(filter_expression=None)
Set the filter expression for the query.
- Parameters:
filter_expression (Optional [ Union [ str , FilterExpression ] ] , optional) – The filter
expression or query string to use on the query.
- Raises:
TypeError – If filter_expression is not a valid FilterExpression or string.
slop(slop)
Allow a maximum of N intervening non matched terms between
phrase terms (0 means exact phrase).
- Parameters:
slop (int)
- Return type:
Query
sort_by(field, asc=True)
Add a sortby field to the query.
- field - the name of the field to sort by
- asc - when True, sorting will be done in asceding order
- Parameters:
- field (str)
- asc (bool)
- Return type:
Query
timeout(timeout)
overrides the timeout parameter of the module
- Parameters:
timeout (float)
- Return type:
Query
verbatim()
Set the query to be verbatim, i.e. use no query expansion
or stemming.
- Return type:
Query
with_payloads()
Ask the engine to return document payloads.
- Return type:
Query
with_scores()
Ask the engine to return document search scores.
- Return type:
Query
property filter: str |
FilterExpression
The filter expression for the query.
property params: Dict[str, Any]
Return the query parameters.
property query: BaseQuery
Return self as the query object.
On this page