#23076·llama_index

[错误]: TreeSelectLeafRetriever 和树插入操作在 0 索引的 LLM 答案中默默地选择最后一个节点

作者: Harsh23Kashyap创建于 2026年9月16日更新于 2026年9月16日

QQ 错误描述

树选择的查询提示将选择列表为 1 到 N , 并要求模型回复 ANSWER: < number > 。 该回答的两个消费者在用“数字-1”进行索引之前只检查上行:

  • TreeSelectLeafRetriever. query level'和. select nodes'(indices/tree/select leaf retriever.py):`如果数字 > len(cur node list)' 警卫超距离回答,但没有警卫0。
  • TreeIndex Inserter. 插入-node' (indices/tree/ infer.py):形状相同,elif int(数字[0]) > len(cur graph node list)'。

0索引的答案(常见的模型滑倒)通过两个检查,"数字- 1"变为-1,Python的负索引默默地选择了last节点:

——取回倒入上个子树上并还回其叶子,仿佛模型选择了它们(见Steps to Reproduce).

  • `tree.Access(doc)'将新文档放入上一个摘要节点,而不是遵循过距离和无法解析的答案的倒置路径。

此模式与树索引中的#23072(选取器)和#22827(StructuredLLMRErank)相同. 建议的固定办法:将所有三个地方的现有离线处理扩大到 " 数字 < 1 " -- -- 寻回者完全按照已经作出的超距答复进行保释,并插入回到父母的下方。 我准备好补丁和回归测试了 很高兴发送公关

翻译:

LLaMA-index-core 0.14.24(也经过当前主机,fd4a517)

  • 重现步骤

[Python] 从 lama index.core.base.llms.types 导入补全响应, LLMMetata 数据 从 lama index.core.indices.query.schema 导入 QueryBundle 从 lama index.core.indices.tree.base 导入 TreeIndex 从 alama index.core.llms.海关导入自定义LLM 从 alama index.core.schema 导入文档

类 : ""回答 0 (0-indexed) 到每个树选择的快取". "

@ 财产 def 元数据( 自) - > LLMMetata: 返回 LLMMetata( 文本 窗口=4096, num 输出= 256)

ff 完整( 自, 即时, 格式化为 False, ** kwargs) : 如果“ 下面给出一些选择 ” 迅速 : 返回补全Response(文本="ANSWER: 0") 返回补全Response(文本="摘要")

def stream complete(自,即时,格式化为假,**kwargs) : 升起未执行错误

docs = [Document(text=f" This is doc {i}.] 对于i在范围(4)]. 树 = treeIndex. from documents(documents, LLM=ZeroIndexedLLM (), num children=2) 树形图 树形图

响应=树.as retriever (.). query (QueryBundle ("是什么?")). print([n.node.get content ()] for n in response.source nodes]) 页面存档备份,存于互联网档案馆.


输出:`['这是Doc 3.''-模型回答0,但取回器默默地还原了LAST子树的叶子. 同一函数的超距离路径视此为无效并退出;0应获得同样的待遇(选择列表从 1 开始).

内容来源: run-llama/llama_index