diff --git a/llama-index-core/llama_index/core/indices/base.py b/llama-index-core/llama_index/core/indices/base.py index a35797a4a1da6e2be4672be025fa1f4a724c8de1..08c0b3b13378e08550319129b9686f9d0fd0d272 100644 --- a/llama-index-core/llama_index/core/indices/base.py +++ b/llama-index-core/llama_index/core/indices/base.py @@ -217,6 +217,14 @@ class BaseIndex(Generic[IS], ABC): def insert_nodes(self, nodes: Sequence[BaseNode], **insert_kwargs: Any) -> None: """Insert nodes.""" + for node in nodes: + if isinstance(node, IndexNode): + try: + node.dict() + except ValueError: + self._object_map[node.index_id] = node.obj + node.obj = None + with self._callback_manager.as_trace("insert_nodes"): self.docstore.add_documents(nodes, allow_update=True) self._insert(nodes, **insert_kwargs) diff --git a/llama-index-core/llama_index/core/indices/vector_store/base.py b/llama-index-core/llama_index/core/indices/vector_store/base.py index 474169b677057a1bb796ae5e138611729df73e99..596cf50d02d83d325b47767d150a42a86330b2e8 100644 --- a/llama-index-core/llama_index/core/indices/vector_store/base.py +++ b/llama-index-core/llama_index/core/indices/vector_store/base.py @@ -317,6 +317,14 @@ class VectorStoreIndex(BaseIndex[IndexDict]): VectorStoreIndex only stores nodes in document store if vector store does not store text """ + for node in nodes: + if isinstance(node, IndexNode): + try: + node.dict() + except ValueError: + self._object_map[node.index_id] = node.obj + node.obj = None + self._insert(nodes, **insert_kwargs) self._storage_context.index_store.add_index_struct(self._index_struct)