文档API 参考📓 教程🧑‍🍳 食谱🤝 集成💜 Discord🎨 Studio
API 参考

Query

用于查询处理和扩展的组件。

模块 haystack_experimental.components.query.query_expander

QueryExpander

一个组件,用于生成一系列语义上相似的查询,以提高 RAG 系统中的检索召回率。

该组件使用聊天生成器来扩展查询。聊天生成器应返回一个具有以下结构的 JSON 响应:

使用示例

{"queries": ["expanded query 1", "expanded query 2", "expanded query 3"]}
from haystack.components.generators.chat.openai import OpenAIChatGenerator
from haystack_experimental.components.query import QueryExpander

expander = QueryExpander(
    chat_generator=OpenAIChatGenerator(model="gpt-4.1-mini"),
    n_expansions=3
)

result = expander.run(query="green energy sources")
print(result["queries"])
# Output: ['alternative query 1', 'alternative query 2', 'alternative query 3', 'green energy sources']
# Note: Up to 3 additional queries + 1 original query (if include_original_query=True)

# To control total number of queries:
expander = QueryExpander(n_expansions=2, include_original_query=True)  # Up to 3 total
# or
expander = QueryExpander(n_expansions=3, include_original_query=False)  # Exactly 3 total

QueryExpander.__init__

def __init__(*,
             chat_generator: Optional[ChatGenerator] = None,
             prompt_template: Optional[str] = None,
             n_expansions: int = 4,
             include_original_query: bool = True)

初始化 QueryExpander 组件。

参数:

  • chat_generator: 用于查询扩展的聊天生成器组件。如果为 None,则使用默认的 OpenAIChatGenerator 和 gpt-4.1-mini 模型。
  • prompt_template: 自定义的 PromptBuilder 模板,用于查询扩展。模板应指示 LLM 返回一个具有以下结构的 JSON 响应:{"queries": ["query1", "query2", "query3"]}. 模板应包含 'query' 和 'n_expansions' 变量。
  • n_expansions: 要生成的替代查询的数量(默认值:4)。
  • include_original_query: 是否在输出中包含原始查询。

QueryExpander.to_dict

def to_dict() -> Dict[str, Any]

将组件序列化为字典。

返回值:

包含序列化数据的字典。

QueryExpander.from_dict

@classmethod
def from_dict(cls, data: Dict[str, Any]) -> "QueryExpander"

从字典反序列化组件。

参数:

  • data: 包含序列化数据的字典。

返回值:

反序列化后的组件。

QueryExpander.run

@component.output_types(queries=List[str])
def run(query: str,
        n_expansions: Optional[int] = None) -> Dict[str, List[str]]

将输入查询扩展为多个语义上相似的查询。

原始查询的语言在扩展查询中得以保留。

参数:

  • query: 要扩展的原始查询。
  • n_expansions: 要生成的附加查询的数量(不包括原始查询)。如果为 None,则使用初始化时设置的值。可以设置为 0 以不生成附加查询。

引发:

  • ValueError: 如果 n_expansions 不是正数(小于或等于 0)。
  • RuntimeError: 如果组件未预热且聊天生成器不支持预热。

返回值:

包含 "queries" 键的字典,其中包含扩展查询列表。如果 include_original_query=True,则除了 n_expansions 个替代查询外,还将包含原始查询。

QueryExpander.warm_up

def warm_up()

预热底层 LLM(如果它支持)。