forked from trpc-group/trpc-agent-go
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathsqlitevec_memory_impl.go
More file actions
78 lines (68 loc) · 1.71 KB
/
Copy pathsqlitevec_memory_impl.go
File metadata and controls
78 lines (68 loc) · 1.71 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
//
// Tencent is pleased to support the open source community by making trpc-agent-go available.
//
// Copyright (C) 2025 Tencent. All rights reserved.
//
// trpc-agent-go is licensed under the Apache License Version 2.0.
//
//
//go:build cgo && sqliteveccgo
package util
import (
"database/sql"
openaiembedder "trpc.group/trpc-go/trpc-agent-go/knowledge/embedder/openai"
"trpc.group/trpc-go/trpc-agent-go/memory"
memorysqlitevec "trpc.group/trpc-go/trpc-agent-go/memory/sqlitevec"
)
func newSQLiteVecMemoryService(
cfg MemoryServiceConfig,
) (memory.Service, error) {
dsn := GetEnvOrDefault(
sqliteVecMemoryDSNEnvKey,
defaultSQLiteVecMemoryDBDSN,
)
db, err := sql.Open(sqliteDriverName, dsn)
if err != nil {
return nil, err
}
db.SetMaxOpenConns(defaultSQLiteMaxOpenConns)
db.SetMaxIdleConns(defaultSQLiteMaxIdleConns)
embedderModel := GetEnvOrDefault(
sqliteVecEmbedderModelEnvKey,
openaiembedder.DefaultModel,
)
emb := newOpenAIEmbedder(embedderModel)
opts := []memorysqlitevec.ServiceOpt{
memorysqlitevec.WithEmbedder(emb),
memorysqlitevec.WithSoftDelete(cfg.SoftDelete),
}
if cfg.Extractor != nil {
opts = append(opts, memorysqlitevec.WithExtractor(cfg.Extractor))
if cfg.AsyncMemoryNum > 0 {
opts = append(
opts,
memorysqlitevec.WithAsyncMemoryNum(cfg.AsyncMemoryNum),
)
}
if cfg.MemoryQueueSize > 0 {
opts = append(
opts,
memorysqlitevec.WithMemoryQueueSize(cfg.MemoryQueueSize),
)
}
if cfg.MemoryJobTimeout > 0 {
opts = append(
opts,
memorysqlitevec.WithMemoryJobTimeout(
cfg.MemoryJobTimeout,
),
)
}
}
svc, err := memorysqlitevec.NewService(db, opts...)
if err != nil {
_ = db.Close()
return nil, err
}
return svc, nil
}