UNPKG

@gravityai-dev/pinecone

Version:

Pinecone vector database nodes for GravityWorkflow - knowledge management and vector operations

94 lines 3.41 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.deleteChunkedVector = deleteChunkedVector; exports.deleteMultipleChunkedVectors = deleteMultipleChunkedVectors; /** * Delete operations for chunked vectors */ const logger_1 = require("../../../logger"); const client_1 = require("../client"); /** * Delete all chunks for a given vector ID * This will delete the original vector and all its chunks */ async function deleteChunkedVector(indexName, namespace, vectorId, context) { try { logger_1.logger.info("Deleting chunked vector", "deleteChunkedVector", { indexName, namespace, vectorId, }); const pinecone = await (0, client_1.initializePineconeWithContext)(context); const index = pinecone.index(indexName); const indexOperation = index.namespace(namespace); // Method 1: Delete by metadata filter (most reliable) try { await indexOperation.deleteMany({ filter: { vectorId: vectorId } }); logger_1.logger.info("Successfully deleted chunks by metadata filter", "deleteChunkedVector"); return { success: true }; } catch (filterError) { logger_1.logger.warn("Metadata filter deletion failed, trying ID prefix method", "deleteChunkedVector", { error: filterError.message }); } // Method 2: Fallback - Generate chunk IDs and delete // First try to delete the base vector const idsToDelete = [vectorId]; // Add potential chunk IDs (assuming max 100 chunks) for (let i = 0; i < 100; i++) { idsToDelete.push(`${vectorId}_chunk_${i}`); } // Delete in batches const batchSize = 1000; for (let i = 0; i < idsToDelete.length; i += batchSize) { const batch = idsToDelete.slice(i, i + batchSize); try { await indexOperation.deleteMany({ ids: batch }); } catch (batchError) { // Some IDs might not exist, which is fine logger_1.logger.debug("Batch deletion partial failure", "deleteChunkedVector", { batchStart: i, error: batchError.message }); } } logger_1.logger.info("Successfully deleted chunked vector", "deleteChunkedVector"); return { success: true }; } catch (error) { logger_1.logger.error("Failed to delete chunked vector", "deleteChunkedVector", { error: error.message, stack: error.stack, }); return { success: false, error: error.message, }; } } /** * Delete multiple chunked vectors */ async function deleteMultipleChunkedVectors(indexName, namespace, vectorIds, context) { const deletedVectors = []; const failedVectors = []; for (const vectorId of vectorIds) { const result = await deleteChunkedVector(indexName, namespace, vectorId, context); if (result.success) { deletedVectors.push(vectorId); } else { failedVectors.push(vectorId); } } return { success: failedVectors.length === 0, deletedVectors, failedVectors, }; } //# sourceMappingURL=deleteChunked.js.map