refactor: update knowledge base index removal method for improved clarity and efficiency
This commit is contained in:
@@ -151,7 +151,8 @@ func (s *index) RemoveFAQIndex(ctx context.Context, faqID int64) error {
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *index) RemoveKnowledgeBaseIndexByChunkModels(ctx context.Context, knowledgeBaseID int64, chunks []models.KnowledgeChunk) error {
|
func (s *index) RemoveKnowledgeBaseIndex(ctx context.Context, knowledgeBaseID int64) error {
|
||||||
|
chunks := repositories.KnowledgeChunkRepository.FindByKnowledgeBaseID(sqls.DB(), knowledgeBaseID)
|
||||||
if len(chunks) == 0 {
|
if len(chunks) == 0 {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -118,6 +118,11 @@ func (r *knowledgeChunkRepository) FindByFaqID(db *gorm.DB, faqID int64) (list [
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (r *knowledgeChunkRepository) FindByKnowledgeBaseID(db *gorm.DB, knowledgeBaseID int64) (list []models.KnowledgeChunk) {
|
||||||
|
db.Where("knowledge_base_id = ?", knowledgeBaseID).Order("id asc").Find(&list)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
func (r *knowledgeChunkRepository) FindByVectorIDs(db *gorm.DB, vectorIDs []string) (list []models.KnowledgeChunk) {
|
func (r *knowledgeChunkRepository) FindByVectorIDs(db *gorm.DB, vectorIDs []string) (list []models.KnowledgeChunk) {
|
||||||
if len(vectorIDs) == 0 {
|
if len(vectorIDs) == 0 {
|
||||||
return nil
|
return nil
|
||||||
|
|||||||
@@ -137,11 +137,11 @@ func (s *knowledgeBaseService) DeleteKnowledgeBase(id int64) error {
|
|||||||
return errorsx.Forbidden(fmt.Sprintf("知识库已被 %d 个 AI Agent 引用,请先解除绑定", len(referencingAgents)))
|
return errorsx.Forbidden(fmt.Sprintf("知识库已被 %d 个 AI Agent 引用,请先解除绑定", len(referencingAgents)))
|
||||||
}
|
}
|
||||||
|
|
||||||
chunks := repositories.KnowledgeChunkRepository.Find(sqls.DB(), sqls.NewCnd().Eq("knowledge_base_id", id))
|
if err := rag.Index.RemoveKnowledgeBaseIndex(context.Background(), id); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
if err := sqls.WithTransaction(func(ctx *sqls.TxContext) error {
|
if err := sqls.WithTransaction(func(ctx *sqls.TxContext) error {
|
||||||
if err := repositories.KnowledgeChunkRepository.DeleteByKnowledgeBaseID(ctx.Tx, id); err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
if err := repositories.KnowledgeDocumentRepository.DeleteByKnowledgeBaseID(ctx.Tx, id); err != nil {
|
if err := repositories.KnowledgeDocumentRepository.DeleteByKnowledgeBaseID(ctx.Tx, id); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
@@ -153,7 +153,7 @@ func (s *knowledgeBaseService) DeleteKnowledgeBase(id int64) error {
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
return rag.Index.RemoveKnowledgeBaseIndexByChunkModels(context.Background(), id, chunks)
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *knowledgeBaseService) UpdateSort(ids []int64) error {
|
func (s *knowledgeBaseService) UpdateSort(ids []int64) error {
|
||||||
|
|||||||
Reference in New Issue
Block a user