数据流#
LlamaIndex 支持在生成响应时进行数据流传输。这使您可以在完整响应生成之前开始打印或处理响应的开头部分。这可以大大减少查询的感知延迟。
设置#
要启用数据流传输,您需要使用支持数据流传输的 LLM。目前,数据流传输受 OpenAI
、HuggingFaceLLM
和大多数 LangChain LLMs(通过 LangChainLLM
)的支持。
注意:如果您选择的 LLM 不支持数据流传输,将会引发
NotImplementedError
。
要使用高级 API 配置查询引擎以使用数据流传输,在构建查询引擎时设置 streaming=True
。
query_engine = index.as_query_engine(streaming=True, similarity_top_k=1)
如果您正在使用低级 API 来组合查询引擎,在构建“响应合成器”时传递 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(
"作者在成长过程中做了什么?",
)
在 LLM 调用 开始 时立即返回响应,而无需等待完整完成。
注意:在查询引擎进行多个 LLM 调用的情况下,只有最后一个 LLM 调用会进行数据流传输,并且在最后一个 LLM 调用开始时返回响应。
您可以从数据流响应中获取一个 Generator
,并在标记到达时进行迭代:
for text in streaming_response.response_gen:
# 在标记到达时对文本执行某些操作。
pass
或者,如果您只想在标记到达时打印文本:
streaming_response.print_response_stream()
查看端到端示例