Skip to content

Commit 42c9b2b

Browse files
committed
createCollection request config sets
1 parent bc78262 commit 42c9b2b

2 files changed

Lines changed: 98 additions & 1 deletion

File tree

src/Models/Request/CreateCollection.php

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
use Qdrant\Models\Request\CollectionConfig\HnswConfig;
1313
use Qdrant\Models\Request\CollectionConfig\OptimizersConfigDiff;
1414
use Qdrant\Models\Request\CollectionConfig\QuantizationConfig;
15+
use Qdrant\Models\Request\CollectionConfig\WalConfig;
1516

1617
class CreateCollection implements RequestModel
1718
{
@@ -32,6 +33,8 @@ class CreateCollection implements RequestModel
3233

3334
protected ?HnswConfig $hnswConfig = null;
3435

36+
protected ?WalConfig $walConfig = null;
37+
3538
protected ?QuantizationConfig $quantizationConfig = null;
3639

3740
public function addVector(VectorParams $vectorParams, string $name = null): CreateCollection
@@ -87,6 +90,20 @@ public function setOptimizersConfigDiff(OptimizersConfigDiff $optimizersConfig):
8790
return $this;
8891
}
8992

93+
public function setHnswConfig(HnswConfig $hnswConfig): CreateCollection
94+
{
95+
$this->hnswConfig = $hnswConfig;
96+
97+
return $this;
98+
}
99+
100+
public function setWalConfig(WalConfig $walConfig): CreateCollection
101+
{
102+
$this->walConfig = $walConfig;
103+
104+
return $this;
105+
}
106+
90107
public function setQuantizationConfig(QuantizationConfig $quantizationConfig): CreateCollection
91108
{
92109
$this->quantizationConfig = $quantizationConfig;
@@ -121,6 +138,9 @@ public function toArray(): array
121138
if ($this->hnswConfig !== null) {
122139
$data['hnsw_config'] = $this->hnswConfig->toArray();
123140
}
141+
if ($this->walConfig !== null) {
142+
$data['wal_config'] = $this->walConfig->toArray();
143+
}
124144

125145
if ($this->quantizationConfig instanceof DisabledQuantization) {
126146
$data['quantization_config'] = 'Disabled';

tests/Unit/Models/Request/CreateCollectionTest.php

Lines changed: 78 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,9 @@
66
namespace Qdrant\Tests\Unit\Models\Request;
77

88
use PHPUnit\Framework\TestCase;
9+
use Qdrant\Models\Request\CollectionConfig\HnswConfig;
10+
use Qdrant\Models\Request\CollectionConfig\OptimizersConfigDiff;
11+
use Qdrant\Models\Request\CollectionConfig\WalConfig;
912
use Qdrant\Models\Request\CreateCollection;
1013
use Qdrant\Models\Request\VectorParams;
1114

@@ -16,7 +19,6 @@ public function testCreateCollectionWithVector(): void
1619
$collection = new CreateCollection();
1720
$collection->addVector(new VectorParams(1024, VectorParams::DISTANCE_COSINE), 'image');
1821

19-
2022
$this->assertEquals(
2123
[
2224
'vectors' => [
@@ -140,4 +142,79 @@ public function testCreateCollectionWithOnDiskPayload(): void
140142
$collection->toArray()
141143
);
142144
}
145+
146+
public function testCreateCollectionWithOptimizersConfigDiff(): void
147+
{
148+
$collection = new CreateCollection();
149+
$collection->addVector(new VectorParams(1024, VectorParams::DISTANCE_COSINE));
150+
$diff = (new OptimizersConfigDiff())
151+
->setMaxSegmentSize(1)
152+
->setDefaultSegmentNumber(1);
153+
154+
$collection->setOptimizersConfigDiff($diff);
155+
156+
$this->assertEquals(
157+
[
158+
'vectors' => [
159+
'size' => '1024',
160+
'distance' => 'Cosine'
161+
],
162+
'optimizers_config' => [
163+
'max_segment_size' => 1,
164+
'default_segment_number' => 1,
165+
]
166+
],
167+
$collection->toArray()
168+
);
169+
}
170+
171+
public function testCreateCollectionWithHnswConfig(): void
172+
{
173+
$collection = new CreateCollection();
174+
$collection->addVector(new VectorParams(1024, VectorParams::DISTANCE_COSINE));
175+
$diff = (new HnswConfig())
176+
->setM(1)
177+
->setPayloadM(1);
178+
179+
$collection->setHnswConfig($diff);
180+
181+
$this->assertEquals(
182+
[
183+
'vectors' => [
184+
'size' => '1024',
185+
'distance' => 'Cosine'
186+
],
187+
'hnsw_config' => [
188+
'm' => 1,
189+
'payload_m' => 1,
190+
]
191+
],
192+
$collection->toArray()
193+
);
194+
}
195+
196+
public function testCreateCollectionWithWalConfig(): void
197+
{
198+
$collection = new CreateCollection();
199+
$collection->addVector(new VectorParams(1024, VectorParams::DISTANCE_COSINE));
200+
$diff = (new WalConfig())
201+
->setWalSegmentsAhead(1)
202+
->setWalCapacityMb(1);
203+
204+
$collection->setWalConfig($diff);
205+
206+
$this->assertEquals(
207+
[
208+
'vectors' => [
209+
'size' => '1024',
210+
'distance' => 'Cosine'
211+
],
212+
'wal_config' => [
213+
'wal_segments_ahead' => 1,
214+
'wal_capacity_mb' => 1,
215+
]
216+
],
217+
$collection->toArray()
218+
);
219+
}
143220
}

0 commit comments

Comments
 (0)