Skip to content

Commit 1c38873

Browse files
committed
fixed preFilter formatting
1 parent 851289e commit 1c38873

File tree

2 files changed

+22
-14
lines changed

2 files changed

+22
-14
lines changed

src/Core/Query/Helper.php

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -574,13 +574,13 @@ protected function renderPlaceHolder(array $matches): string
574574
* @param string $field
575575
* @param float[] $vector
576576
* @param int|null $topK
577-
* @param string|null $preFilter
577+
* @param array|string|null $preFilter
578578
* @param array|string|null $includeTags
579579
* @param array|string|null $excludeTags
580580
*
581581
* @return string
582582
*/
583-
public function knn(string $field, array $vector, ?int $topK = null, ?string $preFilter = null, array|string|null $includeTags = null, array|string|null $excludeTags = null): string
583+
public function knn(string $field, array $vector, ?int $topK = null, array|string|null $preFilter = null, array|string|null $includeTags = null, array|string|null $excludeTags = null): string
584584
{
585585
$params = $this->getCommonVectorParams($field, $preFilter, $includeTags, $excludeTags);
586586
if (null !== $topK) {
@@ -605,13 +605,13 @@ public function knn(string $field, array $vector, ?int $topK = null, ?string $pr
605605
* @param string $field
606606
* @param string $query
607607
* @param int|null $topK
608-
* @param string|null $preFilter
608+
* @param array|string|null $preFilter
609609
* @param array|string|null $includeTags
610610
* @param array|string|null $excludeTags
611611
*
612612
* @return string
613613
*/
614-
public function knnTextToVector(string $model, string $field, string $query, ?int $topK = null, ?string $preFilter = null, array|string|null $includeTags = null, array|string|null $excludeTags = null): string
614+
public function knnTextToVector(string $model, string $field, string $query, ?int $topK = null, array|string|null $preFilter = null, array|string|null $includeTags = null, array|string|null $excludeTags = null): string
615615
{
616616
$params = $this->getCommonVectorParams($field, $preFilter, $includeTags, $excludeTags);
617617
$params['model'] = $model;
@@ -635,13 +635,13 @@ public function knnTextToVector(string $model, string $field, string $query, ?in
635635
* @param float[] $vector
636636
* @param float $minReturn
637637
* @param string $minTraverse
638-
* @param string|null $preFilter
638+
* @param array|string|null $preFilter
639639
* @param array|string|null $includeTags
640640
* @param array|string|null $excludeTags
641641
*
642642
* @return string
643643
*/
644-
public function vectorSimilarity(string $field, array $vector, float $minReturn, string $minTraverse = '-Infinity', ?string $preFilter = null, array|string|null $includeTags = null, array|string|null $excludeTags = null): string
644+
public function vectorSimilarity(string $field, array $vector, float $minReturn, string $minTraverse = '-Infinity', array|string|null $preFilter = null, array|string|null $includeTags = null, array|string|null $excludeTags = null): string
645645
{
646646
$params = $this->getCommonVectorParams($field, $preFilter, $includeTags, $excludeTags);
647647
$params['minReturn'] = $minReturn;
@@ -657,18 +657,21 @@ public function vectorSimilarity(string $field, array $vector, float $minReturn,
657657
* Get common knn and vector filter parameters.
658658
*
659659
* @param string $field
660-
* @param string|null $preFilter
660+
* @param array|string|null $preFilter
661661
* @param array|string|null $includeTags
662662
* @param array|string|null $excludeTags
663663
*
664664
* @return array
665665
*/
666-
protected function getCommonVectorParams (string $field, ?string $preFilter = null, array|string|null $includeTags = null, array|string|null $excludeTags = null): array
666+
protected function getCommonVectorParams (string $field, array|string|null $preFilter = null, array|string|null $includeTags = null, array|string|null $excludeTags = null): array
667667
{
668668
$params = [
669669
'f' => $field,
670670
];
671671
if (null !== $preFilter) {
672+
if (\is_array($preFilter)) {
673+
$preFilter = implode(' preFilter=', $preFilter);
674+
}
672675
$params['preFilter'] = $preFilter;
673676
}
674677
if (null !== $includeTags) {

tests/Core/Query/HelperTest.php

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -771,8 +771,13 @@ public function testKnn(): void
771771
);
772772

773773
$this->assertSame(
774-
'{!knn f=vector preFilter=category:AAA preFilter=inStock:true topK=10}[1.0, 2.0, 3.0, 4.0]',
775-
$this->helper->knn('vector', [1.0, 2.0, 3.0, 4.0], 10, 'category:AAA', 'inStock:true')
774+
'{!knn f=vector preFilter=category:AAA includeTags=tagA excludeTags=tagB topK=10}[1.0, 2.0, 3.0, 4.0]',
775+
$this->helper->knn('vector', [1.0, 2.0, 3.0, 4.0], 10, 'category:AAA', 'tagA', 'tagB')
776+
);
777+
778+
$this->assertSame(
779+
'{!knn f=vector preFilter=category:AAA preFilter=inStock:true includeTags=tagA,tagB topK=10}[1.0, 2.0, 3.0, 4.0]',
780+
$this->helper->knn('vector', [1.0, 2.0, 3.0, 4.0], 10, ['category:AAA', 'inStock:true'], ['tagA', 'tagB'])
776781
);
777782
}
778783

@@ -784,8 +789,8 @@ public function testKnnTextToVector(): void
784789
);
785790

786791
$this->assertSame(
787-
'{!knn_text_to_vector f=vector preFilter=category:AAA preFilter=inStock:true model=a-model topK=10}hello world query',
788-
$this->helper->knnTextToVector('a-model', 'vector', 'hello world query', 10, 'category:AAA', 'inStock:true')
792+
'{!knn_text_to_vector f=vector preFilter=category:AAA model=a-model topK=10}hello world query',
793+
$this->helper->knnTextToVector('a-model', 'vector', 'hello world query', 10, 'category:AAA')
789794
);
790795
}
791796

@@ -797,8 +802,8 @@ public function testVectorSimilarity(): void
797802
);
798803

799804
$this->assertSame(
800-
'{!vectorSimilarity f=vector preFilter=category:AAA preFilter=inStock:true minReturn=0.7 minTraverse=-Infinity}[1.0, 2.0, 3.0, 4.0]',
801-
$this->helper->vectorSimilarity('vector', [1.0, 2.0, 3.0, 4.0], 0.7, '-Infinity', 'category:AAA', 'inStock:true')
805+
'{!vectorSimilarity f=vector preFilter=category:AAA minReturn=0.7 minTraverse=-Infinity}[1.0, 2.0, 3.0, 4.0]',
806+
$this->helper->vectorSimilarity('vector', [1.0, 2.0, 3.0, 4.0], 0.7, '-Infinity', 'category:AAA')
802807
);
803808
}
804809
}

0 commit comments

Comments
 (0)