查询
RedisVL 中的查询类提供了一种结构化方式来定义针对不同用例的简单或复杂查询。每个查询类都封装了 redis-py
的 Query 模块 https://github.com/redis/redis-py/blob/master/redis/commands/search/query.py,并扩展了功能以方便使用。
VectorQuery
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, hybrid_policy=None, batch_size=None, normalize_vector_distance=False)
Bases: BaseVectorQuery
, BaseQuery
用于执行向量搜索以及可选筛选表达式的查询。
- 参数
- vector (List [ float ]) – 用于执行向量搜索的向量。
- vector_field_name (str) – 在数据库中用于搜索的向量字段的名称。
- return_fields (List [ str ]) – 随搜索结果返回的声明字段。
- filter_expression (Union [ str , FilterExpression ] , optional) – 与向量搜索一起应用的筛选器。默认为 None。
- dtype (str , optional) – 向量的数据类型(dtype)。默认为“float32”。
- num_results (int , optional) – 从向量搜索中返回的前 k 个结果。默认为 10。
- return_score (bool , optional) – 是否返回向量距离。默认为 True。
- dialect (int , optional) – RediSearch 查询方言(dialect)。默认为 2。
- sort_by (Optional [ str ]) – 用于排序结果的字段。默认为 None。结果将按向量距离排序。
- in_order (bool) – 要求字段中的术语与查询筛选器中的术语顺序相同,无论它们之间的偏移量如何。默认为 False。
- hybrid_policy (Optional [ str ]) – 控制在向量搜索期间如何应用筛选器。选项包括“BATCHES”(通过小批量最近邻居分页)或“ADHOC_BF”(计算所有通过筛选器的向量的分数)。对于带有选择性筛选器的查询,“BATCHES”模式通常更快。当筛选器匹配数据集的大部分时,“ADHOC_BF”模式更好。默认为 None,这将允许 Redis 自动选择最优策略。
- batch_size (Optional [ int ]) – 当 hybrid_policy 为“BATCHES”时,控制每个批次获取的向量数量。较大的值可能会提高性能,但会增加内存使用。仅当 hybrid_policy=”BATCHES” 时适用。默认为 None,这将允许 Redis 自动选择合适的批次大小。
- normalize_vector_distance (bool) – Redis 支持 3 种距离度量:L2(欧氏距离)、IP(内积)和 COSINE(余弦距离)。默认情况下,L2 距离返回一个无界值。COSINE 距离返回介于 0 和 2 之间的值。IP 返回一个由向量幅度决定的值。将此标志设置为 true 会将 COSINE 和 L2 距离转换为介于 0 和 1 之间的相似度分数。注意:为 IP 设置此标志为 true 将抛出警告,因为根据定义,COSINE 相似度是归一化的 IP。
- Raises: TypeError – 如果 filter_expression 不是 redisvl.query.FilterExpression 类型,则抛出此异常。
注意
了解有关 Redis 中向量查询的更多信息:https://redis.ac.cn/docs/interact/search-and-query/search/vectors/#knn-search
dialect(dialect)
向查询中添加方言(dialect)字段。
- dialect - 执行查询时使用的方言版本
- Parameters: dialect (int)
- Return type: Query
expander(expander)
向查询中添加 expander 字段。
- expander - expander 的名称
- Parameters: expander (str)
- Return type: Query
in_order()
只匹配文档中查询术语按相同顺序出现的文档。例如,对于查询“hello world”,我们不匹配“world hello”。
- Return type: Query
language(language)
将查询按指定语言进行分析。
- Parameters: language (str) – 语言(例如 chinese 或 english)
- Return type: Query
limit_fields(*fields)
仅将搜索限制在特定的 TEXT 字段。
- fields: 字符串列表,区分大小写的字段名称
来自定义的模式。
- Parameters: fields (List [ str ])
- Return type: Query
limit_ids(*ids)
将结果限制在一组特定的预知文档 ID 中,任何长度均可。
- Return type: Query
no_content()
将查询设置为仅返回 ID 而不返回文档内容。
- Return type: Query
no_stopwords()
阻止查询按停用词进行筛选。仅在您确定不包含停用词的非常大的查询中有用。
- Return type: Query
paging(offset, num)
设置查询的分页(默认为 0..10)。
- offset: 结果的分页偏移量。默认为 0
- num: 需要返回多少结果
- 参数
- offset (int)
- num (int)
- Return type: Query
query_string()
仅返回此查询的查询字符串。
- Return type: str
return_fields(*fields)
添加字段到返回字段列表中。
- Return type: Query
scorer(scorer)
使用不同的评分函数来评估文档相关性。默认为 TFIDF。
- Parameters: scorer (str) – 要使用的评分函数(例如 TFIDF.DOCNORM 或 BM25)
- Return type: Query
set_batch_size(batch_size)
设置查询的批次大小。
- Parameters: batch_size (int) – hybrid_policy 为“BATCHES”时使用的批次大小。
- Raises
- TypeError – 如果 batch_size 不是整数,则抛出此异常。
- ValueError – 如果 batch_size 不是正数,则抛出此异常。
set_filter(filter_expression=None)
设置查询的筛选表达式。
- Parameters: filter_expression (Optional [ Union [ str , FilterExpression ] ] , optional) – 在查询上使用的筛选表达式或查询字符串。
- Raises: TypeError – 如果 filter_expression 不是有效的 FilterExpression 或字符串,则抛出此异常。
set_hybrid_policy(hybrid_policy)
设置查询的混合策略(hybrid policy)。
- Parameters: hybrid_policy (str) – 要使用的混合策略。选项包括“BATCHES”或“ADHOC_BF”。
- Raises: ValueError – 如果 hybrid_policy 不是有效选项之一,则抛出此异常。
slop(slop)
允许短语术语之间最多有 N 个未匹配的中间术语(0 表示精确短语匹配)。
- Parameters: slop (int)
- Return type: Query
sort_by(field, asc=True)
向查询中添加 sortby 字段。
- field - 用于排序的字段名称
- asc - 当为 True 时,将按升序排序
- 参数
- field (str)
- asc (bool)
- Return type: Query
timeout(timeout)
覆盖模块的超时参数
- Parameters: timeout (float)
- Return type: Query
verbatim()
将查询设置为逐字匹配,即不使用查询扩展或词干提取。
- Return type: Query
with_payloads()
要求引擎返回文档负载(payloads)。
- Return type: Query
with_scores()
要求引擎返回文档搜索分数。
- Return type: Query
property batch_size: int | None
返回查询的批次大小。
- Returns: 查询的批次大小。
- Return type: Optional[int]
property filter: str |
FilterExpression
查询的筛选表达式。
property hybrid_policy: str | None
返回查询的混合策略。
- Returns: 查询的混合策略。
- Return type: Optional[str]
property params: Dict[str, Any]
返回查询的参数。
- Returns: 查询的参数。
- Return type: Dict[str, Any]
property query: BaseQuery
将 self 作为查询对象返回。
VectorRangeQuery
class VectorRangeQuery(vector, vector_field_name, return_fields=None, filter_expression=None, dtype='float32', distance_threshold=0.2, epsilon=None, num_results=10, return_score=True, dialect=2, sort_by=None, in_order=False, hybrid_policy=None, batch_size=None, normalize_vector_distance=False)
Bases: BaseVectorQuery
, BaseQuery
用于基于语义距离阈值运行筛选向量搜索的查询。
- 参数
- vector (List [ float ]) – 用于执行范围查询的向量。
- vector_field_name (str) – 在数据库中用于搜索的向量字段的名称。
- return_fields (List [ str ]) – 随搜索结果返回的声明字段。
- filter_expression (Union [ str , FilterExpression ] , optional) – 与范围查询一起应用的筛选器。默认为 None。
- dtype (str , optional) – 向量的数据类型(dtype)。默认为“float32”。
- distance_threshold (float) – 向量距离的阈值。较小的阈值表示更严格的语义搜索。默认为 0.2。
- epsilon (Optional [ float ]) – 向量范围查询的相对因子,用于设置候选对象在 radius * (1 + epsilon) 范围内的边界。这控制了搜索超出指定半径的广度。较高的值会提高召回率,但会牺牲性能。默认为 None,这将使用索引定义的 epsilon(通常为 0.01)。
- num_results (int) – 返回结果的最大数量。默认为 10。
- return_score (bool , optional) – 是否返回向量距离。默认为 True。
- dialect (int , optional) – RediSearch 查询方言(dialect)。默认为 2。
- sort_by (Optional [ str ]) – 用于排序结果的字段。默认为 None。结果将按向量距离排序。
- in_order (bool) – 要求字段中的术语与查询筛选器中的术语顺序相同,无论它们之间的偏移量如何。默认为 False。
- hybrid_policy (Optional [ str ]) – 控制在向量搜索期间如何应用筛选器。选项包括“BATCHES”(通过小批量最近邻居分页)或“ADHOC_BF”(计算所有通过筛选器的向量的分数)。对于带有选择性筛选器的查询,“BATCHES”模式通常更快。当筛选器匹配数据集的大部分时,“ADHOC_BF”模式更好。默认为 None,这将允许 Redis 自动选择最优策略。
- batch_size (Optional [ int ]) – 当 hybrid_policy 为“BATCHES”时,控制每个批次获取的向量数量。较大的值可能会提高性能,但会增加内存使用。仅当 hybrid_policy=”BATCHES” 时适用。默认为 None,这将允许 Redis 自动选择合适的批次大小。
- normalize_vector_distance (bool) – Redis 支持 3 种距离度量:L2(欧氏距离)、IP(内积)和 COSINE(余弦距离)。默认情况下,L2 距离返回一个无界值。COSINE 距离返回介于 0 和 2 之间的值。IP 返回一个由向量幅度决定的值。将此标志设置为 true 会将 COSINE 和 L2 距离转换为介于 0 和 1 之间的相似度分数。注意:为 IP 设置此标志为 true 将抛出警告,因为根据定义,COSINE 相似度是归一化的 IP。
- Raises: TypeError – 如果 filter_expression 不是 redisvl.query.FilterExpression 类型,则抛出此异常。
注意
了解有关向量范围查询的更多信息:https://redis.ac.cn/docs/interact/search-and-query/search/vectors/#range-query
dialect(dialect)
向查询中添加方言(dialect)字段。
- dialect - 执行查询时使用的方言版本
- Parameters: dialect (int)
- Return type: Query
expander(expander)
向查询中添加 expander 字段。
- expander - expander 的名称
- Parameters: expander (str)
- Return type: Query
in_order()
只匹配文档中查询术语按相同顺序出现的文档。例如,对于查询“hello world”,我们不匹配“world hello”。
- Return type: Query
language(language)
将查询按指定语言进行分析。
- Parameters: language (str) – 语言(例如 chinese 或 english)
- Return type: Query
limit_fields(*fields)
仅将搜索限制在特定的 TEXT 字段。
- fields: 字符串列表,区分大小写的字段名称
来自定义的模式。
- Parameters: fields (List [ str ])
- Return type: Query
limit_ids(*ids)
将结果限制在一组特定的预知文档 ID 中,任何长度均可。
- Return type: Query
no_content()
将查询设置为仅返回 ID 而不返回文档内容。
- Return type: Query
no_stopwords()
阻止查询按停用词进行筛选。仅在您确定不包含停用词的非常大的查询中有用。
- Return type: Query
paging(offset, num)
设置查询的分页(默认为 0..10)。
- offset: 结果的分页偏移量。默认为 0
- num: 需要返回多少结果
- 参数
- offset (int)
- num (int)
- Return type: Query
query_string()
仅返回此查询的查询字符串。
- Return type: str
return_fields(*fields)
添加字段到返回字段列表中。
- Return type: Query
scorer(scorer)
使用不同的评分函数来评估文档相关性。默认为 TFIDF。
- Parameters: scorer (str) – 要使用的评分函数(例如 TFIDF.DOCNORM 或 BM25)
- Return type: Query
set_batch_size(batch_size)
设置查询的批次大小。
- Parameters: batch_size (int) – hybrid_policy 为“BATCHES”时使用的批次大小。
- Raises
- TypeError – 如果 batch_size 不是整数,则抛出此异常。
- ValueError – 如果 batch_size 不是正数,则抛出此异常。
set_distance_threshold(distance_threshold)
设置查询的距离阈值。
- Parameters: distance_threshold (float) – 向量距离阈值。
- Raises
- TypeError – 如果 distance_threshold 不是浮点数或整数,则抛出此异常。
- ValueError – 如果 distance_threshold 是负数,则抛出此异常。
set_epsilon(epsilon)
设置范围查询的 epsilon 参数。
- Parameters: epsilon (float) – 向量范围查询的相对因子,用于设置候选对象在 radius * (1 + epsilon) 范围内的边界。
- Raises
- TypeError – 如果 epsilon 不是浮点数或整数,则抛出此异常。
- ValueError – 如果 epsilon 是负数,则抛出此异常。
set_filter(filter_expression=None)
设置查询的筛选表达式。
- Parameters: filter_expression (Optional [ Union [ str , FilterExpression ] ] , optional) – 在查询上使用的筛选表达式或查询字符串。
- Raises: TypeError – 如果 filter_expression 不是有效的 FilterExpression 或字符串,则抛出此异常。
set_hybrid_policy(hybrid_policy)
设置查询的混合策略(hybrid policy)。
- Parameters: hybrid_policy (str) – 要使用的混合策略。选项包括“BATCHES”或“ADHOC_BF”。
- Raises: ValueError – 如果 hybrid_policy 不是有效选项之一,则抛出此异常。
slop(slop)
允许短语术语之间最多有 N 个未匹配的中间术语(0 表示精确短语匹配)。
- Parameters: slop (int)
- Return type: Query
sort_by(field, asc=True)
向查询中添加 sortby 字段。
- field - 用于排序的字段名称
- asc - 当为 True 时,将按升序排序
- 参数
- field (str)
- asc (bool)
- Return type: Query
timeout(timeout)
覆盖模块的超时参数
- Parameters: timeout (float)
- Return type: Query
verbatim()
将查询设置为逐字匹配,即不使用查询扩展或词干提取。
- Return type: Query
with_payloads()
要求引擎返回文档负载(payloads)。
- Return type: Query
with_scores()
要求引擎返回文档搜索分数。
- Return type: Query
property batch_size: int | None
返回查询的批次大小。
- Returns: 查询的批次大小。
- Return type: Optional[int]
property distance_threshold: float
返回查询的距离阈值。
- Returns: 查询的距离阈值。
- Return type: float
property epsilon: float | None
返回查询的 epsilon。
- Returns: 查询的 epsilon,如果未设置则为 None。
- Return type: Optional[float]
property filter: str |
FilterExpression
查询的筛选表达式。
property hybrid_policy: str | None
返回查询的混合策略。
- Returns: 查询的混合策略。
- Return type: Optional[str]
property params: Dict[str, Any]
返回查询的参数。
- Returns: 查询的参数。
- Return type: Dict[str, Any]
property query: BaseQuery
将 self 作为查询对象返回。
HybridQuery
class HybridQuery(text, text_field_name, vector, vector_field_name, text_scorer='BM25STD', filter_expression=None, alpha=0.7, dtype='float32', num_results=10, return_fields=None, stopwords='english', dialect=2)
Bases: AggregationQuery
HybridQuery 在 Redis 中结合了文本搜索和向量搜索。它允许您使用文本和向量相似性执行混合搜索。它根据文本和向量相似性的加权组合对文档进行评分。
from redisvl.query import HybridQuery
from redisvl.index import SearchIndex
index = SearchIndex.from_yaml("path/to/index.yaml")
query = HybridQuery(
text="example text",
text_field_name="text_field",
vector=[0.1, 0.2, 0.3],
vector_field_name="vector_field",
text_scorer="BM25STD",
filter_expression=None,
alpha=0.7,
dtype="float32",
num_results=10,
return_fields=["field1", "field2"],
stopwords="english",
dialect=2,
)
results = index.query(query)
实例化一个 HybridQuery 对象。
- 参数
- text (str) – 用于搜索的文本。
- text_field_name (str) – 用于搜索的文本字段名称。
- vector (Union [ bytes , List [ float ] ]) – 用于执行向量相似性搜索的向量。
- vector_field_name (str) – 用于搜索的向量字段名称。
- text_scorer (str , optional) – 要使用的文本评分器。选项包括 {TFIDF, TFIDF.DOCNORM, BM25, DISMAX, DOCSCORE, BM25STD}。默认为“BM25STD”。
- filter_expression (Optional [FilterExpression ] , optional) – 要使用的筛选表达式。默认为 None。
- alpha (float , optional) – 向量相似度的权重。文档将按以下公式评分:hybrid_score = (alpha) * vector_score + (1-alpha) * text_score。默认为 0.7。
- dtype (str , optional) – 向量的数据类型(dtype)。默认为“float32”。
- num_results (int , optional) – 返回结果的数量。默认为 10。
- return_fields (Optional [ List [ str ] ] , optional) – 要返回的字段。默认为 None。
- stopwords (Optional [ Union [ str , Set [ str ] ] ] , optional) – 在搜索之前从提供的文本中移除的停用词。如果提供“english”、“german”等字符串,则将使用该语言的默认停用词集。如果提供字符串列表、集合或元组,则将使用这些作为停用词。默认为“english”。如果设置为“None”,则不移除任何停用词。
- dialect (int , optional) – Redis 方言版本。默认为 2。
- Raises
- ValueError – 如果文本字符串为空,或者在移除停用词后文本字符串变为空,则抛出此异常。
- TypeError – 如果停用词不是字符串集合、列表或元组,则抛出此异常。
add_scores()
如果设置,则将分数作为行的普通字段包含在内。
- Return type: AggregateRequest
apply(**kwexpr)
指定一个或多个投影表达式添加到每个结果中
参数
-
- kwexpr: 一个或多个投影的键值对。键是
- 投影的别名,值是投影表达式本身,例如 apply(square_root=”sqrt(@foo)”)
- Return type: AggregateRequest
dialect(dialect)
向聚合命令添加方言字段。
- dialect - 执行查询时使用的方言版本
- Parameters: dialect (int)
- Return type: AggregateRequest
filter(expressions)
使用与结果集中值相关的谓词指定查询后结果的筛选器。
参数
-
- fields: 用于分组的字段。这可以是单个字符串,
- 或字符串列表。
- Parameters: expressions (str | List [ str ])
- Return type: AggregateRequest
group_by(fields, *reducers)
指定按哪些字段对聚合进行分组。
参数
-
- fields: 用于分组的字段。这可以是单个字符串,
- 或字符串列表。两种情况下,字段都应指定为 @field。
-
- reducers: 一个或多个 reducer。Reducer 可在
- 聚合模块中找到。
- 参数
- fields (List [ str ])
- reducers (Reducer | List [ Reducer ])
- Return type: AggregateRequest
limit(offset, num)
设置最近分组或查询的限制。
如果尚未定义分组(通过 group_by()),则这会设置查询初始结果池的限制。否则,这将限制前一个分组操作的项目数量。
在对大型数据集的样本执行聚合时,对初始搜索结果设置限制可能很有用。
参数
- offset: 开始分页的结果偏移量
- num: 要返回的结果数量
对初始结果排序的示例
AggregateRequest("@sale_amount:[10000, inf]") .limit(0, 10) .group_by("@state", r.count())
将仅按查询 @sale_amount:[10000, inf] 的前 10 个结果中找到的状态进行分组。另一方面,
AggregateRequest("@sale_amount:[10000, inf]") .limit(0, 1000) .group_by("@state", r.count() .limit(0, 10)
将对匹配查询的所有结果进行分组,但仅返回前 10 个分组。
如果您只想返回 top-N 样式的查询,请考虑改用 sort_by()。
- 参数
- offset (int)
- num (int)
- Return type: AggregateRequest
load(*fields)
指示响应中要返回的字段。这些字段在任何隐式指定的字段之外返回。
参数
- fields: 如果未指定字段,则加载所有字段。
否则,字段应以 @field 的格式给出。
- Parameters: fields (List [ str ])
- Return type: AggregateRequest
scorer(scorer)
使用不同的评分函数来评估文档相关性。默认为 TFIDF。
- Parameters: scorer (str) – 要使用的评分函数(例如 TFIDF.DOCNORM 或 BM25)
- Return type: AggregateRequest
sort_by(*fields, **kwargs)
指示结果应如何排序。这也可以用于 top-N 样式的查询
参数
-
- fields: 用于排序的字段。这可以是单个
- 字段或字段列表。如果需要指定排序顺序,可以使用 Asc 或 Desc 包装类。
-
- max: 要返回的最大结果数量。这可以
- 代替 LIMIT 使用,并且速度也更快。
按 foo 升序和按 bar 降序排序的示例
sort_by(Asc("@foo"), Desc("@bar"))
返回前 10 位客户
AggregateRequest() .group_by("@customer", r.sum("@paid").alias(FIELDNAME)) .sort_by(Desc("@paid"), max=10)
- Parameters: fields (List [ str ])
- Return type: AggregateRequest
with_schema()
如果设置,schema 属性将包含结果对象中的 [field, type] 条目列表。
- Return type: AggregateRequest
property params: Dict[str, Any]
返回聚合的参数。
- Returns: 聚合的参数。
- Return type: Dict[str, Any]
property stopwords: Set[str]
返回查询中使用的停用词。:returns: 查询中使用的停用词。:rtype: Set[str]
TextQuery
class TextQuery(text, text_field_name, text_scorer='BM25STD', filter_expression=None, return_fields=None, num_results=10, return_score=True, dialect=2, sort_by=None, in_order=False, params=None, stopwords='english')
Bases: BaseQuery
TextQuery 是用于执行全文搜索以及可选筛选表达式的查询。
from redisvl.query import TextQuery
from redisvl.index import SearchIndex
index = SearchIndex.from_yaml(index.yaml)
query = TextQuery(
text="example text",
text_field_name="text_field",
text_scorer="BM25STD",
filter_expression=None,
num_results=10,
return_fields=["field1", "field2"],
stopwords="english",
dialect=2,
)
results = index.query(query)
用于执行全文搜索以及可选筛选表达式的查询。
- 参数
- text (str) – 用于执行文本搜索的文本字符串。
- text_field_name (str) – 用于执行文本搜索的文档字段名称。
- text_scorer (str , optional) – 要使用的文本评分算法。默认为 BM25STD。选项包括 {TFIDF, BM25STD, BM25, TFIDF.DOCNORM, DISMAX, DOCSCORE}。请参阅 https://redis.ac.cn/docs/latest/develop/interact/search-and-query/advanced-concepts/scoring/
- filter_expression (Union [ str , FilterExpression ] , optional) – 与文本搜索一起应用的筛选器。默认为 None。
- return_fields (List [ str ]) – 随搜索结果返回的声明字段。
- num_results (int , optional) – 从搜索中返回的前 k 个结果。默认为 10。
- return_score (bool , optional) – 是否返回文本分数。默认为 True。
- dialect (int , optional) – RediSearch 查询方言(dialect)。默认为 2。
- sort_by (Optional [ str ]) – 用于排序结果的字段。默认为 None。结果将按文本分数排序。
- in_order (bool) – 要求字段中的术语与查询筛选器中的术语顺序相同,无论它们之间的偏移量如何。默认为 False。
- params (Optional [ Dict [ str , Any ] ] , optional) – 查询的参数。默认为 None。
- stopwords (Optional [ Union [ str , Set [ str ] ]) – 要从查询文本中移除的停用词集。如果提供‘english’或‘spanish’等语言,将使用该语言的默认停用词集。用户可以通过提供单词列表或集合来指定自己的停用词。如果设置为 None,则不会移除任何单词。默认为‘english’。
- Raises
- ValueError – 如果无法加载停用词语言字符串,则抛出此异常。
- TypeError – 如果停用词不是有效的可迭代字符串集,则抛出此异常。
dialect(dialect)
向查询中添加方言(dialect)字段。
- dialect - 执行查询时使用的方言版本
- Parameters: dialect (int)
- Return type: Query
expander(expander)
向查询中添加 expander 字段。
- expander - expander 的名称
- Parameters: expander (str)
- Return type: Query
in_order()
只匹配文档中查询术语按相同顺序出现的文档。例如,对于查询“hello world”,我们不匹配“world hello”。
- Return type: Query
language(language)
将查询按指定语言进行分析。
- Parameters: language (str) – 语言(例如 chinese 或 english)
- Return type: Query
limit_fields(*fields)
仅将搜索限制在特定的 TEXT 字段。
- fields: 字符串列表,区分大小写的字段名称
来自定义的模式。
- Parameters: fields (List [ str ])
- Return type: Query
limit_ids(*ids)
将结果限制在一组特定的预知文档 ID 中,任何长度均可。
- Return type: Query
no_content()
将查询设置为仅返回 ID 而不返回文档内容。
- Return type: Query
no_stopwords()
阻止查询按停用词进行筛选。仅在您确定不包含停用词的非常大的查询中有用。
- Return type: Query
paging(offset, num)
设置查询的分页(默认为 0..10)。
- offset: 结果的分页偏移量。默认为 0
- num: 需要返回多少结果
- 参数
- offset (int)
- num (int)
- Return type: Query
query_string()
仅返回此查询的查询字符串。
- Return type: str
return_fields(*fields)
添加字段到返回字段列表中。
- Return type: Query
scorer(scorer)
使用不同的评分函数来评估文档相关性。默认为 TFIDF。
- Parameters: scorer (str) – 要使用的评分函数(例如 TFIDF.DOCNORM 或 BM25)
- Return type: Query
set_filter(filter_expression=None)
设置查询的筛选表达式。
- Parameters: filter_expression (Optional [ Union [ str , FilterExpression ] ] , optional) – 在查询上使用的筛选表达式或查询字符串。
- Raises: TypeError – 如果 filter_expression 不是有效的 FilterExpression 或字符串,则抛出此异常。
slop(slop)
允许短语术语之间最多有 N 个未匹配的中间术语(0 表示精确短语匹配)。
- Parameters: slop (int)
- Return type: Query
sort_by(field, asc=True)
向查询中添加 sortby 字段。
- field - 用于排序的字段名称
- asc - 当为 True 时,将按升序排序
- 参数
- field (str)
- asc (bool)
- Return type: Query
timeout(timeout)
覆盖模块的超时参数
- Parameters: timeout (float)
- Return type: Query
verbatim()
将查询设置为逐字匹配,即不使用查询扩展或词干提取。
- Return type: Query
with_payloads()
要求引擎返回文档负载(payloads)。
- Return type: Query
with_scores()
要求引擎返回文档搜索分数。
- Return type: Query
property filter: str |
FilterExpression
查询的筛选表达式。
property params: Dict[str, Any]
返回查询参数。
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)
Bases: BaseQuery
用于使用筛选表达式运行筛选搜索的查询。
- 参数
- filter_expression (Optional [ Union [ str , FilterExpression ] ]) – 可选的筛选表达式,用于查询。默认为‘*’。
- 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。
- Raises: TypeError – 如果 filter_expression 不是 redisvl.query.FilterExpression 类型,则抛出此异常。
dialect(dialect)
向查询中添加方言(dialect)字段。
- dialect - 执行查询时使用的方言版本
- Parameters: dialect (int)
- Return type: Query
expander(expander)
向查询中添加 expander 字段。
- expander - expander 的名称
- Parameters: expander (str)
- Return type: Query
in_order()
只匹配文档中查询术语按相同顺序出现的文档。例如,对于查询“hello world”,我们不匹配“world hello”。
- Return type: Query
language(language)
将查询按指定语言进行分析。
- Parameters: language (str) – 语言(例如 chinese 或 english)
- Return type: Query
limit_fields(*fields)
仅将搜索限制在特定的 TEXT 字段。
- fields: 字符串列表,区分大小写的字段名称
来自定义的模式。
- Parameters: fields (List [ str ])
- Return type: Query
limit_ids(*ids)
将结果限制在一组特定的预知文档 ID 中,任何长度均可。
- Return type: Query
no_content()
将查询设置为仅返回 ID 而不返回文档内容。
- Return type: Query
no_stopwords()
阻止查询按停用词进行筛选。仅在您确定不包含停用词的非常大的查询中有用。
- Return type: Query
paging(offset, num)
设置查询的分页(默认为 0..10)。
- offset: 结果的分页偏移量。默认为 0
- num: 需要返回多少结果
- 参数
- offset (int)
- num (int)
- Return type: Query
query_string()
仅返回此查询的查询字符串。
- Return type: str
return_fields(*fields)
添加字段到返回字段列表中。
- Return type: Query
scorer(scorer)
使用不同的评分函数来评估文档相关性。默认为 TFIDF。
- Parameters: scorer (str) – 要使用的评分函数(例如 TFIDF.DOCNORM 或 BM25)
- Return type: Query
set_filter(filter_expression=None)
设置查询的筛选表达式。
- Parameters: filter_expression (Optional [ Union [ str , FilterExpression ] ] , optional) – 在查询上使用的筛选表达式或查询字符串。
- Raises: TypeError – 如果 filter_expression 不是有效的 FilterExpression 或字符串,则抛出此异常。
slop(slop)
允许短语术语之间最多有 N 个未匹配的中间术语(0 表示精确短语匹配)。
- Parameters: slop (int)
- Return type: Query
sort_by(field, asc=True)
向查询中添加 sortby 字段。
- field - 用于排序的字段名称
- asc - 当为 True 时,将按升序排序
- 参数
- field (str)
- asc (bool)
- Return type: Query
timeout(timeout)
覆盖模块的超时参数
- Parameters: timeout (float)
- Return type: Query
verbatim()
将查询设置为逐字匹配,即不使用查询扩展或词干提取。
- Return type: Query
with_payloads()
要求引擎返回文档负载(payloads)。
- Return type: Query
with_scores()
要求引擎返回文档搜索分数。
- Return type: Query
property filter: str |
FilterExpression
查询的筛选表达式。
property params: Dict[str, Any]
返回查询参数。
property query: BaseQuery
将 self 作为查询对象返回。
CountQuery
class CountQuery(filter_expression=None, dialect=2, params=None)
Bases: BaseQuery
一个简单的计数操作查询,提供了一些筛选表达式。
- 参数
- filter_expression (Optional [ Union [ str , FilterExpression ] ]) – 用于查询的筛选表达式。默认为 None。
- params (Optional [ Dict [ str , Any ] ] , optional) – 查询的参数。默认为 None。
- dialect (int)
- Raises: 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 - 执行查询时使用的方言版本
- Parameters: dialect (int)
- Return type: Query
expander(expander)
向查询中添加 expander 字段。
- expander - expander 的名称
- Parameters: expander (str)
- Return type: Query
in_order()
只匹配文档中查询术语按相同顺序出现的文档。例如,对于查询“hello world”,我们不匹配“world hello”。
- Return type: Query
language(language)
将查询按指定语言进行分析。
- Parameters: language (str) – 语言(例如 chinese 或 english)
- Return type: Query
limit_fields(*fields)
仅将搜索限制在特定的 TEXT 字段。
- fields: 字符串列表,区分大小写的字段名称
来自定义的模式。
- Parameters: fields (List [ str ])
- Return type: Query
limit_ids(*ids)
将结果限制在一组特定的预知文档 ID 中,任何长度均可。
- Return type: Query
no_content()
将查询设置为仅返回 ID 而不返回文档内容。
- Return type: Query
no_stopwords()
阻止查询按停用词进行筛选。仅在您确定不包含停用词的非常大的查询中有用。
- Return type: Query
paging(offset, num)
设置查询的分页(默认为 0..10)。
- offset: 结果的分页偏移量。默认为 0
- num: 需要返回多少结果
- 参数
- offset (int)
- num (int)
- Return type: Query
query_string()
仅返回此查询的查询字符串。
- Return type: str
return_fields(*fields)
添加字段到返回字段列表中。
- Return type: Query
scorer(scorer)
使用不同的评分函数来评估文档相关性。默认为 TFIDF。
- Parameters: scorer (str) – 要使用的评分函数(例如 TFIDF.DOCNORM 或 BM25)
- Return type: Query
set_filter(filter_expression=None)
设置查询的筛选表达式。
- Parameters: filter_expression (Optional [ Union [ str , FilterExpression ] ] , optional) – 在查询上使用的筛选表达式或查询字符串。
- Raises: TypeError – 如果 filter_expression 不是有效的 FilterExpression 或字符串,则抛出此异常。
slop(slop)
允许短语术语之间最多有 N 个未匹配的中间术语(0 表示精确短语匹配)。
- Parameters: slop (int)
- Return type: Query
sort_by(field, asc=True)
向查询中添加 sortby 字段。
- field - 用于排序的字段名称
- asc - 当为 True 时,将按升序排序
- 参数
- field (str)
- asc (bool)
- Return type: Query
timeout(timeout)
覆盖模块的超时参数
- Parameters: timeout (float)
- Return type: Query
verbatim()
将查询设置为逐字匹配,即不使用查询扩展或词干提取。
- Return type: Query
with_payloads()
要求引擎返回文档负载(payloads)。
- Return type: Query
with_scores()
要求引擎返回文档搜索分数。
- Return type: Query
property filter: str |
FilterExpression
查询的筛选表达式。
property params: Dict[str, Any]
返回查询参数。
property query: BaseQuery
将 self 作为查询对象返回。