查询

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

用于运行向量搜索的查询以及可选筛选器 表达。

  • 参数:
    • vectorList [ float ]) – 用于执行向量搜索的向量。
    • vector_field_namestr) – 要搜索的向量字段的名称 针对。
    • return_fieldsList [ str ]) – 搜索时返回的声明字段 结果。
    • filter_expressionUnion [ str FilterExpression ] 可选) – 要应用的过滤器 以及向量搜索。默认为 None。
    • - 向量 dtype。默认为 “float32” 的
    • num_resultsint optional) – 要从 向量搜索。默认值为 10。
    • return_scorebool optional) – 是否返回向量 距离。默认为 True。
    • dialectint optional) – RediSearch 查询方言。 默认值为 2。
    • sort_byOptional [ str ]) – 对结果进行排序所依据的字段。违约 设置为 None。结果将按矢量距离排序。
    • in_orderbool) – 要求字段中的术语具有 与 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 - 在
  • 参数: dialectint)
  • 返回类型:Query

expander(expander)

向查询添加扩展器字段。

  • expander - 扩展器的名称
  • 参数: expanderstr)
  • 返回类型:Query

in_order()

仅匹配查询词出现在 文档中的顺序相同。 即,对于查询 “Hello world”,我们不匹配 “world hello”

  • 返回类型:Query

language(language)

将查询分析为使用指定语言。

  • 参数: languagestr) – 语言(例如中文或英文)
  • 返回类型:Query

limit_fields(*fields)

将搜索限制为仅特定的 TEXT 字段。

  • fields:字符串列表,区分大小写的字段名称

从定义的架构中。

  • 参数: fieldsList [ str ])
  • 返回类型:Query

limit_ids(*ids)

将结果限制为一组特定的已知文档 任意长度的 id。

  • 返回类型:Query

no_content()

将查询设置为仅返回 ids,而不返回文档内容。

  • 返回类型:Query

no_stopwords()

防止筛选查询的非索引字。 仅在您确定包含的非常大的查询中有用 没有停用词。

  • 返回类型:Query

paging(offset, num)

设置查询的分页 (默认为 0..10) 。

  • offset:结果的分页偏移量。默认为 0
  • num:我们想要多少个 result
  • 参数:
    • offsetint (整数)
    • numint (整数)
  • 返回类型:Query

query_string()

仅返回此查询的查询字符串。

  • 返回类型:str

return_fields(*fields)

添加字段以返回字段。

  • 返回类型:Query

scorer(scorer)

使用不同的评分函数来评估文档相关性。 默认值为 TFIDF。

  • 参数: scorerstr) – 要使用的评分函数 (例如 TFIDF.DOCNORM 或 BM25)
  • 返回类型:Query

set_filter(filter_expression=None)

设置查询的筛选条件表达式。

  • 参数: filter_expressionOptional [ Union [ str FilterExpression ] ] optional) – 过滤器 要在查询上使用的表达式或查询字符串。
  • 引发:TypeError – 如果 filter_expression 不是有效的 FilterExpression 或字符串。

slop(slop)

最多允许 N 个中间的不匹配词 短语术语(0 表示确切的短语)。

  • 参数: slopint)
  • 返回类型:Query

sort_by(field, asc=True)

将 sortby 字段添加到查询中。

  • field - 要作为排序依据的字段的名称
  • asc - 当 True 时,将按顺序进行排序
  • 参数:
    • 字段str)
    • ASC布尔值)
  • 返回类型:Query

timeout(timeout)

覆盖模块的 timeout 参数

  • 参数: timeoutfloat)
  • 返回类型: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

用于运行基于语义的筛选向量搜索的查询 距离阈值。

  • 参数:
    • vectorList [ float ]) - 用于执行范围查询的向量。
    • vector_field_namestr) – 要搜索的向量字段的名称 针对。
    • return_fieldsList [ str ]) – 搜索时返回的声明字段 结果。
    • filter_expressionUnion [ str FilterExpression ] 可选) – 要应用的过滤器 以及范围查询。默认为 None。
    • - 向量 dtype。默认为 “float32” 的
    • distance_thresholdstr float) - 向量距离的阈值。 阈值越小,表示语义搜索越严格。 默认值为 0.2。
    • num_resultsint) – 要返回的最大结果数。 默认值为 10。
    • return_scorebool optional) – 是否返回向量 距离。默认为 True。
    • dialectint optional) – RediSearch 查询方言。 默认值为 2。
    • sort_byOptional [ str ]) – 对结果进行排序所依据的字段。违约 设置为 None。结果将按矢量距离排序。
    • in_orderbool) – 要求字段中的术语具有 与 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 - 在
  • 参数: dialectint)
  • 返回类型:Query

expander(expander)

向查询添加扩展器字段。

  • expander - 扩展器的名称
  • 参数: expanderstr)
  • 返回类型:Query

in_order()

仅匹配查询词出现在 文档中的顺序相同。 即,对于查询 “Hello world”,我们不匹配 “world hello”

  • 返回类型:Query

language(language)

将查询分析为使用指定语言。

  • 参数: languagestr) – 语言(例如中文或英文)
  • 返回类型:Query

limit_fields(*fields)

将搜索限制为仅特定的 TEXT 字段。

  • fields:字符串列表,区分大小写的字段名称

从定义的架构中。

  • 参数: fieldsList [ str ])
  • 返回类型:Query

limit_ids(*ids)

将结果限制为一组特定的已知文档 任意长度的 id。

  • 返回类型:Query

no_content()

将查询设置为仅返回 ids,而不返回文档内容。

  • 返回类型:Query

no_stopwords()

防止筛选查询的非索引字。 仅在您确定包含的非常大的查询中有用 没有停用词。

  • 返回类型:Query

paging(offset, num)

设置查询的分页 (默认为 0..10) 。

  • offset:结果的分页偏移量。默认为 0
  • num:我们想要多少个 result
  • 参数:
    • offsetint (整数)
    • numint (整数)
  • 返回类型:Query

query_string()

仅返回此查询的查询字符串。

  • 返回类型:str

return_fields(*fields)

添加字段以返回字段。

  • 返回类型:Query

scorer(scorer)

使用不同的评分函数来评估文档相关性。 默认值为 TFIDF。

  • 参数: scorerstr) – 要使用的评分函数 (例如 TFIDF.DOCNORM 或 BM25)
  • 返回类型:Query

set_distance_threshold(distance_threshold)

设置查询的距离阈值。

  • 参数: distance_thresholdfloat) – 向量距离

set_filter(filter_expression=None)

设置查询的筛选条件表达式。

  • 参数: filter_expressionOptional [ Union [ str FilterExpression ] ] optional) – 过滤器 要在查询上使用的表达式或查询字符串。
  • 引发:TypeError – 如果 filter_expression 不是有效的 FilterExpression 或字符串。

slop(slop)

最多允许 N 个中间的不匹配词 短语术语(0 表示确切的短语)。

  • 参数: slopint)
  • 返回类型:Query

sort_by(field, asc=True)

将 sortby 字段添加到查询中。

  • field - 要作为排序依据的字段的名称
  • asc - 当 True 时,将按顺序进行排序
  • 参数:
    • 字段str)
    • ASC布尔值)
  • 返回类型:Query

timeout(timeout)

覆盖模块的 timeout 参数

  • 参数: timeoutfloat)
  • 返回类型: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_expressionOptional [ Union [ str FilterExpression ] ]) – 可选筛选条件 expression 进行查询。默认为 '*'。
    • return_fieldsOptional [ List [ str ] ] optional) – 要返回的字段。
    • num_resultsOptional [ int ] optional) – 要返回的结果数。默认值为 10。
    • dialectint optional) – 查询方言。默认值为 2。
    • sort_byOptional [ str ] optional) – 对结果进行排序所依据的字段。默认为 None。
    • in_orderbool optional) – 要求字段中的术语与查询筛选条件中的术语具有相同的顺序。默认为 False。
    • paramsOptional [ Dict [ str Any ] ] optional) – 查询的参数。默认为 None。
  • 引发:TypeError – 如果 filter_expression 不是 redisvl.query.FilterExpression 类型

dialect(dialect)

向查询中添加 dialect 字段。

  • dialect - 在
  • 参数: dialectint)
  • 返回类型:Query

expander(expander)

向查询添加扩展器字段。

  • expander - 扩展器的名称
  • 参数: expanderstr)
  • 返回类型:Query

in_order()

仅匹配查询词出现在 文档中的顺序相同。 即,对于查询 “Hello world”,我们不匹配 “world hello”

  • 返回类型:Query

language(language)

将查询分析为使用指定语言。

  • 参数: languagestr) – 语言(例如中文或英文)
  • 返回类型:Query

limit_fields(*fields)

将搜索限制为仅特定的 TEXT 字段。

  • fields:字符串列表,区分大小写的字段名称

从定义的架构中。

  • 参数: fieldsList [ str ])
  • 返回类型:Query

limit_ids(*ids)

将结果限制为一组特定的已知文档 任意长度的 id。

  • 返回类型:Query

no_content()

将查询设置为仅返回 ids,而不返回文档内容。

  • 返回类型:Query

no_stopwords()

防止筛选查询的非索引字。 仅在您确定包含的非常大的查询中有用 没有停用词。

  • 返回类型:Query

paging(offset, num)

设置查询的分页 (默认为 0..10) 。

  • offset:结果的分页偏移量。默认为 0
  • num:我们想要多少个 result
  • 参数:
    • offsetint (整数)
    • numint (整数)
  • 返回类型:Query

query_string()

仅返回此查询的查询字符串。

  • 返回类型:str

return_fields(*fields)

添加字段以返回字段。

  • 返回类型:Query

scorer(scorer)

使用不同的评分函数来评估文档相关性。 默认值为 TFIDF。

  • 参数: scorerstr) – 要使用的评分函数 (例如 TFIDF.DOCNORM 或 BM25)
  • 返回类型:Query

set_filter(filter_expression=None)

设置查询的筛选条件表达式。

  • 参数: filter_expressionOptional [ Union [ str FilterExpression ] ] optional) – 过滤器 要在查询上使用的表达式或查询字符串。
  • 引发:TypeError – 如果 filter_expression 不是有效的 FilterExpression 或字符串。

slop(slop)

最多允许 N 个中间的不匹配词 短语术语(0 表示确切的短语)。

  • 参数: slopint)
  • 返回类型:Query

sort_by(field, asc=True)

将 sortby 字段添加到查询中。

  • field - 要作为排序依据的字段的名称
  • asc - 当 True 时,将按顺序进行排序
  • 参数:
    • 字段str)
    • ASC布尔值)
  • 返回类型:Query

timeout(timeout)

覆盖模块的 timeout 参数

  • 参数: timeoutfloat)
  • 返回类型: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_expressionOptional [ Union [ str FilterExpression ] ]) – 要查询的筛选条件表达式。默认为 None。
    • paramsOptional [ 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)

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.