144 lines
		
	
	
		
			3.3 KiB
		
	
	
	
		
			Go
		
	
	
	
			
		
		
	
	
			144 lines
		
	
	
		
			3.3 KiB
		
	
	
	
		
			Go
		
	
	
	
| /*
 | |
|  * Copyright 2025 coze-dev Authors
 | |
|  *
 | |
|  * Licensed under the Apache License, Version 2.0 (the "License");
 | |
|  * you may not use this file except in compliance with the License.
 | |
|  * You may obtain a copy of the License at
 | |
|  *
 | |
|  *     http://www.apache.org/licenses/LICENSE-2.0
 | |
|  *
 | |
|  * Unless required by applicable law or agreed to in writing, software
 | |
|  * distributed under the License is distributed on an "AS IS" BASIS,
 | |
|  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | |
|  * See the License for the specific language governing permissions and
 | |
|  * limitations under the License.
 | |
|  */
 | |
| 
 | |
| package knowledge
 | |
| 
 | |
| import (
 | |
| 	"context"
 | |
| 
 | |
| 	"github.com/coze-dev/coze-studio/backend/infra/contract/document/parser"
 | |
| )
 | |
| 
 | |
| type ParseMode string
 | |
| 
 | |
| const (
 | |
| 	FastParseMode     = "fast_mode"
 | |
| 	AccurateParseMode = "accurate_mode"
 | |
| )
 | |
| 
 | |
| type ChunkType string
 | |
| 
 | |
| const (
 | |
| 	ChunkTypeDefault ChunkType = "default"
 | |
| 	ChunkTypeCustom  ChunkType = "custom"
 | |
| 	ChunkTypeLeveled ChunkType = "leveled"
 | |
| )
 | |
| 
 | |
| type ParsingStrategy struct {
 | |
| 	ParseMode    ParseMode
 | |
| 	ExtractImage bool
 | |
| 	ExtractTable bool
 | |
| 	ImageOCR     bool
 | |
| }
 | |
| type ChunkingStrategy struct {
 | |
| 	ChunkType ChunkType
 | |
| 	ChunkSize int64
 | |
| 	Separator string
 | |
| 	Overlap   int64
 | |
| }
 | |
| 
 | |
| type CreateDocumentRequest struct {
 | |
| 	KnowledgeID      int64
 | |
| 	ParsingStrategy  *ParsingStrategy
 | |
| 	ChunkingStrategy *ChunkingStrategy
 | |
| 	FileURL          string
 | |
| 	FileName         string
 | |
| 	FileExtension    parser.FileExtension
 | |
| }
 | |
| type CreateDocumentResponse struct {
 | |
| 	DocumentID int64
 | |
| 	FileName   string
 | |
| 	FileURL    string
 | |
| }
 | |
| 
 | |
| type SearchType string
 | |
| 
 | |
| const (
 | |
| 	SearchTypeSemantic SearchType = "semantic"  // semantics
 | |
| 	SearchTypeFullText SearchType = "full_text" // full text
 | |
| 	SearchTypeHybrid   SearchType = "hybrid"    // mix
 | |
| )
 | |
| 
 | |
| type RetrievalStrategy struct {
 | |
| 	TopK       *int64
 | |
| 	MinScore   *float64
 | |
| 	SearchType SearchType
 | |
| 
 | |
| 	EnableNL2SQL       bool
 | |
| 	EnableQueryRewrite bool
 | |
| 	EnableRerank       bool
 | |
| 	IsPersonalOnly     bool
 | |
| }
 | |
| 
 | |
| type RetrieveRequest struct {
 | |
| 	Query             string
 | |
| 	KnowledgeIDs      []int64
 | |
| 	RetrievalStrategy *RetrievalStrategy
 | |
| }
 | |
| 
 | |
| type Slice struct {
 | |
| 	DocumentID string `json:"documentId"`
 | |
| 	Output     string `json:"output"`
 | |
| }
 | |
| 
 | |
| type RetrieveResponse struct {
 | |
| 	Slices []*Slice
 | |
| }
 | |
| 
 | |
| var (
 | |
| 	knowledgeOperatorImpl KnowledgeOperator
 | |
| )
 | |
| 
 | |
| func GetKnowledgeOperator() KnowledgeOperator {
 | |
| 	return knowledgeOperatorImpl
 | |
| }
 | |
| 
 | |
| func SetKnowledgeOperator(k KnowledgeOperator) {
 | |
| 	knowledgeOperatorImpl = k
 | |
| }
 | |
| 
 | |
| type KnowledgeDetail struct {
 | |
| 	ID          int64  `json:"id"`
 | |
| 	Name        string `json:"name"`
 | |
| 	Description string `json:"description"`
 | |
| 	IconURL     string `json:"-"`
 | |
| 	FormatType  int64  `json:"-"`
 | |
| }
 | |
| 
 | |
| type ListKnowledgeDetailRequest struct {
 | |
| 	KnowledgeIDs []int64
 | |
| }
 | |
| 
 | |
| type ListKnowledgeDetailResponse struct {
 | |
| 	KnowledgeDetails []*KnowledgeDetail
 | |
| }
 | |
| 
 | |
| type DeleteDocumentRequest struct {
 | |
| 	DocumentID string
 | |
| }
 | |
| 
 | |
| type DeleteDocumentResponse struct {
 | |
| 	IsSuccess bool
 | |
| }
 | |
| 
 | |
| //go:generate  mockgen -destination knowledgemock/knowledge_mock.go --package knowledgemock -source knowledge.go
 | |
| type KnowledgeOperator interface {
 | |
| 	Store(ctx context.Context, document *CreateDocumentRequest) (*CreateDocumentResponse, error)
 | |
| 	Retrieve(context.Context, *RetrieveRequest) (*RetrieveResponse, error)
 | |
| 	Delete(context.Context, *DeleteDocumentRequest) (*DeleteDocumentResponse, error)
 | |
| 	ListKnowledgeDetail(context.Context, *ListKnowledgeDetailRequest) (*ListKnowledgeDetailResponse, error)
 | |
| }
 |