Skip to content

流式传输#

LlamaIndex 支持在生成过程中流式传输响应结果。这使得您可以在完整响应完成前就开始处理或显示部分响应内容,从而显著降低查询的感知延迟。

配置方法#

要启用流式传输,您需要使用支持该功能的LLM。目前支持流式传输的LLM包括:OpenAIHuggingFaceLLM 以及大多数LangChain LLM(通过 LangChainLLM 实现)。

注意:如果您选择的LLM不支持流式传输,将会抛出 NotImplementedError 异常。

通过高级API配置查询引擎时,在构建查询引擎时设置 streaming=True 即可启用流式传输:

query_engine = index.as_query_engine(streaming=True, similarity_top_k=1)

如果使用低级API组合查询引擎,则在构造 Response Synthesizer 时传入 streaming=True 参数:

from llama_index.core import get_response_synthesizer

synth = get_response_synthesizer(streaming=True, ...)
query_engine = RetrieverQueryEngine(response_synthesizer=synth, ...)

流式响应#

当正确配置LLM和查询引擎后,调用 query 方法将返回一个 StreamingResponse 对象。

streaming_response = query_engine.query(
    "What did the author do growing up?",
)

响应会在LLM调用_开始时_立即返回,无需等待完整结果生成完毕。

注意:当查询引擎需要执行多次LLM调用时,只有最后一次LLM调用会采用流式传输,且响应会在最后一次LLM调用开始时返回。

您可以从流式响应中获取 Generator 并实时迭代接收到的文本片段:

for text in streaming_response.response_gen:
    # 对实时到达的文本片段进行处理
    pass

如果只需要实时打印文本片段,可以直接调用:

streaming_response.print_response_stream()

查看完整端到端示例