Skip to content
LlamaIndex 文档版本 跟随上游 源快照 b6aff36f 更新于 2026-10-15

开始使用

从索引构建一个查询引擎:

query_engine = index.as_query_engine()

提示

如何构建索引,见索引(Indexing)

针对你的数据提一个问题

response = query_engine.query("Who is Paul Graham?")

配置查询引擎

高层 API

你可以用一行代码直接从索引构建并配置一个查询引擎:

query_engine = index.as_query_engine(
    response_mode="tree_summarize",
    verbose=True,
)

注:高层 API 以便用为先,但并不提供完整的可配置能力。

响应模式的完整清单及其作用,见 响应模式(Response Modes)。

低层组装 API

需要更细粒度的控制时,可以使用低层组装 API。具体来说,你要显式构造一个 QueryEngine 对象,而不是调用 index.as_query_engine(...)。

注:你可能需要查阅 API 参考或示例 notebook。

from llama_index.core import VectorStoreIndex, get_response_synthesizer
from llama_index.core.retrievers import VectorIndexRetriever
from llama_index.core.query_engine import RetrieverQueryEngine

# build index
index = VectorStoreIndex.from_documents(documents)

# configure retriever
retriever = VectorIndexRetriever(
    index=index,
    similarity_top_k=2,
)

# configure response synthesizer
response_synthesizer = get_response_synthesizer(
    response_mode="tree_summarize",
)

# assemble query engine
query_engine = RetrieverQueryEngine(
    retriever=retriever,
    response_synthesizer=response_synthesizer,
)

# query
response = query_engine.query("What did the author do growing up?")
print(response)

流式

要启用流式,只需传入 streaming=True 开关

query_engine = index.as_query_engine(
    streaming=True,
)
streaming_response = query_engine.query(
    "What did the author do growing up?",
)
streaming_response.print_response_stream()

定义自定义查询引擎

你也可以定义一个自定义查询引擎。只需继承 CustomQueryEngine 类,定义你想要的属性(与定义 Pydantic 类类似),再实现一个 custom_query 函数,返回 Response 对象或字符串即可。

from llama_index.core.query_engine import CustomQueryEngine
from llama_index.core.retrievers import BaseRetriever
from llama_index.core import get_response_synthesizer
from llama_index.core.response_synthesizers import BaseSynthesizer

class RAGQueryEngine(CustomQueryEngine):
    """RAG Query Engine."""

    retriever: BaseRetriever
    response_synthesizer: BaseSynthesizer

    def custom_query(self, query_str: str):
        nodes = self.retriever.retrieve(query_str)
        response_obj = self.response_synthesizer.synthesize(query_str, nodes)
        return response_obj

更多细节见自定义查询引擎指南。

BytesRouter 是社区翻译站点,所有译文仅供参考,一切以官方英文原文为准。