@mhalder/qdrant-mcp-server 1.1.1 → 1.2.0

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.
@@ -1,6 +1,6 @@
1
- import { describe, it, expect, vi, beforeEach } from "vitest";
2
- import { QdrantManager } from "./client.js";
3
1
  import { QdrantClient } from "@qdrant/js-client-rest";
2
+ import { beforeEach, describe, expect, it, vi } from "vitest";
3
+ import { QdrantManager } from "./client.js";
4
4
  vi.mock("@qdrant/js-client-rest", () => ({
5
5
  QdrantClient: vi.fn(),
6
6
  }));
@@ -40,6 +40,22 @@ describe("QdrantManager", () => {
40
40
  },
41
41
  });
42
42
  });
43
+ it("should create a hybrid collection with sparse vectors enabled", async () => {
44
+ await manager.createCollection("test-collection", 1536, "Cosine", true);
45
+ expect(mockClient.createCollection).toHaveBeenCalledWith("test-collection", {
46
+ vectors: {
47
+ dense: {
48
+ size: 1536,
49
+ distance: "Cosine",
50
+ },
51
+ },
52
+ sparse_vectors: {
53
+ text: {
54
+ modifier: "idf",
55
+ },
56
+ },
57
+ });
58
+ });
43
59
  });
44
60
  describe("collectionExists", () => {
45
61
  it("should return true if collection exists", async () => {
@@ -57,18 +73,10 @@ describe("QdrantManager", () => {
57
73
  describe("listCollections", () => {
58
74
  it("should return list of collection names", async () => {
59
75
  mockClient.getCollections.mockResolvedValue({
60
- collections: [
61
- { name: "collection1" },
62
- { name: "collection2" },
63
- { name: "collection3" },
64
- ],
76
+ collections: [{ name: "collection1" }, { name: "collection2" }, { name: "collection3" }],
65
77
  });
66
78
  const collections = await manager.listCollections();
67
- expect(collections).toEqual([
68
- "collection1",
69
- "collection2",
70
- "collection3",
71
- ]);
79
+ expect(collections).toEqual(["collection1", "collection2", "collection3"]);
72
80
  });
73
81
  it("should return empty array when no collections exist", async () => {
74
82
  mockClient.getCollections.mockResolvedValue({
@@ -98,6 +106,7 @@ describe("QdrantManager", () => {
98
106
  vectorSize: 1536,
99
107
  pointsCount: 100,
100
108
  distance: "Cosine",
109
+ hybridEnabled: false,
101
110
  });
102
111
  });
103
112
  it("should handle missing points_count", async () => {
@@ -115,6 +124,35 @@ describe("QdrantManager", () => {
115
124
  const info = await manager.getCollectionInfo("test-collection");
116
125
  expect(info.pointsCount).toBe(0);
117
126
  });
127
+ it("should return hybrid collection info with named vectors", async () => {
128
+ mockClient.getCollection.mockResolvedValue({
129
+ collection_name: "hybrid-collection",
130
+ points_count: 50,
131
+ config: {
132
+ params: {
133
+ vectors: {
134
+ dense: {
135
+ size: 768,
136
+ distance: "Cosine",
137
+ },
138
+ },
139
+ sparse_vectors: {
140
+ text: {
141
+ modifier: "idf",
142
+ },
143
+ },
144
+ },
145
+ },
146
+ });
147
+ const info = await manager.getCollectionInfo("hybrid-collection");
148
+ expect(info).toEqual({
149
+ name: "hybrid-collection",
150
+ vectorSize: 768,
151
+ pointsCount: 50,
152
+ distance: "Cosine",
153
+ hybridEnabled: true,
154
+ });
155
+ });
118
156
  });
119
157
  describe("deleteCollection", () => {
120
158
  it("should delete a collection", async () => {
@@ -163,9 +201,7 @@ describe("QdrantManager", () => {
163
201
  });
164
202
  it("should preserve UUID format IDs without modification", async () => {
165
203
  const uuidId = "123e4567-e89b-12d3-a456-426614174000";
166
- const points = [
167
- { id: uuidId, vector: [0.1, 0.2, 0.3], payload: { text: "test" } },
168
- ];
204
+ const points = [{ id: uuidId, vector: [0.1, 0.2, 0.3], payload: { text: "test" } }];
169
205
  await manager.addPoints("test-collection", points);
170
206
  // UUID should remain unchanged
171
207
  expect(mockClient.upsert).toHaveBeenCalledWith("test-collection", {
@@ -202,6 +238,21 @@ describe("QdrantManager", () => {
202
238
  });
203
239
  });
204
240
  describe("search", () => {
241
+ beforeEach(() => {
242
+ // Mock getCollection for standard collection by default
243
+ mockClient.getCollection.mockResolvedValue({
244
+ collection_name: "test-collection",
245
+ points_count: 100,
246
+ config: {
247
+ params: {
248
+ vectors: {
249
+ size: 768,
250
+ distance: "Cosine",
251
+ },
252
+ },
253
+ },
254
+ });
255
+ });
205
256
  it("should search for similar vectors", async () => {
206
257
  mockClient.search.mockResolvedValue([
207
258
  { id: 1, score: 0.95, payload: { text: "result1" } },
@@ -286,18 +337,67 @@ describe("QdrantManager", () => {
286
337
  });
287
338
  });
288
339
  it("should handle null payload in results", async () => {
289
- mockClient.search.mockResolvedValue([
290
- { id: 1, score: 0.95, payload: null },
291
- ]);
340
+ mockClient.search.mockResolvedValue([{ id: 1, score: 0.95, payload: null }]);
292
341
  const results = await manager.search("test-collection", [0.1, 0.2, 0.3]);
293
342
  expect(results).toEqual([{ id: 1, score: 0.95, payload: undefined }]);
294
343
  });
344
+ it("should use named vector for hybrid-enabled collections", async () => {
345
+ // Mock getCollectionInfo to return hybrid enabled collection
346
+ mockClient.getCollection.mockResolvedValue({
347
+ collection_name: "hybrid-collection",
348
+ points_count: 10,
349
+ config: {
350
+ params: {
351
+ vectors: {
352
+ dense: {
353
+ size: 768,
354
+ distance: "Cosine",
355
+ },
356
+ },
357
+ sparse_vectors: {
358
+ text: {
359
+ modifier: "idf",
360
+ },
361
+ },
362
+ },
363
+ },
364
+ });
365
+ mockClient.search.mockResolvedValue([{ id: 1, score: 0.95, payload: { text: "result1" } }]);
366
+ const results = await manager.search("hybrid-collection", [0.1, 0.2, 0.3], 5);
367
+ expect(results).toEqual([{ id: 1, score: 0.95, payload: { text: "result1" } }]);
368
+ expect(mockClient.search).toHaveBeenCalledWith("hybrid-collection", {
369
+ vector: { name: "dense", vector: [0.1, 0.2, 0.3] },
370
+ limit: 5,
371
+ filter: undefined,
372
+ });
373
+ });
374
+ it("should use unnamed vector for standard collections", async () => {
375
+ // Mock getCollectionInfo to return standard collection (no sparse vectors)
376
+ mockClient.getCollection.mockResolvedValue({
377
+ collection_name: "standard-collection",
378
+ points_count: 10,
379
+ config: {
380
+ params: {
381
+ vectors: {
382
+ size: 768,
383
+ distance: "Cosine",
384
+ },
385
+ },
386
+ },
387
+ });
388
+ mockClient.search.mockResolvedValue([{ id: 1, score: 0.95, payload: { text: "result1" } }]);
389
+ const results = await manager.search("standard-collection", [0.1, 0.2, 0.3], 5);
390
+ expect(results).toEqual([{ id: 1, score: 0.95, payload: { text: "result1" } }]);
391
+ expect(mockClient.search).toHaveBeenCalledWith("standard-collection", {
392
+ vector: [0.1, 0.2, 0.3],
393
+ limit: 5,
394
+ filter: undefined,
395
+ });
396
+ });
295
397
  });
296
398
  describe("getPoint", () => {
297
399
  it("should retrieve a point by id", async () => {
298
- mockClient.retrieve.mockResolvedValue([
299
- { id: 1, payload: { text: "test" } },
300
- ]);
400
+ mockClient.retrieve.mockResolvedValue([{ id: 1, payload: { text: "test" } }]);
301
401
  const point = await manager.getPoint("test-collection", 1);
302
402
  expect(point).toEqual({ id: 1, payload: { text: "test" } });
303
403
  expect(mockClient.retrieve).toHaveBeenCalledWith("test-collection", {
@@ -336,5 +436,313 @@ describe("QdrantManager", () => {
336
436
  });
337
437
  });
338
438
  });
439
+ describe("hybridSearch", () => {
440
+ beforeEach(() => {
441
+ mockClient.query = vi.fn();
442
+ });
443
+ it("should perform hybrid search with dense and sparse vectors", async () => {
444
+ const denseVector = [0.1, 0.2, 0.3];
445
+ const sparseVector = { indices: [1, 5, 10], values: [0.5, 0.3, 0.2] };
446
+ mockClient.query.mockResolvedValue({
447
+ points: [
448
+ { id: 1, score: 0.95, payload: { text: "result1" } },
449
+ { id: 2, score: 0.85, payload: { text: "result2" } },
450
+ ],
451
+ });
452
+ const results = await manager.hybridSearch("test-collection", denseVector, sparseVector);
453
+ expect(results).toEqual([
454
+ { id: 1, score: 0.95, payload: { text: "result1" } },
455
+ { id: 2, score: 0.85, payload: { text: "result2" } },
456
+ ]);
457
+ expect(mockClient.query).toHaveBeenCalledWith("test-collection", {
458
+ prefetch: [
459
+ {
460
+ query: denseVector,
461
+ using: "dense",
462
+ limit: 20,
463
+ filter: undefined,
464
+ },
465
+ {
466
+ query: sparseVector,
467
+ using: "text",
468
+ limit: 20,
469
+ filter: undefined,
470
+ },
471
+ ],
472
+ query: {
473
+ fusion: "rrf",
474
+ },
475
+ limit: 5,
476
+ with_payload: true,
477
+ });
478
+ });
479
+ it("should use custom limit with appropriate prefetch limit", async () => {
480
+ const denseVector = [0.1, 0.2, 0.3];
481
+ const sparseVector = { indices: [1, 5], values: [0.5, 0.3] };
482
+ mockClient.query.mockResolvedValue({ points: [] });
483
+ await manager.hybridSearch("test-collection", denseVector, sparseVector, 10);
484
+ expect(mockClient.query).toHaveBeenCalledWith("test-collection", expect.objectContaining({
485
+ prefetch: expect.arrayContaining([
486
+ expect.objectContaining({ limit: 40 }), // 10 * 4
487
+ ]),
488
+ limit: 10,
489
+ }));
490
+ });
491
+ it("should convert simple filter to Qdrant format", async () => {
492
+ const denseVector = [0.1, 0.2, 0.3];
493
+ const sparseVector = { indices: [1], values: [0.5] };
494
+ const filter = { category: "test", type: "doc" };
495
+ mockClient.query.mockResolvedValue({ points: [] });
496
+ await manager.hybridSearch("test-collection", denseVector, sparseVector, 5, filter);
497
+ expect(mockClient.query).toHaveBeenCalledWith("test-collection", {
498
+ prefetch: [
499
+ {
500
+ query: denseVector,
501
+ using: "dense",
502
+ limit: 20,
503
+ filter: {
504
+ must: [
505
+ { key: "category", match: { value: "test" } },
506
+ { key: "type", match: { value: "doc" } },
507
+ ],
508
+ },
509
+ },
510
+ {
511
+ query: sparseVector,
512
+ using: "text",
513
+ limit: 20,
514
+ filter: {
515
+ must: [
516
+ { key: "category", match: { value: "test" } },
517
+ { key: "type", match: { value: "doc" } },
518
+ ],
519
+ },
520
+ },
521
+ ],
522
+ query: {
523
+ fusion: "rrf",
524
+ },
525
+ limit: 5,
526
+ with_payload: true,
527
+ });
528
+ });
529
+ it("should handle Qdrant format filter (must)", async () => {
530
+ const denseVector = [0.1, 0.2, 0.3];
531
+ const sparseVector = { indices: [1], values: [0.5] };
532
+ const filter = { must: [{ key: "status", match: { value: "active" } }] };
533
+ mockClient.query.mockResolvedValue({ points: [] });
534
+ await manager.hybridSearch("test-collection", denseVector, sparseVector, 5, filter);
535
+ const call = mockClient.query.mock.calls[0][1];
536
+ expect(call.prefetch[0].filter).toEqual(filter);
537
+ expect(call.prefetch[1].filter).toEqual(filter);
538
+ });
539
+ it("should handle Qdrant format filter (should)", async () => {
540
+ const denseVector = [0.1, 0.2, 0.3];
541
+ const sparseVector = { indices: [1], values: [0.5] };
542
+ const filter = { should: [{ key: "tag", match: { value: "important" } }] };
543
+ mockClient.query.mockResolvedValue({ points: [] });
544
+ await manager.hybridSearch("test-collection", denseVector, sparseVector, 5, filter);
545
+ const call = mockClient.query.mock.calls[0][1];
546
+ expect(call.prefetch[0].filter).toEqual(filter);
547
+ expect(call.prefetch[1].filter).toEqual(filter);
548
+ });
549
+ it("should handle Qdrant format filter (must_not)", async () => {
550
+ const denseVector = [0.1, 0.2, 0.3];
551
+ const sparseVector = { indices: [1], values: [0.5] };
552
+ const filter = { must_not: [{ key: "status", match: { value: "deleted" } }] };
553
+ mockClient.query.mockResolvedValue({ points: [] });
554
+ await manager.hybridSearch("test-collection", denseVector, sparseVector, 5, filter);
555
+ const call = mockClient.query.mock.calls[0][1];
556
+ expect(call.prefetch[0].filter).toEqual(filter);
557
+ expect(call.prefetch[1].filter).toEqual(filter);
558
+ });
559
+ it("should handle empty filter object", async () => {
560
+ const denseVector = [0.1, 0.2, 0.3];
561
+ const sparseVector = { indices: [1], values: [0.5] };
562
+ mockClient.query.mockResolvedValue({ points: [] });
563
+ await manager.hybridSearch("test-collection", denseVector, sparseVector, 5, {});
564
+ const call = mockClient.query.mock.calls[0][1];
565
+ expect(call.prefetch[0].filter).toBeUndefined();
566
+ expect(call.prefetch[1].filter).toBeUndefined();
567
+ });
568
+ it("should handle null payload in results", async () => {
569
+ const denseVector = [0.1, 0.2, 0.3];
570
+ const sparseVector = { indices: [1], values: [0.5] };
571
+ mockClient.query.mockResolvedValue({
572
+ points: [{ id: 1, score: 0.95, payload: null }],
573
+ });
574
+ const results = await manager.hybridSearch("test-collection", denseVector, sparseVector);
575
+ expect(results).toEqual([{ id: 1, score: 0.95, payload: undefined }]);
576
+ });
577
+ it("should throw error with error.data.status.error message", async () => {
578
+ const denseVector = [0.1, 0.2, 0.3];
579
+ const sparseVector = { indices: [1], values: [0.5] };
580
+ mockClient.query.mockRejectedValue({
581
+ data: {
582
+ status: {
583
+ error: "Named vector not found",
584
+ },
585
+ },
586
+ });
587
+ await expect(manager.hybridSearch("test-collection", denseVector, sparseVector)).rejects.toThrow('Hybrid search failed on collection "test-collection": Named vector not found');
588
+ });
589
+ it("should throw error with error.message fallback", async () => {
590
+ const denseVector = [0.1, 0.2, 0.3];
591
+ const sparseVector = { indices: [1], values: [0.5] };
592
+ mockClient.query.mockRejectedValue(new Error("Network timeout"));
593
+ await expect(manager.hybridSearch("test-collection", denseVector, sparseVector)).rejects.toThrow('Hybrid search failed on collection "test-collection": Network timeout');
594
+ });
595
+ it("should throw error with String(error) fallback", async () => {
596
+ const denseVector = [0.1, 0.2, 0.3];
597
+ const sparseVector = { indices: [1], values: [0.5] };
598
+ mockClient.query.mockRejectedValue("Unknown error");
599
+ await expect(manager.hybridSearch("test-collection", denseVector, sparseVector)).rejects.toThrow('Hybrid search failed on collection "test-collection": Unknown error');
600
+ });
601
+ });
602
+ describe("addPointsWithSparse", () => {
603
+ it("should add points with dense and sparse vectors", async () => {
604
+ const points = [
605
+ {
606
+ id: 1,
607
+ vector: [0.1, 0.2, 0.3],
608
+ sparseVector: { indices: [1, 5], values: [0.5, 0.3] },
609
+ payload: { text: "test" },
610
+ },
611
+ {
612
+ id: 2,
613
+ vector: [0.4, 0.5, 0.6],
614
+ sparseVector: { indices: [2, 8], values: [0.4, 0.6] },
615
+ payload: { text: "test2" },
616
+ },
617
+ ];
618
+ await manager.addPointsWithSparse("test-collection", points);
619
+ expect(mockClient.upsert).toHaveBeenCalledWith("test-collection", {
620
+ wait: true,
621
+ points: [
622
+ {
623
+ id: 1,
624
+ vector: {
625
+ dense: [0.1, 0.2, 0.3],
626
+ text: { indices: [1, 5], values: [0.5, 0.3] },
627
+ },
628
+ payload: { text: "test" },
629
+ },
630
+ {
631
+ id: 2,
632
+ vector: {
633
+ dense: [0.4, 0.5, 0.6],
634
+ text: { indices: [2, 8], values: [0.4, 0.6] },
635
+ },
636
+ payload: { text: "test2" },
637
+ },
638
+ ],
639
+ });
640
+ });
641
+ it("should add points without payload", async () => {
642
+ const points = [
643
+ {
644
+ id: 1,
645
+ vector: [0.1, 0.2, 0.3],
646
+ sparseVector: { indices: [1], values: [0.5] },
647
+ },
648
+ ];
649
+ await manager.addPointsWithSparse("test-collection", points);
650
+ expect(mockClient.upsert).toHaveBeenCalledWith("test-collection", {
651
+ wait: true,
652
+ points: [
653
+ {
654
+ id: 1,
655
+ vector: {
656
+ dense: [0.1, 0.2, 0.3],
657
+ text: { indices: [1], values: [0.5] },
658
+ },
659
+ payload: undefined,
660
+ },
661
+ ],
662
+ });
663
+ });
664
+ it("should normalize string IDs to UUID format", async () => {
665
+ const points = [
666
+ {
667
+ id: "my-doc-id",
668
+ vector: [0.1, 0.2, 0.3],
669
+ sparseVector: { indices: [1], values: [0.5] },
670
+ payload: { text: "test" },
671
+ },
672
+ ];
673
+ await manager.addPointsWithSparse("test-collection", points);
674
+ const calls = mockClient.upsert.mock.calls;
675
+ expect(calls).toHaveLength(1);
676
+ expect(calls[0][0]).toBe("test-collection");
677
+ const normalizedId = calls[0][1].points[0].id;
678
+ // Check that it's a valid UUID format
679
+ expect(normalizedId).toMatch(/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i);
680
+ expect(normalizedId).not.toBe("my-doc-id");
681
+ });
682
+ it("should preserve UUID format IDs without modification", async () => {
683
+ const uuidId = "123e4567-e89b-12d3-a456-426614174000";
684
+ const points = [
685
+ {
686
+ id: uuidId,
687
+ vector: [0.1, 0.2, 0.3],
688
+ sparseVector: { indices: [1], values: [0.5] },
689
+ payload: { text: "test" },
690
+ },
691
+ ];
692
+ await manager.addPointsWithSparse("test-collection", points);
693
+ expect(mockClient.upsert).toHaveBeenCalledWith("test-collection", {
694
+ wait: true,
695
+ points: [
696
+ {
697
+ id: uuidId,
698
+ vector: {
699
+ dense: [0.1, 0.2, 0.3],
700
+ text: { indices: [1], values: [0.5] },
701
+ },
702
+ payload: { text: "test" },
703
+ },
704
+ ],
705
+ });
706
+ });
707
+ it("should throw error with error.data.status.error message", async () => {
708
+ const points = [
709
+ {
710
+ id: 1,
711
+ vector: [0.1, 0.2, 0.3],
712
+ sparseVector: { indices: [1], values: [0.5] },
713
+ },
714
+ ];
715
+ mockClient.upsert.mockRejectedValue({
716
+ data: {
717
+ status: {
718
+ error: "Sparse vector not configured",
719
+ },
720
+ },
721
+ });
722
+ await expect(manager.addPointsWithSparse("test-collection", points)).rejects.toThrow('Failed to add points with sparse vectors to collection "test-collection": Sparse vector not configured');
723
+ });
724
+ it("should throw error with error.message fallback", async () => {
725
+ const points = [
726
+ {
727
+ id: 1,
728
+ vector: [0.1, 0.2, 0.3],
729
+ sparseVector: { indices: [1], values: [0.5] },
730
+ },
731
+ ];
732
+ mockClient.upsert.mockRejectedValue(new Error("Connection refused"));
733
+ await expect(manager.addPointsWithSparse("test-collection", points)).rejects.toThrow('Failed to add points with sparse vectors to collection "test-collection": Connection refused');
734
+ });
735
+ it("should throw error with String(error) fallback", async () => {
736
+ const points = [
737
+ {
738
+ id: 1,
739
+ vector: [0.1, 0.2, 0.3],
740
+ sparseVector: { indices: [1], values: [0.5] },
741
+ },
742
+ ];
743
+ mockClient.upsert.mockRejectedValue("Unexpected error");
744
+ await expect(manager.addPointsWithSparse("test-collection", points)).rejects.toThrow('Failed to add points with sparse vectors to collection "test-collection": Unexpected error');
745
+ });
746
+ });
339
747
  });
340
748
  //# sourceMappingURL=client.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"client.test.js","sourceRoot":"","sources":["../../src/qdrant/client.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"client.test.js","sourceRoot":"","sources":["../../src/qdrant/client.test.ts"],"names":[],"mappings":"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"}
@@ -31,6 +31,21 @@ Configure MCP server as described in [main README](../README.md).
31
31
 
32
32
  ---
33
33
 
34
+ ### 🔀 [Hybrid Search](./hybrid-search/)
35
+
36
+ Combine semantic and keyword search for better results
37
+
38
+ - Understanding hybrid search benefits
39
+ - Creating hybrid-enabled collections
40
+ - Comparing semantic vs hybrid search
41
+ - Best practices for technical content
42
+
43
+ **Use cases:** Technical docs, product search, legal documents, code search
44
+
45
+ **Time:** 15-20 minutes | **Difficulty:** Intermediate
46
+
47
+ ---
48
+
34
49
  ### ⚡ [Rate Limiting](./rate-limiting/)
35
50
 
36
51
  Automatic rate limit handling for batch operations
@@ -77,7 +92,7 @@ Complex search filters with boolean logic
77
92
  ## Learning Path
78
93
 
79
94
  ```
80
- Basic → Rate Limiting → Knowledge Base → Advanced Filtering
95
+ Basic → Hybrid Search → Rate Limiting → Knowledge Base → Advanced Filtering
81
96
  ```
82
97
 
83
98
  ## Common Patterns
@@ -52,6 +52,7 @@ Delete collection "my-first-collection"
52
52
 
53
53
  Continue learning with these examples:
54
54
 
55
+ - **[Hybrid Search](../hybrid-search/)** - Combine semantic and keyword search
55
56
  - **[Knowledge Base](../knowledge-base/)** - Metadata and content organization
56
57
  - **[Advanced Filtering](../filters/)** - Complex search queries
57
58
  - **[Rate Limiting](../rate-limiting/)** - Batch processing patterns