@ductape/sdk 0.0.4-v59 → 0.0.4-v60
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/agents/agents.service.d.ts +8 -2
- package/dist/agents/agents.service.js +5 -0
- package/dist/agents/agents.service.js.map +1 -1
- package/dist/agents/types/agents.types.d.ts +2 -0
- package/dist/agents/types/agents.types.js.map +1 -1
- package/dist/agents/vector-store-adapter.js +5 -5
- package/dist/agents/vector-store-adapter.js.map +1 -1
- package/dist/api/services/appApi.service.d.ts +3 -3
- package/dist/api/services/appApi.service.js.map +1 -1
- package/dist/api/services/productsApi.service.d.ts +1 -1
- package/dist/api/services/productsApi.service.js +20 -13
- package/dist/api/services/productsApi.service.js.map +1 -1
- package/dist/api/services/secretsApi.service.d.ts +12 -0
- package/dist/api/services/secretsApi.service.js +30 -2
- package/dist/api/services/secretsApi.service.js.map +1 -1
- package/dist/api/services/workspaceApi.service.d.ts +8 -0
- package/dist/api/services/workspaceApi.service.js +20 -0
- package/dist/api/services/workspaceApi.service.js.map +1 -1
- package/dist/api/urls.d.ts +2 -0
- package/dist/api/urls.js +10 -15
- package/dist/api/urls.js.map +1 -1
- package/dist/api/utils/auth.utils.d.ts +1 -3
- package/dist/api/utils/auth.utils.js.map +1 -1
- package/dist/apps/utils/oauth-manager.js +27 -3
- package/dist/apps/utils/oauth-manager.js.map +1 -1
- package/dist/brokers/brokers.service.d.ts +8 -0
- package/dist/brokers/brokers.service.js +50 -4
- package/dist/brokers/brokers.service.js.map +1 -1
- package/dist/brokers/types/index.d.ts +26 -0
- package/dist/brokers/utils/providers/kafka.service.d.ts +7 -0
- package/dist/brokers/utils/providers/kafka.service.js +102 -23
- package/dist/brokers/utils/providers/kafka.service.js.map +1 -1
- package/dist/brokers/utils/providers/rabbitmq.service.d.ts +2 -1
- package/dist/brokers/utils/providers/rabbitmq.service.js +99 -15
- package/dist/brokers/utils/providers/rabbitmq.service.js.map +1 -1
- package/dist/database/adapters/cassandra.adapter.d.ts +1 -0
- package/dist/database/adapters/cassandra.adapter.js +100 -44
- package/dist/database/adapters/cassandra.adapter.js.map +1 -1
- package/dist/database/adapters/dynamodb.adapter.d.ts +1 -0
- package/dist/database/adapters/dynamodb.adapter.js +89 -20
- package/dist/database/adapters/dynamodb.adapter.js.map +1 -1
- package/dist/database/adapters/mongodb.adapter.d.ts +1 -0
- package/dist/database/adapters/mongodb.adapter.js +123 -45
- package/dist/database/adapters/mongodb.adapter.js.map +1 -1
- package/dist/database/adapters/mysql.adapter.d.ts +1 -0
- package/dist/database/adapters/mysql.adapter.js +125 -48
- package/dist/database/adapters/mysql.adapter.js.map +1 -1
- package/dist/database/adapters/postgresql.adapter.d.ts +5 -0
- package/dist/database/adapters/postgresql.adapter.js +151 -50
- package/dist/database/adapters/postgresql.adapter.js.map +1 -1
- package/dist/database/databases.service.d.ts +15 -1
- package/dist/database/databases.service.js +143 -2
- package/dist/database/databases.service.js.map +1 -1
- package/dist/database/operators/aggregation-builder.d.ts +11 -8
- package/dist/database/operators/aggregation-builder.js +184 -89
- package/dist/database/operators/aggregation-builder.js.map +1 -1
- package/dist/database/operators/query-builder.d.ts +23 -19
- package/dist/database/operators/query-builder.js +77 -45
- package/dist/database/operators/query-builder.js.map +1 -1
- package/dist/database/types/aggregation.interface.d.ts +21 -15
- package/dist/database/types/query.interface.d.ts +27 -21
- package/dist/database/types/write.interface.d.ts +20 -12
- package/dist/graph/adapters/arangodb.adapter.js +61 -22
- package/dist/graph/adapters/arangodb.adapter.js.map +1 -1
- package/dist/graph/adapters/memgraph.adapter.js +22 -16
- package/dist/graph/adapters/memgraph.adapter.js.map +1 -1
- package/dist/graph/adapters/neo4j.adapter.js +51 -21
- package/dist/graph/adapters/neo4j.adapter.js.map +1 -1
- package/dist/graph/adapters/neptune.adapter.js +32 -16
- package/dist/graph/adapters/neptune.adapter.js.map +1 -1
- package/dist/graph/graphs.service.d.ts +24 -2
- package/dist/graph/graphs.service.js +238 -28
- package/dist/graph/graphs.service.js.map +1 -1
- package/dist/graph/types/connection.interface.d.ts +8 -0
- package/dist/graph/types/query.interface.d.ts +21 -14
- package/dist/index.d.ts +367 -20
- package/dist/index.js +510 -48
- package/dist/index.js.map +1 -1
- package/dist/inputs/inputs.service.d.ts +1 -1
- package/dist/notifications/notifications.service.d.ts +7 -2
- package/dist/notifications/notifications.service.js +2 -0
- package/dist/notifications/notifications.service.js.map +1 -1
- package/dist/processor/services/processor.service.d.ts +5 -1
- package/dist/processor/services/processor.service.js +35 -2
- package/dist/processor/services/processor.service.js.map +1 -1
- package/dist/products/services/products.service.d.ts +76 -2
- package/dist/products/services/products.service.js +984 -27
- package/dist/products/services/products.service.js.map +1 -1
- package/dist/products/validators/joi-validators/create.productAgent.validator.js +52 -4
- package/dist/products/validators/joi-validators/create.productAgent.validator.js.map +1 -1
- package/dist/products/validators/joi-validators/create.productGraph.validator.js +2 -0
- package/dist/products/validators/joi-validators/create.productGraph.validator.js.map +1 -1
- package/dist/products/validators/joi-validators/create.productMessageBrokers.validator.js +1 -7
- package/dist/products/validators/joi-validators/create.productMessageBrokers.validator.js.map +1 -1
- package/dist/products/validators/joi-validators/create.productVector.validator.js +4 -4
- package/dist/products/validators/joi-validators/create.productVector.validator.js.map +1 -1
- package/dist/products/validators/joi-validators/update.productGraph.validator.js +2 -0
- package/dist/products/validators/joi-validators/update.productGraph.validator.js.map +1 -1
- package/dist/resilience/fallback.service.d.ts +4 -1
- package/dist/resilience/fallback.service.js +8 -10
- package/dist/resilience/fallback.service.js.map +1 -1
- package/dist/resilience/healthcheck.service.d.ts +6 -1
- package/dist/resilience/healthcheck.service.js +9 -0
- package/dist/resilience/healthcheck.service.js.map +1 -1
- package/dist/resilience/quota.service.d.ts +4 -1
- package/dist/resilience/quota.service.js +2 -0
- package/dist/resilience/quota.service.js.map +1 -1
- package/dist/resilience/resilience.service.d.ts +4 -1
- package/dist/resilience/resilience.service.js.map +1 -1
- package/dist/secrets/secrets.service.d.ts +11 -1
- package/dist/secrets/secrets.service.js +109 -10
- package/dist/secrets/secrets.service.js.map +1 -1
- package/dist/storage/storage.service.d.ts +4 -1
- package/dist/storage/storage.service.js +6 -1
- package/dist/storage/storage.service.js.map +1 -1
- package/dist/test/index.js +1 -3
- package/dist/test/index.js.map +1 -1
- package/dist/test/test.broker.kafka.d.ts +1 -0
- package/dist/test/test.broker.kafka.js +172 -0
- package/dist/test/test.broker.kafka.js.map +1 -0
- package/dist/test/test.broker.nats.d.ts +1 -0
- package/dist/test/test.broker.nats.js +193 -0
- package/dist/test/test.broker.nats.js.map +1 -0
- package/dist/test/test.broker.pubsub.d.ts +1 -0
- package/dist/test/test.broker.pubsub.js +171 -0
- package/dist/test/test.broker.pubsub.js.map +1 -0
- package/dist/test/test.broker.rabbitmq.d.ts +1 -0
- package/dist/test/test.broker.rabbitmq.js +164 -0
- package/dist/test/test.broker.rabbitmq.js.map +1 -0
- package/dist/test/test.broker.redis.d.ts +1 -0
- package/dist/test/test.broker.redis.js +168 -0
- package/dist/test/test.broker.redis.js.map +1 -0
- package/dist/test/test.broker.sqs.d.ts +1 -0
- package/dist/test/test.broker.sqs.js +158 -0
- package/dist/test/test.broker.sqs.js.map +1 -0
- package/dist/test/test.caches.d.ts +1 -0
- package/dist/test/test.caches.js +231 -0
- package/dist/test/test.caches.js.map +1 -0
- package/dist/test/test.database.dynamo.d.ts +1 -0
- package/dist/test/test.database.dynamo.js +265 -0
- package/dist/test/test.database.dynamo.js.map +1 -0
- package/dist/test/test.database.js +2 -2
- package/dist/test/test.database.js.map +1 -1
- package/dist/test/test.database.mongo.d.ts +1 -0
- package/dist/test/test.database.mongo.js +371 -0
- package/dist/test/test.database.mongo.js.map +1 -0
- package/dist/test/test.database.mysql.d.ts +1 -0
- package/dist/test/test.database.mysql.js +415 -0
- package/dist/test/test.database.mysql.js.map +1 -0
- package/dist/test/test.database.postgres.d.ts +1 -0
- package/dist/test/test.database.postgres.js +412 -0
- package/dist/test/test.database.postgres.js.map +1 -0
- package/dist/test/test.email.brevo.d.ts +1 -0
- package/dist/test/test.email.brevo.js +326 -0
- package/dist/test/test.email.brevo.js.map +1 -0
- package/dist/test/test.email.mailgun.d.ts +1 -0
- package/dist/test/test.email.mailgun.js +352 -0
- package/dist/test/test.email.mailgun.js.map +1 -0
- package/dist/test/test.email.postmark.d.ts +1 -0
- package/dist/test/test.email.postmark.js +316 -0
- package/dist/test/test.email.postmark.js.map +1 -0
- package/dist/test/test.email.sendgrid.d.ts +1 -0
- package/dist/test/test.email.sendgrid.js +365 -0
- package/dist/test/test.email.sendgrid.js.map +1 -0
- package/dist/test/test.email.smtp.d.ts +1 -0
- package/dist/test/test.email.smtp.js +323 -0
- package/dist/test/test.email.smtp.js.map +1 -0
- package/dist/test/test.graph.arangodb.d.ts +1 -0
- package/dist/test/test.graph.arangodb.js +358 -0
- package/dist/test/test.graph.arangodb.js.map +1 -0
- package/dist/test/test.graph.memgraph.d.ts +1 -0
- package/dist/test/test.graph.memgraph.js +320 -0
- package/dist/test/test.graph.memgraph.js.map +1 -0
- package/dist/test/test.graph.neo4j.d.ts +1 -0
- package/dist/test/test.graph.neo4j.js +218 -0
- package/dist/test/test.graph.neo4j.js.map +1 -0
- package/dist/test/test.graph.neptune.d.ts +1 -0
- package/dist/test/test.graph.neptune.js +331 -0
- package/dist/test/test.graph.neptune.js.map +1 -0
- package/dist/test/test.notifications.d.ts +1 -0
- package/dist/test/test.notifications.js +198 -0
- package/dist/test/test.notifications.js.map +1 -0
- package/dist/test/test.push.expo.d.ts +1 -0
- package/dist/test/test.push.expo.js +442 -0
- package/dist/test/test.push.expo.js.map +1 -0
- package/dist/test/test.push.firebase.d.ts +1 -0
- package/dist/test/test.push.firebase.js +409 -0
- package/dist/test/test.push.firebase.js.map +1 -0
- package/dist/test/test.session.d.ts +1 -0
- package/dist/test/test.session.js +299 -0
- package/dist/test/test.session.js.map +1 -0
- package/dist/test/test.sms.nexmo.d.ts +1 -0
- package/dist/test/test.sms.nexmo.js +278 -0
- package/dist/test/test.sms.nexmo.js.map +1 -0
- package/dist/test/test.sms.twilio.d.ts +1 -0
- package/dist/test/test.sms.twilio.js +275 -0
- package/dist/test/test.sms.twilio.js.map +1 -0
- package/dist/test/test.storage.js +169 -299
- package/dist/test/test.storage.js.map +1 -1
- package/dist/test/test.vector.pinecone.d.ts +1 -0
- package/dist/test/test.vector.pinecone.js +238 -0
- package/dist/test/test.vector.pinecone.js.map +1 -0
- package/dist/test/test.vector.qdrant.d.ts +1 -0
- package/dist/test/test.vector.qdrant.js +307 -0
- package/dist/test/test.vector.qdrant.js.map +1 -0
- package/dist/test/test.vector.weaviate.d.ts +1 -0
- package/dist/test/test.vector.weaviate.js +325 -0
- package/dist/test/test.vector.weaviate.js.map +1 -0
- package/dist/types/appBuilder.types.d.ts +6 -2
- package/dist/types/enums.d.ts +2 -0
- package/dist/types/enums.js +2 -0
- package/dist/types/enums.js.map +1 -1
- package/dist/types/index.types.d.ts +2 -4
- package/dist/types/index.types.js +0 -1
- package/dist/types/index.types.js.map +1 -1
- package/dist/types/processor.types.d.ts +18 -0
- package/dist/types/productsBuilder.types.d.ts +19 -15
- package/dist/types/productsBuilder.types.js.map +1 -1
- package/dist/types/requests.types.d.ts +2 -0
- package/dist/utils/index.js +23 -4
- package/dist/utils/index.js.map +1 -1
- package/dist/vector/adapters/base.adapter.d.ts +1 -1
- package/dist/vector/adapters/memory.adapter.d.ts +1 -1
- package/dist/vector/adapters/memory.adapter.js +1 -1
- package/dist/vector/adapters/memory.adapter.js.map +1 -1
- package/dist/vector/adapters/pinecone.adapter.d.ts +1 -1
- package/dist/vector/adapters/pinecone.adapter.js +1 -1
- package/dist/vector/adapters/pinecone.adapter.js.map +1 -1
- package/dist/vector/adapters/qdrant.adapter.d.ts +1 -1
- package/dist/vector/adapters/qdrant.adapter.js +1 -1
- package/dist/vector/adapters/qdrant.adapter.js.map +1 -1
- package/dist/vector/adapters/weaviate.adapter.d.ts +1 -1
- package/dist/vector/adapters/weaviate.adapter.js +1 -1
- package/dist/vector/adapters/weaviate.adapter.js.map +1 -1
- package/dist/vector/index.d.ts +2 -2
- package/dist/vector/index.js +2 -2
- package/dist/vector/utils/vector-error.js +0 -1
- package/dist/vector/utils/vector-error.js.map +1 -1
- package/dist/vector/vector-database.service.d.ts +9 -6
- package/dist/vector/vector-database.service.js +7 -6
- package/dist/vector/vector-database.service.js.map +1 -1
- package/dist/vector/vector.service.d.ts +3 -3
- package/dist/vector/vector.service.js +12 -9
- package/dist/vector/vector.service.js.map +1 -1
- package/dist/workflows/workflow-executor.d.ts +4 -1
- package/dist/workflows/workflow-executor.js +10 -2
- package/dist/workflows/workflow-executor.js.map +1 -1
- package/dist/workflows/workflows.service.d.ts +8 -2
- package/dist/workflows/workflows.service.js +66 -41
- package/dist/workflows/workflows.service.js.map +1 -1
- package/package.json +29 -4
|
@@ -0,0 +1,238 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const index_1 = __importDefault(require("./index"));
|
|
7
|
+
/**
|
|
8
|
+
* Pinecone Vector Database Tests
|
|
9
|
+
*
|
|
10
|
+
* Comprehensive tests for Pinecone vector database operations:
|
|
11
|
+
* - Vector database creation/registration
|
|
12
|
+
* - Connection management
|
|
13
|
+
* - Vector upsert (single and batch)
|
|
14
|
+
* - Similarity search with filters
|
|
15
|
+
* - Fetch vectors by ID
|
|
16
|
+
* - Update vector metadata
|
|
17
|
+
* - Namespace management
|
|
18
|
+
* - Index statistics
|
|
19
|
+
* - Delete operations
|
|
20
|
+
*/
|
|
21
|
+
const { vectors } = index_1.default;
|
|
22
|
+
// Start timing
|
|
23
|
+
const startTime = performance.now();
|
|
24
|
+
console.log(`[${new Date().toISOString()}] Starting Pinecone vector database operations...`);
|
|
25
|
+
async function runPineconeTests() {
|
|
26
|
+
try {
|
|
27
|
+
// ==================== CREATE VECTOR DATABASE ====================
|
|
28
|
+
console.log('\n--- Creating Vector Database Configuration ---');
|
|
29
|
+
const createStart = performance.now();
|
|
30
|
+
// Create/register a Pinecone vector database configuration
|
|
31
|
+
await vectors.create({
|
|
32
|
+
product: 'ductape:rematch',
|
|
33
|
+
tag: 'pinecone-index',
|
|
34
|
+
name: 'Pinecone Embeddings Store',
|
|
35
|
+
description: 'Vector store for document embeddings using Pinecone',
|
|
36
|
+
dbType: 'pinecone',
|
|
37
|
+
dimensions: 1536,
|
|
38
|
+
metric: 'cosine',
|
|
39
|
+
envs: [
|
|
40
|
+
{
|
|
41
|
+
slug: 'prd',
|
|
42
|
+
apiKey: process.env.PINECONE_API_KEY || 'your-api-key',
|
|
43
|
+
endpoint: process.env.PINECONE_ENDPOINT || 'https://your-index.svc.pinecone.io',
|
|
44
|
+
index: process.env.PINECONE_INDEX || 'embeddings',
|
|
45
|
+
},
|
|
46
|
+
{
|
|
47
|
+
slug: 'dev',
|
|
48
|
+
apiKey: process.env.PINECONE_DEV_API_KEY || 'your-dev-api-key',
|
|
49
|
+
endpoint: process.env.PINECONE_DEV_ENDPOINT || 'https://your-dev-index.svc.pinecone.io',
|
|
50
|
+
index: process.env.PINECONE_DEV_INDEX || 'embeddings-dev',
|
|
51
|
+
},
|
|
52
|
+
],
|
|
53
|
+
});
|
|
54
|
+
console.log(`[TIMING] Create vector config: ${(performance.now() - createStart).toFixed(2)}ms`);
|
|
55
|
+
console.log('Vector database configuration created successfully');
|
|
56
|
+
// ==================== CONNECT ====================
|
|
57
|
+
console.log('\n--- Connecting to Pinecone ---');
|
|
58
|
+
const connectStart = performance.now();
|
|
59
|
+
const connection = await vectors.connect({
|
|
60
|
+
env: 'prd',
|
|
61
|
+
product: 'ductape:rematch',
|
|
62
|
+
vector: 'pinecone-index',
|
|
63
|
+
});
|
|
64
|
+
console.log(`[TIMING] Connect: ${(performance.now() - connectStart).toFixed(2)}ms`);
|
|
65
|
+
console.log('Vector database connection established:', connection);
|
|
66
|
+
// Generate sample embeddings (simulating 1536-dimensional OpenAI embeddings)
|
|
67
|
+
const generateEmbedding = (seed) => {
|
|
68
|
+
const embedding = [];
|
|
69
|
+
for (let i = 0; i < 1536; i++) {
|
|
70
|
+
embedding.push(Math.sin(seed + i) * 0.5 + Math.random() * 0.5);
|
|
71
|
+
}
|
|
72
|
+
// Normalize the vector
|
|
73
|
+
const magnitude = Math.sqrt(embedding.reduce((sum, val) => sum + val * val, 0));
|
|
74
|
+
return embedding.map(val => val / magnitude);
|
|
75
|
+
};
|
|
76
|
+
// Test upserting vectors
|
|
77
|
+
console.log('\n--- Upserting Vectors ---');
|
|
78
|
+
const upsertStart = performance.now();
|
|
79
|
+
const upsertResult = await vectors.upsert({
|
|
80
|
+
vectors: [
|
|
81
|
+
{
|
|
82
|
+
id: 'doc-1',
|
|
83
|
+
values: generateEmbedding(1),
|
|
84
|
+
metadata: {
|
|
85
|
+
title: 'Introduction to Machine Learning',
|
|
86
|
+
category: 'tech',
|
|
87
|
+
author: 'Alice',
|
|
88
|
+
created_at: new Date().toISOString(),
|
|
89
|
+
},
|
|
90
|
+
},
|
|
91
|
+
{
|
|
92
|
+
id: 'doc-2',
|
|
93
|
+
values: generateEmbedding(2),
|
|
94
|
+
metadata: {
|
|
95
|
+
title: 'Advanced Neural Networks',
|
|
96
|
+
category: 'tech',
|
|
97
|
+
author: 'Bob',
|
|
98
|
+
created_at: new Date().toISOString(),
|
|
99
|
+
},
|
|
100
|
+
},
|
|
101
|
+
{
|
|
102
|
+
id: 'doc-3',
|
|
103
|
+
values: generateEmbedding(3),
|
|
104
|
+
metadata: {
|
|
105
|
+
title: 'Cooking with Python',
|
|
106
|
+
category: 'food',
|
|
107
|
+
author: 'Charlie',
|
|
108
|
+
created_at: new Date().toISOString(),
|
|
109
|
+
},
|
|
110
|
+
},
|
|
111
|
+
],
|
|
112
|
+
namespace: 'test-namespace',
|
|
113
|
+
});
|
|
114
|
+
console.log(`[TIMING] Upsert vectors: ${(performance.now() - upsertStart).toFixed(2)}ms`);
|
|
115
|
+
console.log('Upsert result:', JSON.stringify(upsertResult, null, 2));
|
|
116
|
+
// Test upserting a single vector
|
|
117
|
+
console.log('\n--- Upserting Single Vector ---');
|
|
118
|
+
const upsertOneStart = performance.now();
|
|
119
|
+
const upsertOneResult = await vectors.upsertOne('doc-4', generateEmbedding(4), {
|
|
120
|
+
title: 'Data Science Fundamentals',
|
|
121
|
+
category: 'tech',
|
|
122
|
+
author: 'Diana',
|
|
123
|
+
}, 'test-namespace');
|
|
124
|
+
console.log(`[TIMING] Upsert single vector: ${(performance.now() - upsertOneStart).toFixed(2)}ms`);
|
|
125
|
+
console.log('Upsert one result:', JSON.stringify(upsertOneResult, null, 2));
|
|
126
|
+
// Test querying similar vectors
|
|
127
|
+
console.log('\n--- Querying Similar Vectors ---');
|
|
128
|
+
const queryStart = performance.now();
|
|
129
|
+
const queryResult = await vectors.query({
|
|
130
|
+
vector: generateEmbedding(1), // Query with similar vector to doc-1
|
|
131
|
+
topK: 5,
|
|
132
|
+
namespace: 'test-namespace',
|
|
133
|
+
includeMetadata: true,
|
|
134
|
+
includeValues: false,
|
|
135
|
+
});
|
|
136
|
+
console.log(`[TIMING] Query vectors: ${(performance.now() - queryStart).toFixed(2)}ms`);
|
|
137
|
+
console.log('Query result:', JSON.stringify(queryResult, null, 2));
|
|
138
|
+
// Test finding similar with filter
|
|
139
|
+
console.log('\n--- Finding Similar with Filter ---');
|
|
140
|
+
const findSimilarStart = performance.now();
|
|
141
|
+
const similarResult = await vectors.findSimilar(generateEmbedding(2), 3, {
|
|
142
|
+
namespace: 'test-namespace',
|
|
143
|
+
filter: {
|
|
144
|
+
field: 'category',
|
|
145
|
+
operator: '$eq',
|
|
146
|
+
value: 'tech',
|
|
147
|
+
},
|
|
148
|
+
includeMetadata: true,
|
|
149
|
+
});
|
|
150
|
+
console.log(`[TIMING] Find similar: ${(performance.now() - findSimilarStart).toFixed(2)}ms`);
|
|
151
|
+
console.log('Similar vectors:', JSON.stringify(similarResult, null, 2));
|
|
152
|
+
// Test fetching vectors by ID
|
|
153
|
+
console.log('\n--- Fetching Vectors ---');
|
|
154
|
+
const fetchStart = performance.now();
|
|
155
|
+
const fetchResult = await vectors.fetch({
|
|
156
|
+
ids: ['doc-1', 'doc-2'],
|
|
157
|
+
namespace: 'test-namespace',
|
|
158
|
+
includeMetadata: true,
|
|
159
|
+
});
|
|
160
|
+
console.log(`[TIMING] Fetch vectors: ${(performance.now() - fetchStart).toFixed(2)}ms`);
|
|
161
|
+
console.log('Fetched vectors:', JSON.stringify(fetchResult, null, 2));
|
|
162
|
+
// Test fetching a single vector
|
|
163
|
+
console.log('\n--- Fetching Single Vector ---');
|
|
164
|
+
const fetchOneStart = performance.now();
|
|
165
|
+
const doc1 = await vectors.fetchOne('doc-1', 'test-namespace');
|
|
166
|
+
console.log(`[TIMING] Fetch single vector: ${(performance.now() - fetchOneStart).toFixed(2)}ms`);
|
|
167
|
+
console.log('Fetched doc-1:', JSON.stringify(doc1, null, 2));
|
|
168
|
+
// Test updating vector metadata
|
|
169
|
+
console.log('\n--- Updating Vector Metadata ---');
|
|
170
|
+
const updateStart = performance.now();
|
|
171
|
+
const updateResult = await vectors.update({
|
|
172
|
+
id: 'doc-1',
|
|
173
|
+
setMetadata: {
|
|
174
|
+
title: 'Introduction to Machine Learning (Updated)',
|
|
175
|
+
updated_at: new Date().toISOString(),
|
|
176
|
+
},
|
|
177
|
+
namespace: 'test-namespace',
|
|
178
|
+
});
|
|
179
|
+
console.log(`[TIMING] Update vector: ${(performance.now() - updateStart).toFixed(2)}ms`);
|
|
180
|
+
console.log('Update result:', JSON.stringify(updateResult, null, 2));
|
|
181
|
+
// Test listing vectors
|
|
182
|
+
console.log('\n--- Listing Vectors ---');
|
|
183
|
+
const listStart = performance.now();
|
|
184
|
+
const listResult = await vectors.list({
|
|
185
|
+
namespace: 'test-namespace',
|
|
186
|
+
limit: 10,
|
|
187
|
+
});
|
|
188
|
+
console.log(`[TIMING] List vectors: ${(performance.now() - listStart).toFixed(2)}ms`);
|
|
189
|
+
console.log('Listed vectors:', JSON.stringify(listResult, null, 2));
|
|
190
|
+
// Test listing namespaces
|
|
191
|
+
console.log('\n--- Listing Namespaces ---');
|
|
192
|
+
const listNsStart = performance.now();
|
|
193
|
+
const namespaces = await vectors.listNamespaces();
|
|
194
|
+
console.log(`[TIMING] List namespaces: ${(performance.now() - listNsStart).toFixed(2)}ms`);
|
|
195
|
+
console.log('Namespaces:', JSON.stringify(namespaces, null, 2));
|
|
196
|
+
// Test getting index stats
|
|
197
|
+
console.log('\n--- Index Statistics ---');
|
|
198
|
+
const statsStart = performance.now();
|
|
199
|
+
const stats = await vectors.getStats();
|
|
200
|
+
console.log(`[TIMING] Get stats: ${(performance.now() - statsStart).toFixed(2)}ms`);
|
|
201
|
+
console.log('Index stats:', JSON.stringify(stats, null, 2));
|
|
202
|
+
// Test counting vectors
|
|
203
|
+
console.log('\n--- Counting Vectors ---');
|
|
204
|
+
const countStart = performance.now();
|
|
205
|
+
const count = await vectors.count('test-namespace');
|
|
206
|
+
console.log(`[TIMING] Count vectors: ${(performance.now() - countStart).toFixed(2)}ms`);
|
|
207
|
+
console.log('Vector count:', count);
|
|
208
|
+
// Test checking if vector exists
|
|
209
|
+
console.log('\n--- Checking Vector Existence ---');
|
|
210
|
+
const existsStart = performance.now();
|
|
211
|
+
const exists = await vectors.exists('doc-1', 'test-namespace');
|
|
212
|
+
console.log(`[TIMING] Check exists: ${(performance.now() - existsStart).toFixed(2)}ms`);
|
|
213
|
+
console.log('Doc-1 exists:', exists);
|
|
214
|
+
const notExists = await vectors.exists('doc-999', 'test-namespace');
|
|
215
|
+
console.log('Doc-999 exists:', notExists);
|
|
216
|
+
// Test describing index
|
|
217
|
+
console.log('\n--- Describing Index ---');
|
|
218
|
+
const describeStart = performance.now();
|
|
219
|
+
const indexInfo = await vectors.describeIndex();
|
|
220
|
+
console.log(`[TIMING] Describe index: ${(performance.now() - describeStart).toFixed(2)}ms`);
|
|
221
|
+
console.log('Index info:', JSON.stringify(indexInfo, null, 2));
|
|
222
|
+
// Cleanup - delete test vectors
|
|
223
|
+
console.log('\n--- Cleanup ---');
|
|
224
|
+
const cleanupStart = performance.now();
|
|
225
|
+
const deleteResult = await vectors.deleteByIds(['doc-1', 'doc-2', 'doc-3', 'doc-4'], 'test-namespace');
|
|
226
|
+
console.log(`[TIMING] Delete vectors: ${(performance.now() - cleanupStart).toFixed(2)}ms`);
|
|
227
|
+
console.log('Delete result:', JSON.stringify(deleteResult, null, 2));
|
|
228
|
+
// ==================== SUMMARY ====================
|
|
229
|
+
const totalTime = performance.now() - startTime;
|
|
230
|
+
console.log(`\n[TIMING SUMMARY]`);
|
|
231
|
+
console.log(` Total time: ${totalTime.toFixed(2)}ms`);
|
|
232
|
+
}
|
|
233
|
+
catch (err) {
|
|
234
|
+
console.error('Error in Pinecone operations:', err);
|
|
235
|
+
}
|
|
236
|
+
}
|
|
237
|
+
runPineconeTests();
|
|
238
|
+
//# sourceMappingURL=test.vector.pinecone.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"test.vector.pinecone.js","sourceRoot":"","sources":["../../src/test/test.vector.pinecone.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,307 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const index_1 = __importDefault(require("./index"));
|
|
7
|
+
/**
|
|
8
|
+
* Qdrant Vector Database Tests
|
|
9
|
+
*
|
|
10
|
+
* Comprehensive tests for Qdrant vector database operations:
|
|
11
|
+
* - Vector database creation/registration
|
|
12
|
+
* - Connection management
|
|
13
|
+
* - Vector upsert (single and batch)
|
|
14
|
+
* - Similarity search with filters
|
|
15
|
+
* - Fetch vectors by ID
|
|
16
|
+
* - Update vector payloads
|
|
17
|
+
* - Collection management
|
|
18
|
+
* - Qdrant-specific features (payload indexing, HNSW config)
|
|
19
|
+
* - Delete operations
|
|
20
|
+
*/
|
|
21
|
+
const { vectors } = index_1.default;
|
|
22
|
+
// Start timing
|
|
23
|
+
const startTime = performance.now();
|
|
24
|
+
console.log(`[${new Date().toISOString()}] Starting Qdrant vector database operations...`);
|
|
25
|
+
async function runQdrantTests() {
|
|
26
|
+
try {
|
|
27
|
+
// ==================== CREATE VECTOR DATABASE ====================
|
|
28
|
+
console.log('\n--- Creating Vector Database Configuration ---');
|
|
29
|
+
const createStart = performance.now();
|
|
30
|
+
// Create/register a Qdrant vector database configuration
|
|
31
|
+
await vectors.create({
|
|
32
|
+
product: 'ductape:rematch',
|
|
33
|
+
tag: 'qdrant-collection',
|
|
34
|
+
name: 'Qdrant Product Embeddings',
|
|
35
|
+
description: 'Vector store for product embeddings using Qdrant',
|
|
36
|
+
dbType: 'qdrant',
|
|
37
|
+
dimensions: 1536,
|
|
38
|
+
metric: 'cosine',
|
|
39
|
+
envs: [
|
|
40
|
+
{
|
|
41
|
+
slug: 'prd',
|
|
42
|
+
apiKey: process.env.QDRANT_API_KEY || 'your-api-key',
|
|
43
|
+
endpoint: process.env.QDRANT_ENDPOINT || 'http://localhost:6333',
|
|
44
|
+
collection: process.env.QDRANT_COLLECTION || 'products',
|
|
45
|
+
},
|
|
46
|
+
{
|
|
47
|
+
slug: 'dev',
|
|
48
|
+
apiKey: process.env.QDRANT_DEV_API_KEY || 'your-dev-api-key',
|
|
49
|
+
endpoint: process.env.QDRANT_DEV_ENDPOINT || 'http://localhost:6334',
|
|
50
|
+
collection: process.env.QDRANT_DEV_COLLECTION || 'products-dev',
|
|
51
|
+
},
|
|
52
|
+
],
|
|
53
|
+
});
|
|
54
|
+
console.log(`[TIMING] Create vector config: ${(performance.now() - createStart).toFixed(2)}ms`);
|
|
55
|
+
console.log('Vector database configuration created successfully');
|
|
56
|
+
// ==================== CONNECT ====================
|
|
57
|
+
console.log('\n--- Connecting to Qdrant ---');
|
|
58
|
+
const connectStart = performance.now();
|
|
59
|
+
const connection = await vectors.connect({
|
|
60
|
+
env: 'prd',
|
|
61
|
+
product: 'ductape:rematch',
|
|
62
|
+
vector: 'qdrant-collection',
|
|
63
|
+
});
|
|
64
|
+
console.log(`[TIMING] Connect: ${(performance.now() - connectStart).toFixed(2)}ms`);
|
|
65
|
+
console.log('Qdrant connection established:', connection);
|
|
66
|
+
// Generate sample embeddings (simulating 1536-dimensional OpenAI embeddings)
|
|
67
|
+
const generateEmbedding = (seed) => {
|
|
68
|
+
const embedding = [];
|
|
69
|
+
for (let i = 0; i < 1536; i++) {
|
|
70
|
+
embedding.push(Math.sin(seed + i) * 0.5 + Math.random() * 0.5);
|
|
71
|
+
}
|
|
72
|
+
// Normalize the vector
|
|
73
|
+
const magnitude = Math.sqrt(embedding.reduce((sum, val) => sum + val * val, 0));
|
|
74
|
+
return embedding.map(val => val / magnitude);
|
|
75
|
+
};
|
|
76
|
+
// ==================== UPSERT OPERATIONS ====================
|
|
77
|
+
console.log('\n--- Upserting Vectors ---');
|
|
78
|
+
// Batch upsert
|
|
79
|
+
const upsertStart = performance.now();
|
|
80
|
+
const upsertResult = await vectors.upsert({
|
|
81
|
+
vectors: [
|
|
82
|
+
{
|
|
83
|
+
id: 'product-1',
|
|
84
|
+
values: generateEmbedding(1),
|
|
85
|
+
metadata: {
|
|
86
|
+
name: 'Wireless Headphones',
|
|
87
|
+
category: 'electronics',
|
|
88
|
+
price: 299.99,
|
|
89
|
+
in_stock: true,
|
|
90
|
+
rating: 4.5,
|
|
91
|
+
created_at: new Date().toISOString(),
|
|
92
|
+
},
|
|
93
|
+
},
|
|
94
|
+
{
|
|
95
|
+
id: 'product-2',
|
|
96
|
+
values: generateEmbedding(2),
|
|
97
|
+
metadata: {
|
|
98
|
+
name: 'Bluetooth Speaker',
|
|
99
|
+
category: 'electronics',
|
|
100
|
+
price: 149.99,
|
|
101
|
+
in_stock: true,
|
|
102
|
+
rating: 4.2,
|
|
103
|
+
created_at: new Date().toISOString(),
|
|
104
|
+
},
|
|
105
|
+
},
|
|
106
|
+
{
|
|
107
|
+
id: 'product-3',
|
|
108
|
+
values: generateEmbedding(3),
|
|
109
|
+
metadata: {
|
|
110
|
+
name: 'Running Shoes',
|
|
111
|
+
category: 'sports',
|
|
112
|
+
price: 189.99,
|
|
113
|
+
in_stock: false,
|
|
114
|
+
rating: 4.8,
|
|
115
|
+
created_at: new Date().toISOString(),
|
|
116
|
+
},
|
|
117
|
+
},
|
|
118
|
+
{
|
|
119
|
+
id: 'product-4',
|
|
120
|
+
values: generateEmbedding(4),
|
|
121
|
+
metadata: {
|
|
122
|
+
name: 'Yoga Mat',
|
|
123
|
+
category: 'sports',
|
|
124
|
+
price: 49.99,
|
|
125
|
+
in_stock: true,
|
|
126
|
+
rating: 4.6,
|
|
127
|
+
created_at: new Date().toISOString(),
|
|
128
|
+
},
|
|
129
|
+
},
|
|
130
|
+
],
|
|
131
|
+
namespace: 'products',
|
|
132
|
+
});
|
|
133
|
+
console.log(`[TIMING] Upsert vectors: ${(performance.now() - upsertStart).toFixed(2)}ms`);
|
|
134
|
+
console.log('Upsert result:', JSON.stringify(upsertResult, null, 2));
|
|
135
|
+
// Single upsert
|
|
136
|
+
console.log('\n--- Upserting Single Vector ---');
|
|
137
|
+
const upsertOneStart = performance.now();
|
|
138
|
+
const upsertOneResult = await vectors.upsertOne('product-5', generateEmbedding(5), {
|
|
139
|
+
name: 'Smart Watch',
|
|
140
|
+
category: 'electronics',
|
|
141
|
+
price: 399.99,
|
|
142
|
+
in_stock: true,
|
|
143
|
+
rating: 4.7,
|
|
144
|
+
}, 'products');
|
|
145
|
+
console.log(`[TIMING] Upsert single vector: ${(performance.now() - upsertOneStart).toFixed(2)}ms`);
|
|
146
|
+
console.log('Upsert one result:', JSON.stringify(upsertOneResult, null, 2));
|
|
147
|
+
// ==================== QUERY OPERATIONS ====================
|
|
148
|
+
console.log('\n--- Querying Similar Vectors ---');
|
|
149
|
+
// Basic similarity search
|
|
150
|
+
const queryStart = performance.now();
|
|
151
|
+
const queryResult = await vectors.query({
|
|
152
|
+
vector: generateEmbedding(1), // Query similar to product-1
|
|
153
|
+
topK: 5,
|
|
154
|
+
namespace: 'products',
|
|
155
|
+
includeMetadata: true,
|
|
156
|
+
includeValues: false,
|
|
157
|
+
});
|
|
158
|
+
console.log(`[TIMING] Query vectors: ${(performance.now() - queryStart).toFixed(2)}ms`);
|
|
159
|
+
console.log('Query result:', JSON.stringify(queryResult, null, 2));
|
|
160
|
+
// ==================== FILTERED SEARCH ====================
|
|
161
|
+
console.log('\n--- Filtered Similarity Search ---');
|
|
162
|
+
// Filter by category
|
|
163
|
+
const filterCatStart = performance.now();
|
|
164
|
+
const electronicsResult = await vectors.findSimilar(generateEmbedding(2), 3, {
|
|
165
|
+
namespace: 'products',
|
|
166
|
+
filter: {
|
|
167
|
+
field: 'category',
|
|
168
|
+
operator: '$eq',
|
|
169
|
+
value: 'electronics',
|
|
170
|
+
},
|
|
171
|
+
includeMetadata: true,
|
|
172
|
+
});
|
|
173
|
+
console.log(`[TIMING] Filter by category: ${(performance.now() - filterCatStart).toFixed(2)}ms`);
|
|
174
|
+
console.log('Electronics similar:', JSON.stringify(electronicsResult, null, 2));
|
|
175
|
+
// Filter by price range (Qdrant supports range filters)
|
|
176
|
+
console.log('\n--- Price Range Filter ---');
|
|
177
|
+
const priceRangeStart = performance.now();
|
|
178
|
+
const affordableResult = await vectors.findSimilar(generateEmbedding(1), 5, {
|
|
179
|
+
namespace: 'products',
|
|
180
|
+
filter: {
|
|
181
|
+
field: 'price',
|
|
182
|
+
operator: '$lte',
|
|
183
|
+
value: 200,
|
|
184
|
+
},
|
|
185
|
+
includeMetadata: true,
|
|
186
|
+
});
|
|
187
|
+
console.log(`[TIMING] Price range filter: ${(performance.now() - priceRangeStart).toFixed(2)}ms`);
|
|
188
|
+
console.log('Affordable products:', JSON.stringify(affordableResult, null, 2));
|
|
189
|
+
// Filter by in_stock status
|
|
190
|
+
console.log('\n--- In-Stock Filter ---');
|
|
191
|
+
const inStockStart = performance.now();
|
|
192
|
+
const inStockResult = await vectors.findSimilar(generateEmbedding(3), 5, {
|
|
193
|
+
namespace: 'products',
|
|
194
|
+
filter: {
|
|
195
|
+
field: 'in_stock',
|
|
196
|
+
operator: '$eq',
|
|
197
|
+
value: true,
|
|
198
|
+
},
|
|
199
|
+
includeMetadata: true,
|
|
200
|
+
});
|
|
201
|
+
console.log(`[TIMING] In-stock filter: ${(performance.now() - inStockStart).toFixed(2)}ms`);
|
|
202
|
+
console.log('In-stock products:', JSON.stringify(inStockResult, null, 2));
|
|
203
|
+
// ==================== FETCH OPERATIONS ====================
|
|
204
|
+
console.log('\n--- Fetching Vectors ---');
|
|
205
|
+
// Fetch multiple vectors by ID
|
|
206
|
+
const fetchStart = performance.now();
|
|
207
|
+
const fetchResult = await vectors.fetch({
|
|
208
|
+
ids: ['product-1', 'product-2', 'product-3'],
|
|
209
|
+
namespace: 'products',
|
|
210
|
+
includeMetadata: true,
|
|
211
|
+
});
|
|
212
|
+
console.log(`[TIMING] Fetch vectors: ${(performance.now() - fetchStart).toFixed(2)}ms`);
|
|
213
|
+
console.log('Fetched vectors:', JSON.stringify(fetchResult, null, 2));
|
|
214
|
+
// Fetch single vector
|
|
215
|
+
console.log('\n--- Fetching Single Vector ---');
|
|
216
|
+
const fetchOneStart = performance.now();
|
|
217
|
+
const product1 = await vectors.fetchOne('product-1', 'products');
|
|
218
|
+
console.log(`[TIMING] Fetch single vector: ${(performance.now() - fetchOneStart).toFixed(2)}ms`);
|
|
219
|
+
console.log('Fetched product-1:', JSON.stringify(product1, null, 2));
|
|
220
|
+
// ==================== UPDATE OPERATIONS ====================
|
|
221
|
+
console.log('\n--- Updating Vector Payload ---');
|
|
222
|
+
// Update metadata (Qdrant calls it payload)
|
|
223
|
+
const updateStart = performance.now();
|
|
224
|
+
const updateResult = await vectors.update({
|
|
225
|
+
id: 'product-1',
|
|
226
|
+
setMetadata: {
|
|
227
|
+
name: 'Premium Wireless Headphones',
|
|
228
|
+
price: 279.99, // Price drop
|
|
229
|
+
rating: 4.7, // Rating improved
|
|
230
|
+
sale: true,
|
|
231
|
+
updated_at: new Date().toISOString(),
|
|
232
|
+
},
|
|
233
|
+
namespace: 'products',
|
|
234
|
+
});
|
|
235
|
+
console.log(`[TIMING] Update vector: ${(performance.now() - updateStart).toFixed(2)}ms`);
|
|
236
|
+
console.log('Update result:', JSON.stringify(updateResult, null, 2));
|
|
237
|
+
// Verify update
|
|
238
|
+
console.log('\n--- Verifying Update ---');
|
|
239
|
+
const verifyStart = performance.now();
|
|
240
|
+
const updatedProduct = await vectors.fetchOne('product-1', 'products');
|
|
241
|
+
console.log(`[TIMING] Verify update: ${(performance.now() - verifyStart).toFixed(2)}ms`);
|
|
242
|
+
console.log('Updated product-1:', JSON.stringify(updatedProduct, null, 2));
|
|
243
|
+
// ==================== LIST OPERATIONS ====================
|
|
244
|
+
console.log('\n--- Listing Vectors ---');
|
|
245
|
+
const listStart = performance.now();
|
|
246
|
+
const listResult = await vectors.list({
|
|
247
|
+
namespace: 'products',
|
|
248
|
+
limit: 10,
|
|
249
|
+
});
|
|
250
|
+
console.log(`[TIMING] List vectors: ${(performance.now() - listStart).toFixed(2)}ms`);
|
|
251
|
+
console.log('Listed vectors:', JSON.stringify(listResult, null, 2));
|
|
252
|
+
// ==================== NAMESPACE OPERATIONS ====================
|
|
253
|
+
console.log('\n--- Listing Namespaces ---');
|
|
254
|
+
const listNsStart = performance.now();
|
|
255
|
+
const namespaces = await vectors.listNamespaces();
|
|
256
|
+
console.log(`[TIMING] List namespaces: ${(performance.now() - listNsStart).toFixed(2)}ms`);
|
|
257
|
+
console.log('Namespaces:', JSON.stringify(namespaces, null, 2));
|
|
258
|
+
// ==================== STATISTICS ====================
|
|
259
|
+
console.log('\n--- Collection Statistics ---');
|
|
260
|
+
const statsStart = performance.now();
|
|
261
|
+
const stats = await vectors.getStats();
|
|
262
|
+
console.log(`[TIMING] Get stats: ${(performance.now() - statsStart).toFixed(2)}ms`);
|
|
263
|
+
console.log('Collection stats:', JSON.stringify(stats, null, 2));
|
|
264
|
+
// ==================== COUNT OPERATIONS ====================
|
|
265
|
+
console.log('\n--- Counting Vectors ---');
|
|
266
|
+
const countStart = performance.now();
|
|
267
|
+
const count = await vectors.count('products');
|
|
268
|
+
console.log(`[TIMING] Count vectors: ${(performance.now() - countStart).toFixed(2)}ms`);
|
|
269
|
+
console.log('Vector count:', count);
|
|
270
|
+
// ==================== EXISTENCE CHECK ====================
|
|
271
|
+
console.log('\n--- Checking Vector Existence ---');
|
|
272
|
+
const existsStart = performance.now();
|
|
273
|
+
const exists = await vectors.exists('product-1', 'products');
|
|
274
|
+
console.log(`[TIMING] Check exists: ${(performance.now() - existsStart).toFixed(2)}ms`);
|
|
275
|
+
console.log('Product-1 exists:', exists);
|
|
276
|
+
const notExists = await vectors.exists('product-999', 'products');
|
|
277
|
+
console.log('Product-999 exists:', notExists);
|
|
278
|
+
// ==================== INDEX INFO ====================
|
|
279
|
+
console.log('\n--- Describing Collection ---');
|
|
280
|
+
const describeStart = performance.now();
|
|
281
|
+
const collectionInfo = await vectors.describeIndex();
|
|
282
|
+
console.log(`[TIMING] Describe collection: ${(performance.now() - describeStart).toFixed(2)}ms`);
|
|
283
|
+
console.log('Collection info:', JSON.stringify(collectionInfo, null, 2));
|
|
284
|
+
// ==================== DELETE OPERATIONS ====================
|
|
285
|
+
console.log('\n--- Deleting Vectors ---');
|
|
286
|
+
// Delete by IDs
|
|
287
|
+
const deleteStart = performance.now();
|
|
288
|
+
const deleteResult = await vectors.deleteByIds(['product-1', 'product-2', 'product-3', 'product-4', 'product-5'], 'products');
|
|
289
|
+
console.log(`[TIMING] Delete vectors: ${(performance.now() - deleteStart).toFixed(2)}ms`);
|
|
290
|
+
console.log('Delete result:', JSON.stringify(deleteResult, null, 2));
|
|
291
|
+
// Verify deletion
|
|
292
|
+
console.log('\n--- Verifying Deletion ---');
|
|
293
|
+
const verifyDeleteStart = performance.now();
|
|
294
|
+
const afterDeleteCount = await vectors.count('products');
|
|
295
|
+
console.log(`[TIMING] Verify deletion: ${(performance.now() - verifyDeleteStart).toFixed(2)}ms`);
|
|
296
|
+
console.log('Remaining vectors:', afterDeleteCount);
|
|
297
|
+
// ==================== SUMMARY ====================
|
|
298
|
+
const totalTime = performance.now() - startTime;
|
|
299
|
+
console.log(`\n[TIMING SUMMARY]`);
|
|
300
|
+
console.log(` Total time: ${totalTime.toFixed(2)}ms`);
|
|
301
|
+
}
|
|
302
|
+
catch (err) {
|
|
303
|
+
console.error('Error in Qdrant operations:', err);
|
|
304
|
+
}
|
|
305
|
+
}
|
|
306
|
+
runQdrantTests();
|
|
307
|
+
//# sourceMappingURL=test.vector.qdrant.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"test.vector.qdrant.js","sourceRoot":"","sources":["../../src/test/test.vector.qdrant.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|