def METHOD_NAME(
    self, query_result: VectorStoreQueryResult
) -> List[NodeWithScore]:
    if query_result.nodes is None:
        # NOTE: vector store does not keep text and returns node indices.
        # Need to recover all nodes from docstore
        if query_result.ids is None:
            raise ValueError(
                "Vector store query result should return at "
                "least one of nodes or ids."
            )
        assert isinstance(self._index.index_struct, IndexDict)
        node_ids = [
            self._index.index_struct.nodes_dict[idx] for idx in query_result.ids
        ]
        nodes = self._docstore.get_nodes(node_ids)
        query_result.nodes = nodes
    else:
        # NOTE: vector store keeps text, returns nodes.
        # Only need to recover image or index nodes from docstore
        for i in range(len(query_result.nodes)):
            source_node = query_result.nodes[i].source_node
            if (not self._vector_store.stores_text) or (
                source_node is not None and source_node.node_type != ObjectType.TEXT
            ):
                node_id = query_result.nodes[i].node_id
                if node_id in self._docstore.docs:
                    query_result.nodes[
                        i
                    ] = self._docstore.get_node(  # type: ignore[index]
                        node_id
                    )
    log_vector_store_query_result(query_result)
    node_with_scores: List[NodeWithScore] = []
    for ind, node in enumerate(query_result.nodes):
        score: Optional[float] = None
        if query_result.similarities is not None:
            score = query_result.similarities[ind]
        node_with_scores.append(NodeWithScore(node=node, score=score))
    return node_with_scores