44 "context"
55 "database/sql"
66 "fmt"
7- "strconv"
87 "strings"
98 "time"
109
@@ -52,19 +51,17 @@ type DiaryEmbeddingStatus struct {
5251 ChunkModelVersion string
5352 CreatedAt time.Time
5453 UpdatedAt time.Time
55- // 最初のチャンクのベクトル値(デバッグ用)
56- EmbeddingValues []float32
5754 // チャンク総数
5855 ChunkCount int
5956 // 各チャンクの概要(chunk_index順)
6057 ChunkSummaries []string
6158}
6259
6360// GetDiaryEmbeddingStatus は指定された日記のRAGインデックス状態を返す
64- // 全チャンクのsummaryとchunk_index=0のベクトル値を返す
61+ // 全チャンクのsummaryを返す(ベクトル値は返さない)
6562func GetDiaryEmbeddingStatus (ctx context.Context , db DB , diaryID , userID uuid.UUID ) (* DiaryEmbeddingStatus , error ) {
6663 query := `
67- SELECT model_version, chunk_model_version, created_at, updated_at, embedding::text, chunk_summary
64+ SELECT model_version, chunk_model_version, created_at, updated_at, chunk_summary
6865 FROM diary_embeddings
6966 WHERE diary_id = $1 AND user_id = $2
7067 ORDER BY chunk_index ASC
@@ -81,24 +78,22 @@ func GetDiaryEmbeddingStatus(ctx context.Context, db DB, diaryID, userID uuid.UU
8178 var (
8279 modelVersion , chunkModelVersion string
8380 createdAt , updatedAt time.Time
84- embeddingValues []float32
8581 chunkSummaries []string
8682 )
8783 first := true
8884
8985 for rows .Next () {
90- var embStr , chunkSummary string
86+ var chunkSummary string
9187 var mv , cmv string
9288 var cat , uat time.Time
93- if err := rows .Scan (& mv , & cmv , & cat , & uat , & embStr , & chunkSummary ); err != nil {
89+ if err := rows .Scan (& mv , & cmv , & cat , & uat , & chunkSummary ); err != nil {
9490 return nil , fmt .Errorf ("failed to scan diary embedding status: %w" , err )
9591 }
9692 if first {
9793 modelVersion = mv
9894 chunkModelVersion = cmv
9995 createdAt = cat
10096 updatedAt = uat
101- embeddingValues = parseEmbeddingString (embStr )
10297 first = false
10398 }
10499 chunkSummaries = append (chunkSummaries , chunkSummary )
@@ -118,32 +113,11 @@ func GetDiaryEmbeddingStatus(ctx context.Context, db DB, diaryID, userID uuid.UU
118113 ChunkModelVersion : chunkModelVersion ,
119114 CreatedAt : createdAt ,
120115 UpdatedAt : updatedAt ,
121- EmbeddingValues : embeddingValues ,
122116 ChunkCount : len (chunkSummaries ),
123117 ChunkSummaries : chunkSummaries ,
124118 }, nil
125119}
126120
127- // parseEmbeddingString はpgvectorの文字列表現をfloat32スライスに変換する
128- // pgvectorは "[v1,v2,...,vn]" 形式で返す(科学表記も含む)
129- func parseEmbeddingString (s string ) []float32 {
130- s = strings .TrimPrefix (s , "[" )
131- s = strings .TrimSuffix (s , "]" )
132- if s == "" {
133- return nil
134- }
135- parts := strings .Split (s , "," )
136- values := make ([]float32 , 0 , len (parts ))
137- for _ , p := range parts {
138- p = strings .TrimSpace (p )
139- f , err := strconv .ParseFloat (p , 32 )
140- if err == nil {
141- values = append (values , float32 (f ))
142- }
143- }
144- return values
145- }
146-
147121// embeddingToSQL はfloat32スライスをpgvector形式の文字列に変換する
148122func embeddingToSQL (v []float32 ) string {
149123 parts := make ([]string , len (v ))
0 commit comments