- Introduced the Knowledge Base (KB) API by creating a new kb package with various endpoints for collection and document management, segment management, and search functionalities. - Updated the OpenAPI router to attach the KB API, ensuring OAuth protection for all endpoints. - Implemented logging for configuration validation to enhance error handling and user feedback.
59 lines
1.9 KiB
Go
59 lines
1.9 KiB
Go
package kb
|
|
|
|
import (
|
|
"github.com/gin-gonic/gin"
|
|
"github.com/yaoapp/kun/log"
|
|
"github.com/yaoapp/yao/kb"
|
|
"github.com/yaoapp/yao/openapi/oauth/types"
|
|
)
|
|
|
|
// Attach attaches the Knowledge Base API to the router
|
|
func Attach(group *gin.RouterGroup, oauth types.OAuth) {
|
|
|
|
// Validate the GraphRag instance
|
|
if kb.Instance == nil {
|
|
log.Warn("[OpenAPI] GraphRag instance is not set, please check the configuration")
|
|
return
|
|
}
|
|
|
|
// Protect all endpoints with OAuth
|
|
group.Use(oauth.Guard)
|
|
|
|
// Collection Management
|
|
group.POST("/collections", CreateCollection)
|
|
group.DELETE("/collections/:collectionID", RemoveCollection)
|
|
group.GET("/collections/:collectionID/exists", CollectionExists)
|
|
group.GET("/collections", GetCollections)
|
|
|
|
// Document Management
|
|
group.POST("/collections/:collectionID/documents/file", AddFile)
|
|
group.POST("/collections/:collectionID/documents/text", AddText)
|
|
group.POST("/collections/:collectionID/documents/url", AddURL)
|
|
group.GET("/documents", ListDocuments)
|
|
group.GET("/documents/scroll", ScrollDocuments)
|
|
group.GET("/documents/:docID", GetDocument)
|
|
group.DELETE("/documents", RemoveDocs)
|
|
|
|
// Segment Management
|
|
group.POST("/documents/:docID/segments", AddSegments)
|
|
group.PUT("/segments", UpdateSegments)
|
|
group.DELETE("/segments", RemoveSegments)
|
|
group.DELETE("/documents/:docID/segments", RemoveSegmentsByDocID)
|
|
group.GET("/segments", GetSegments)
|
|
group.GET("/segments/:segmentID", GetSegment)
|
|
group.GET("/documents/:docID/segments", ListSegments)
|
|
group.GET("/documents/:docID/segments/scroll", ScrollSegments)
|
|
|
|
// Segment Voting, Scoring, Weighting
|
|
group.PUT("/segments/vote", UpdateVote)
|
|
group.PUT("/segments/score", UpdateScore)
|
|
group.PUT("/segments/weight", UpdateWeight)
|
|
|
|
// Search Management
|
|
group.POST("/search", Search)
|
|
group.POST("/search/multi", MultiSearch)
|
|
|
|
// Collection Backup and Restore
|
|
group.POST("/collections/:collectionID/backup", Backup)
|
|
group.POST("/collections/:collectionID/restore", Restore)
|
|
}
|