💡 辅助查询是怎么来的?
它是基于你当前查询(query)检索到的某个文档片段(chunk_result),再去"反推"出新的相关问题(utility queries),这些问题的作用是:
- 引导系统从更多角度理解这个文档;
- 为后续推理、回答或补充背景知识做准备。
🧠 举个非常贴近实际的例子:
假设你问的是:
"公司的治理结构是怎样的?"
系统用这个问题去检索文档,拿到了以下 chunk_result
:
"根据公司章程,公司治理结构包括股东大会、董事会、监事会和高级管理层,各自职责如下......"
接着,系统会调用:
python
utility_queries = self.utility_query_generator.generate_queries(
chunk=str(chunk_result), # 传入文档片段内容
max_queries=2,
existing_graph_queries=...
)
🔍 那这个 generate_queries
做的事,就是用语言模型或者类似的规则模板,生成类似这样的问题:
- "董事会的职责有哪些?"
- "高级管理层如何履行监督义务?"
- "治理结构中的监事会作用是什么?"
👉 所以,它的目标是"站在系统的视角",主动提出更多细化问题,把这个 chunk 挖得更深。
🚨 注意:它不是基于原始用户提问,而是基于"当前文档片段"
虽然初始用户提问是引发这一切的触发点,但 辅助查询其实是"chunk 驱动"的,而不是"query 驱动的"。
也就是说:
原始用户问题 → 检索出 chunk → 系统看了 chunk 后自己想出的新问题
🧭 为什么这么设计?有啥好处?
这其实是一种很聪明的"文档自我探索机制":
优势 | 说明 |
---|---|
💡 自动挖掘潜在知识 | 哪怕用户没问,系统也能主动发现重要内容 |
🔄 扩展语义图谱 | 生成的 utility query 可以丰富知识图谱、内存 |
🤖 改进推理表现 | 为后续 LLM 回答时提供更多上下文依据 |
🧠 有助记忆召回 | 作为补充 query 被记录,以备后续召回 |
✅ 总结一句话:
辅助查询是系统基于已检索文档片段,自动生成的新问题,用来更深入理解文档内容。