查询引擎与聊天引擎: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 模式特点是?