#23002·llama_index

传入: UPSERTS_AND_DELETE 在哈希冲突时会丢失已删除的文档,且转换缓存键不是单射函数

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

`LLaMA-index-core'摄入路径的两个缺陷,都在于如何确定工作单位。 它们是分开的,可以拆分,如果你喜欢的话。

-- -- . . .

1. `UPSERTs AND DELETE'在另一个文件共享其内容散列时,没有默默删除已删除的文档h

何处

LLaMA-index-core/lama index/core/摄入/管道.py'、Handle-upserts' (同步)和Ahandle-upserts' (同步);LLaMA-index-core/lama index/core/ storage/doctore/keyval doctore.py'中的根本原因。

删除传出计算当前存储的内容 :

zz
已存在的 doc ids  before = set(self.docstore.get all document hashes (. values ())
doc ids to delete = 已存在的 doc ids  before - doc ids  from nodes 中

`get all document hashes ()' 返回以散列** 为键的字节**,以 doc id为值:

[Python] 返回 {doc hash: doc id for doc id, doc in... 如果(doc hash: = doc.get ("doc hash"))) ).


从 doc id到散列的地图是多对一的,因此倒置它会倒塌出每组同内容的文档,降为** single** doc id——最后一位作者获胜. 删除传出后在部分视图上计算出设定的相差,从源取出用户的文档被默默地保留在道克斯托尔和向量商店中,并不断被查询回.

□再现.

内容相同的Ingest QQA,BQQ,然后只重新使用QQB; " A " 应删除。

doc A.hash ========================================================================================================================================================================================================================================================

运行后 1, docstore ids: ['doc A','doc B'] 运行后 2, docstore ids: ['doc A','doc B'] 警告: 结果: doc A Leaked(未删除)


地图崩溃, 直接显示 :

docstore ids : ['doc A','doc B'] (中文(简体) ). 获取 all document hashes () : {'67cf986e.df54' : “doc B'}

  • . 值( ) 只见 : {' doc B}


□ 不对称——为什么这是意外而不是规则

只重新使用`doc-A'**正确删除**`doc-B';只重新使用`doc-B'** 后叶`doc-A'**。 同样的数据,相同的策略,相反的正确性,决定哪个文档赢得了dict位:

仅重新使用 doc B - > docstore ids: ['doc A','doc B'] (错误) 仅重新使用 doc A - > docstore ids : ['doc A'] (正确)


无意的语义对对称输入产生相反的结果.

□负控

同文,两个文件各有不同:

运行后 2, docstore ids : ['doc B'] 结果: doc A已删除( ok)


双子双子双子双子双子双子双子双子双子双子双子双子双子双子双子双子双子双子双子双子双子双子双子双子双子双子双子双子双子双子双子双子双子双子双子双子双子双子双子双子双子双子双子双子双子双子双子双子双子双子双子双子双子双子双子双子双子双子双子双子双子双子双子双子双子双子双子双子双子双子双子双子双子双子双子双子双子双子双子双子双子双子双子双子双子双子双子双子双子双子双子双子双子双子双子双子双子双子双子双子双子双子双子双子双子双子双子双子双子双子双子双子双子双子双子双子双子双子双子双子双子双子双子双子双子双子双子双

□ 寂静

`发出的警告:`在每次跑跑时,用`渔获-警告(记录=True)'和`简单过滤器(总是")'抓取'。 `跑() ' 通常以`n节点=0'返回,该节点对呼叫者来说是`一切都是最新的'。 废纸仍可取取.

□ 注释

周围的代码对身份非常谨慎:在其主要循环中正确使用`ref doc id'键,在`core/indices/base.py'键上使用`ref ref docs'键。 只有
. . . . . . .

内容来源: run-llama/llama_index