@@ -615,6 +615,66 @@ func TestDeduplicater(t *testing.T) {
615
615
require .Equal (t , "vegetable" , docs [0 ].Metadata ["type" ])
616
616
}
617
617
618
+ func TestReplacement (t * testing.T ) {
619
+ t .Parallel ()
620
+ pgvectorURL := preCheckEnvSetting (t )
621
+ ctx := context .Background ()
622
+
623
+ llm , err := openai .New ()
624
+ require .NoError (t , err )
625
+ e , err := embeddings .NewEmbedder (llm )
626
+ require .NoError (t , err )
627
+
628
+ conn , err := pgx .Connect (ctx , pgvectorURL )
629
+ require .NoError (t , err )
630
+
631
+ store , err := pgvector .New (
632
+ ctx ,
633
+ pgvector .WithConn (conn ),
634
+ pgvector .WithEmbedder (e ),
635
+ )
636
+ require .NoError (t , err )
637
+
638
+ defer cleanupTestArtifacts (ctx , t , store , pgvectorURL )
639
+
640
+ _ , err = store .AddDocuments (context .Background (), []schema.Document {
641
+ {PageContent : "Math" , Metadata : map [string ]any {
642
+ "courseID" : "foo" ,
643
+ }},
644
+ {PageContent : "Physics" , Metadata : map [string ]any {
645
+ "courseID" : "bar" ,
646
+ }},
647
+ })
648
+ require .NoError (t , err )
649
+
650
+ _ , err = store .AddDocuments (context .Background (), []schema.Document {
651
+ {PageContent : "Discrete Math" , Metadata : map [string ]any {
652
+ "courseID" : "foo" ,
653
+ }},
654
+ }, vectorstores .WithReplacement (true ))
655
+ require .NoError (t , err )
656
+
657
+ docs , err := store .Search (ctx , 2 , vectorstores .WithFilters (map [string ]any {
658
+ "courseID" : "foo" ,
659
+ }))
660
+ require .NoError (t , err )
661
+ require .Len (t , docs , 1 )
662
+ require .Equal (t , "Discrete Math" , docs [0 ].PageContent )
663
+
664
+ _ , err = store .AddDocuments (context .Background (), []schema.Document {
665
+ {PageContent : "Calculus" , Metadata : map [string ]any {
666
+ "courseID" : "foo" ,
667
+ }},
668
+ }, vectorstores .WithReplacement (false ))
669
+ require .NoError (t , err )
670
+
671
+ docs , err = store .Search (ctx , 2 , vectorstores .WithFilters (map [string ]any {
672
+ "courseID" : "foo" ,
673
+ }))
674
+ require .NoError (t , err )
675
+ require .Len (t , docs , 2 )
676
+ }
677
+
618
678
func TestWithAllOptions (t * testing.T ) {
619
679
t .Parallel ()
620
680
pgvectorURL := preCheckEnvSetting (t )
0 commit comments