Files
ai-agent/internal/ai/rag/vectordb/provider.go
T

88 lines
2.2 KiB
Go
Raw Normal View History

2026-04-09 10:01:23 +08:00
package vectordb
import (
"context"
"fmt"
"code.tczkiot.com/wlw/ai-agent/internal/pkg/config"
2026-04-09 10:01:23 +08:00
)
var defaultProvider Provider
func Init(cfg *config.VectorDBConfig) error {
if cfg == nil {
return fmt.Errorf("libsql vector database config is required")
2026-04-09 10:01:23 +08:00
}
provider, err := NewLibSQLProvider(cfg)
if err != nil {
return err
}
if defaultProvider != nil {
_ = defaultProvider.Close()
2026-04-09 10:01:23 +08:00
}
defaultProvider = provider
return nil
2026-04-09 10:01:23 +08:00
}
func GetProvider() Provider {
return defaultProvider
}
func Close() error {
if defaultProvider != nil {
err := defaultProvider.Close()
defaultProvider = nil
return err
2026-04-09 10:01:23 +08:00
}
return nil
}
func CreateCollection(ctx context.Context, name string, dimension int) error {
if defaultProvider == nil {
return fmt.Errorf("vectordb provider not initialized")
}
return defaultProvider.CreateCollection(ctx, name, dimension)
}
func DeleteCollection(ctx context.Context, name string) error {
if defaultProvider == nil {
return fmt.Errorf("vectordb provider not initialized")
}
return defaultProvider.DeleteCollection(ctx, name)
}
func GetCollection(ctx context.Context, name string) (*CollectionInfo, error) {
if defaultProvider == nil {
return nil, fmt.Errorf("vectordb provider not initialized")
}
return defaultProvider.GetCollection(ctx, name)
}
func ListCollections(ctx context.Context) ([]string, error) {
if defaultProvider == nil {
return nil, fmt.Errorf("vectordb provider not initialized")
}
return defaultProvider.ListCollections(ctx)
}
func UpsertVectors(ctx context.Context, collectionName string, vectors []Vector) error {
if defaultProvider == nil {
return fmt.Errorf("vectordb provider not initialized")
}
return defaultProvider.UpsertVectors(ctx, collectionName, vectors)
}
func DeleteVectors(ctx context.Context, collectionName string, ids []string) error {
if defaultProvider == nil {
return fmt.Errorf("vectordb provider not initialized")
}
return defaultProvider.DeleteVectors(ctx, collectionName, ids)
}
func Search(ctx context.Context, req *SearchRequest) ([]SearchResult, error) {
if defaultProvider == nil {
return nil, fmt.Errorf("vectordb provider not initialized")
}
return defaultProvider.Search(ctx, req)
}