detectDuplicates 检测重复记忆
(memories []MemoryWithScore)
| 146 | |
| 147 | // detectDuplicates 检测重复记忆 |
| 148 | func (qa *QualityAnalyzer) detectDuplicates(memories []MemoryWithScore) []Inconsistency { |
| 149 | inconsistencies := []Inconsistency{} |
| 150 | |
| 151 | for i := range memories { |
| 152 | for j := i + 1; j < len(memories); j++ { |
| 153 | similarity := qa.calculateSimilarity(memories[i].Text, memories[j].Text) |
| 154 | |
| 155 | // 相似度 > 0.9 认为是重复 |
| 156 | if similarity > 0.9 { |
| 157 | inconsistencies = append(inconsistencies, Inconsistency{ |
| 158 | Type: InconsistencyDuplicate, |
| 159 | MemoryID1: memories[i].DocID, |
| 160 | MemoryID2: memories[j].DocID, |
| 161 | Description: fmt.Sprintf("记忆高度重复(相似度: %.2f):'%s'", |
| 162 | similarity, truncate(memories[i].Text, 50)), |
| 163 | Severity: similarity, |
| 164 | DetectedAt: time.Now(), |
| 165 | }) |
| 166 | } |
| 167 | } |
| 168 | } |
| 169 | |
| 170 | return inconsistencies |
| 171 | } |
| 172 | |
| 173 | // detectOutdated 检测过时信息 |
| 174 | func (qa *QualityAnalyzer) detectOutdated(memories []MemoryWithScore) []Inconsistency { |