LlamaIndex 中级

查询引擎与聊天引擎:Query Engine vs Chat Engine

掌握两种查询入口的差异:单轮问答的 Query Engine 与带记忆多轮对话的 Chat Engine,以及响应合成模式。

Query Engine:单轮深度问答

query_engine = index.as_query_engine(
    similarity_top_k=3,
    response_mode="compact")
resp = query_engine.query("退货流程是什么?")
print(resp)                       # 合成后的回答
print(resp.source_nodes)          # 引用的来源块(可溯源)

response_mode(响应合成模式)决定检索到的多块内容如何喂给模型:

  • compact(默认):尽量把块塞满一次调用 —— 省钱、常用;
  • refine:逐块迭代润色答案 —— 答案更精细,调用次数多;
  • tree_summarize:分组建树再汇总 —— 适合总结类任务。

Chat Engine:带记忆的多轮对话

chat_engine = index.as_chat_engine(
    chat_mode="condense_question",   # 历史凝练模式
    verbose=True)
print(chat_engine.chat("这个知识库讲什么?"))
print(chat_engine.chat("刚才说的第 2 点展开讲讲"))   # 能理解"刚才"

condense_question 模式与本站《多轮对话 RAG》课思路一致:先用水对话历史凝练出独立问题,再检索回答。

源码溯源:生产必备

响应对象携带 source_nodes(来源块 + 相似度分 + metadata),前端可以展示"答案依据"——这是消除用户疑虑、便于核对的关键特性,强烈建议打开。

📝 课后练习

quiz-1 LlamaIndex 响应合成模式中,默认的 compact 模式特点是?