@gravityai-dev/pinecone
Version:
Pinecone vector database nodes for GravityWorkflow - knowledge management and vector operations
94 lines • 3.41 kB
JavaScript
;
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