[ PROMPT_NODE_22222 ]
query_engines
[ SKILL_DOCUMENTATION ]
# LlamaIndex 查询引擎指南
关于查询引擎、模式和自定义的完整指南。
## 什么是查询引擎?
查询引擎驱动 LlamaIndex 中的检索和响应生成:
1. 从索引中检索相关块
2. 使用 LLM + 上下文生成响应
3. 返回答案(可选包含来源)
## 基础查询引擎
python
from llama_index.core import VectorStoreIndex
index = VectorStoreIndex.from_documents(documents)
# 默认查询引擎
query_engine = index.as_query_engine()
response = query_engine.query("主要主题是什么?")
print(response)
## 响应模式
### 1. Compact (默认) - 适用于大多数情况
python
query_engine = index.as_query_engine(
response_mode="compact"
)
# 将适合上下文窗口的块合并
response = query_engine.query("解释量子计算")
### 2. Tree summarize - 分层汇总
python
query_engine = index.as_query_engine(
response_mode="tree_summarize"
)
# 从块构建摘要树
# 适用于:汇总任务,检索到大量块的情况
response = query_engine.query("总结所有关键发现")
### 3. Simple summarize - 连接并汇总
python
query_engine = index.as_query_engine(
response_mode="simple_summarize"
)
# 连接所有块,然后汇总
# 速度快,但如果块太多可能会丢失上下文
### 4. Refine - 迭代优化
python
query_engine = index.as_query_engine(
response_mode="refine"
)
# 在块之间迭代优化答案
# 最彻底,速度最慢
# 适用于:需要综合信息的复杂问题
### 5. No text - 仅返回节点
python
query_engine = index.as_query_engine(
response_mode="no_text"
)
# 返回检索到的节点而不进行 LLM 响应
# 适用于:调试检索,自定义处理
response = query_engine.query("机器学习")
for node in response.source_nodes:
print(node.text)
## 配置选项
### 相似度 top-k
python
# 返回最相似的前 3 个块
query_engine = index.as_query_engine(
similarity_top_k=3 # 默认: 2
)
### 流式传输
python
# 流式传输响应 Token
query_engine = index.as_query_engine(streaming=True)
response = query_engine.query("解释神经网络")
for text in response.response_gen:
print(text, end="", flush=True)
### 详细模式 (Verbose mode)
python
# 显示检索和生成过程
query_engine = index.as_query_engine(verbose=True)
response = query_engine.q