| | import type { DataSourceNotionPage, DataSourceProvider } from './common' |
| | import type { AppIconType, AppMode, RetrievalConfig } from '@/types/app' |
| | import type { Tag } from '@/app/components/base/tag-management/constant' |
| |
|
| | export enum DataSourceType { |
| | FILE = 'upload_file', |
| | NOTION = 'notion_import', |
| | WEB = 'website_crawl', |
| | } |
| |
|
| | export type DatasetPermission = 'only_me' | 'all_team_members' | 'partial_members' |
| |
|
| | export type DataSet = { |
| | id: string |
| | name: string |
| | icon: string |
| | icon_background: string |
| | description: string |
| | permission: DatasetPermission |
| | data_source_type: DataSourceType |
| | indexing_technique: 'high_quality' | 'economy' |
| | created_by: string |
| | updated_by: string |
| | updated_at: number |
| | app_count: number |
| | document_count: number |
| | word_count: number |
| | provider: string |
| | embedding_model: string |
| | embedding_model_provider: string |
| | embedding_available: boolean |
| | retrieval_model_dict: RetrievalConfig |
| | retrieval_model: RetrievalConfig |
| | tags: Tag[] |
| | partial_member_list?: any[] |
| | external_knowledge_info: { |
| | external_knowledge_id: string |
| | external_knowledge_api_id: string |
| | external_knowledge_api_name: string |
| | external_knowledge_api_endpoint: string |
| | } |
| | external_retrieval_model: { |
| | top_k: number |
| | score_threshold: number |
| | score_threshold_enabled: boolean |
| | } |
| | } |
| |
|
| | export type ExternalAPIItem = { |
| | id: string |
| | tenant_id: string |
| | name: string |
| | description: string |
| | settings: { |
| | endpoint: string |
| | api_key: string |
| | } |
| | dataset_bindings: { id: string; name: string }[] |
| | created_by: string |
| | created_at: string |
| | } |
| |
|
| | export type ExternalKnowledgeItem = { |
| | id: string |
| | name: string |
| | description: string | null |
| | provider: 'external' |
| | permission: DatasetPermission |
| | data_source_type: null |
| | indexing_technique: null |
| | app_count: number |
| | document_count: number |
| | word_count: number |
| | created_by: string |
| | created_at: string |
| | updated_by: string |
| | updated_at: string |
| | tags: Tag[] |
| | } |
| |
|
| | export type ExternalAPIDeleteResponse = { |
| | result: 'success' | 'error' |
| | } |
| |
|
| | export type ExternalAPIUsage = { |
| | is_using: boolean |
| | count: number |
| | } |
| |
|
| | export type CustomFile = File & { |
| | id?: string |
| | extension?: string |
| | mime_type?: string |
| | created_by?: string |
| | created_at?: number |
| | } |
| |
|
| | export type CrawlOptions = { |
| | crawl_sub_pages: boolean |
| | only_main_content: boolean |
| | includes: string |
| | excludes: string |
| | limit: number | string |
| | max_depth: number | string |
| | use_sitemap: boolean |
| | } |
| |
|
| | export type CrawlResultItem = { |
| | title: string |
| | markdown: string |
| | description: string |
| | source_url: string |
| | } |
| |
|
| | export type FileItem = { |
| | fileID: string |
| | file: CustomFile |
| | progress: number |
| | } |
| |
|
| | export type DataSetListResponse = { |
| | data: DataSet[] |
| | has_more: boolean |
| | limit: number |
| | page: number |
| | total: number |
| | } |
| |
|
| | export type ExternalAPIListResponse = { |
| | data: ExternalAPIItem[] |
| | has_more: boolean |
| | limit: number |
| | page: number |
| | total: number |
| | } |
| |
|
| | export type QA = { |
| | question: string |
| | answer: string |
| | } |
| |
|
| | export type IndexingEstimateResponse = { |
| | tokens: number |
| | total_price: number |
| | currency: string |
| | total_segments: number |
| | preview: string[] |
| | qa_preview?: QA[] |
| | } |
| |
|
| | export type FileIndexingEstimateResponse = { |
| | total_nodes: number |
| | } & IndexingEstimateResponse |
| |
|
| | export type IndexingStatusResponse = { |
| | id: string |
| | indexing_status: DocumentIndexingStatus |
| | processing_started_at: number |
| | parsing_completed_at: number |
| | cleaning_completed_at: number |
| | splitting_completed_at: number |
| | completed_at: any |
| | paused_at: any |
| | error: any |
| | stopped_at: any |
| | completed_segments: number |
| | total_segments: number |
| | } |
| | export type IndexingStatusBatchResponse = { |
| | data: IndexingStatusResponse[] |
| | } |
| |
|
| | export type ProcessMode = 'automatic' | 'custom' |
| |
|
| | export type ProcessRuleResponse = { |
| | mode: ProcessMode |
| | rules: Rules |
| | } |
| |
|
| | export type Rules = { |
| | pre_processing_rules: PreProcessingRule[] |
| | segmentation: Segmentation |
| | } |
| |
|
| | export type PreProcessingRule = { |
| | id: string |
| | enabled: boolean |
| | } |
| |
|
| | export type Segmentation = { |
| | separator: string |
| | max_tokens: number |
| | chunk_overlap: number |
| | } |
| |
|
| | export const DocumentIndexingStatusList = [ |
| | 'waiting', |
| | 'parsing', |
| | 'cleaning', |
| | 'splitting', |
| | 'indexing', |
| | 'paused', |
| | 'error', |
| | 'completed', |
| | ] as const |
| |
|
| | export type DocumentIndexingStatus = typeof DocumentIndexingStatusList[number] |
| |
|
| | export const DisplayStatusList = [ |
| | 'queuing', |
| | 'indexing', |
| | 'paused', |
| | 'error', |
| | 'available', |
| | 'enabled', |
| | 'disabled', |
| | 'archived', |
| | ] as const |
| |
|
| | export type DocumentDisplayStatus = typeof DisplayStatusList[number] |
| |
|
| | export type DataSourceInfo = { |
| | upload_file: { |
| | id: string |
| | name: string |
| | size: number |
| | mime_type: string |
| | created_at: number |
| | created_by: string |
| | extension: string |
| | } |
| | notion_page_icon?: string |
| | notion_workspace_id?: string |
| | notion_page_id?: string |
| | provider?: DataSourceProvider |
| | job_id: string |
| | url: string |
| | } |
| |
|
| | export type InitialDocumentDetail = { |
| | id: string |
| | batch: string |
| | position: number |
| | dataset_id: string |
| | data_source_type: DataSourceType |
| | data_source_info: DataSourceInfo |
| | dataset_process_rule_id: string |
| | name: string |
| | created_from: 'api' | 'web' |
| | created_by: string |
| | created_at: number |
| | indexing_status: DocumentIndexingStatus |
| | display_status: DocumentDisplayStatus |
| | completed_segments?: number |
| | total_segments?: number |
| | doc_form: 'text_model' | 'qa_model' |
| | doc_language: string |
| | } |
| |
|
| | export type SimpleDocumentDetail = InitialDocumentDetail & { |
| | enabled: boolean |
| | word_count: number |
| | error?: string | null |
| | archived: boolean |
| | updated_at: number |
| | hit_count: number |
| | dataset_process_rule_id?: string |
| | data_source_detail_dict?: { |
| | upload_file: { |
| | name: string |
| | extension: string |
| | } |
| | } |
| | } |
| |
|
| | export type DocumentListResponse = { |
| | data: SimpleDocumentDetail[] |
| | has_more: boolean |
| | total: number |
| | page: number |
| | limit: number |
| | } |
| |
|
| | export type DocumentReq = { |
| | original_document_id?: string |
| | indexing_technique?: string |
| | doc_form: 'text_model' | 'qa_model' |
| | doc_language: string |
| | process_rule: ProcessRule |
| | } |
| |
|
| | export type CreateDocumentReq = DocumentReq & { |
| | data_source: DataSource |
| | retrieval_model: RetrievalConfig |
| | embedding_model: string |
| | embedding_model_provider: string |
| | } |
| |
|
| | export type IndexingEstimateParams = DocumentReq & Partial<DataSource> & { |
| | dataset_id: string |
| | } |
| |
|
| | export type DataSource = { |
| | type: DataSourceType |
| | info_list: { |
| | data_source_type: DataSourceType |
| | notion_info_list?: NotionInfo[] |
| | file_info_list?: { |
| | file_ids: string[] |
| | } |
| | website_info_list?: { |
| | provider: string |
| | job_id: string |
| | urls: string[] |
| | } |
| | } |
| | } |
| |
|
| | export type NotionInfo = { |
| | workspace_id: string |
| | pages: DataSourceNotionPage[] |
| | } |
| | export type NotionPage = { |
| | page_id: string |
| | type: string |
| | } |
| |
|
| | export type ProcessRule = { |
| | mode: string |
| | rules: Rules |
| | } |
| |
|
| | export type createDocumentResponse = { |
| | dataset?: DataSet |
| | batch: string |
| | documents: InitialDocumentDetail[] |
| | } |
| |
|
| | export type FullDocumentDetail = SimpleDocumentDetail & { |
| | batch: string |
| | created_api_request_id: string |
| | processing_started_at: number |
| | parsing_completed_at: number |
| | cleaning_completed_at: number |
| | splitting_completed_at: number |
| | tokens: number |
| | indexing_latency: number |
| | completed_at: number |
| | paused_by: string |
| | paused_at: number |
| | stopped_at: number |
| | indexing_status: string |
| | disabled_at: number |
| | disabled_by: string |
| | archived_reason: 'rule_modified' | 're_upload' |
| | archived_by: string |
| | archived_at: number |
| | doc_type?: DocType | null | 'others' |
| | doc_metadata?: DocMetadata | null |
| | segment_count: number |
| | [key: string]: any |
| | } |
| |
|
| | export type DocMetadata = { |
| | title: string |
| | language: string |
| | author: string |
| | publisher: string |
| | publicationDate: string |
| | ISBN: string |
| | category: string |
| | [key: string]: string |
| | } |
| |
|
| | export const CUSTOMIZABLE_DOC_TYPES = [ |
| | 'book', |
| | 'web_page', |
| | 'paper', |
| | 'social_media_post', |
| | 'personal_document', |
| | 'business_document', |
| | 'im_chat_log', |
| | ] as const |
| |
|
| | export const FIXED_DOC_TYPES = ['synced_from_github', 'synced_from_notion', 'wikipedia_entry'] as const |
| |
|
| | export type CustomizableDocType = typeof CUSTOMIZABLE_DOC_TYPES[number] |
| | export type FixedDocType = typeof FIXED_DOC_TYPES[number] |
| | export type DocType = CustomizableDocType | FixedDocType |
| |
|
| | export type DocumentDetailResponse = FullDocumentDetail |
| |
|
| | export const SEGMENT_STATUS_LIST = ['waiting', 'completed', 'error', 'indexing'] |
| | export type SegmentStatus = typeof SEGMENT_STATUS_LIST[number] |
| |
|
| | export type SegmentsQuery = { |
| | last_id?: string |
| | limit: number |
| | |
| | hit_count_gte?: number |
| | keyword?: string |
| | enabled?: boolean |
| | } |
| |
|
| | export type SegmentDetailModel = { |
| | id: string |
| | position: number |
| | document_id: string |
| | content: string |
| | word_count: number |
| | tokens: number |
| | keywords: string[] |
| | index_node_id: string |
| | index_node_hash: string |
| | hit_count: number |
| | enabled: boolean |
| | disabled_at: number |
| | disabled_by: string |
| | status: SegmentStatus |
| | created_by: string |
| | created_at: number |
| | indexing_at: number |
| | completed_at: number |
| | error: string | null |
| | stopped_at: number |
| | answer?: string |
| | } |
| |
|
| | export type SegmentsResponse = { |
| | data: SegmentDetailModel[] |
| | has_more: boolean |
| | limit: number |
| | total: number |
| | } |
| |
|
| | export type HitTestingRecord = { |
| | id: string |
| | content: string |
| | source: 'app' | 'hit_testing' | 'plugin' |
| | source_app_id: string |
| | created_by_role: 'account' | 'end_user' |
| | created_by: string |
| | created_at: number |
| | } |
| |
|
| | export type HitTesting = { |
| | segment: Segment |
| | score: number |
| | tsne_position: TsnePosition |
| | } |
| |
|
| | export type ExternalKnowledgeBaseHitTesting = { |
| | content: string |
| | title: string |
| | score: number |
| | metadata: { |
| | 'x-amz-bedrock-kb-source-uri': string |
| | 'x-amz-bedrock-kb-data-source-id': string |
| | } |
| | } |
| |
|
| | export type Segment = { |
| | id: string |
| | document: Document |
| | content: string |
| | position: number |
| | word_count: number |
| | tokens: number |
| | keywords: string[] |
| | hit_count: number |
| | index_node_hash: string |
| | } |
| |
|
| | export type Document = { |
| | id: string |
| | data_source_type: string |
| | name: string |
| | doc_type: DocType |
| | } |
| |
|
| | export type HitTestingRecordsResponse = { |
| | data: HitTestingRecord[] |
| | has_more: boolean |
| | limit: number |
| | total: number |
| | page: number |
| | } |
| |
|
| | export type TsnePosition = { |
| | x: number |
| | y: number |
| | } |
| |
|
| | export type HitTestingResponse = { |
| | query: { |
| | content: string |
| | tsne_position: TsnePosition |
| | } |
| | records: Array<HitTesting> |
| | } |
| |
|
| | export type ExternalKnowledgeBaseHitTestingResponse = { |
| | query: { |
| | content: string |
| | } |
| | records: Array<ExternalKnowledgeBaseHitTesting> |
| | } |
| |
|
| | export type RelatedApp = { |
| | id: string |
| | name: string |
| | mode: AppMode |
| | icon_type: AppIconType | null |
| | icon: string |
| | icon_background: string |
| | icon_url: string |
| | } |
| |
|
| | export type RelatedAppResponse = { |
| | data: Array<RelatedApp> |
| | total: number |
| | } |
| |
|
| | export type SegmentUpdater = { |
| | content: string |
| | answer?: string |
| | keywords?: string[] |
| | } |
| |
|
| | export enum DocForm { |
| | TEXT = 'text_model', |
| | QA = 'qa_model', |
| | } |
| |
|
| | export type ErrorDocsResponse = { |
| | data: IndexingStatusResponse[] |
| | total: number |
| | } |
| |
|
| | export type SelectedDatasetsMode = { |
| | allHighQuality: boolean |
| | allHighQualityVectorSearch: boolean |
| | allHighQualityFullTextSearch: boolean |
| | allEconomic: boolean |
| | mixtureHighQualityAndEconomic: boolean |
| | allInternal: boolean |
| | allExternal: boolean |
| | mixtureInternalAndExternal: boolean |
| | inconsistentEmbeddingModel: boolean |
| | } |
| |
|
| | export enum WeightedScoreEnum { |
| | SemanticFirst = 'semantic_first', |
| | KeywordFirst = 'keyword_first', |
| | Customized = 'customized', |
| | } |
| |
|
| | export enum RerankingModeEnum { |
| | RerankingModel = 'reranking_model', |
| | WeightedScore = 'weighted_score', |
| | } |
| |
|
| | export const DEFAULT_WEIGHTED_SCORE = { |
| | allHighQualityVectorSearch: { |
| | semantic: 1.0, |
| | keyword: 0, |
| | }, |
| | allHighQualityFullTextSearch: { |
| | semantic: 0, |
| | keyword: 1.0, |
| | }, |
| | other: { |
| | semantic: 0.7, |
| | keyword: 0.3, |
| | }, |
| | } |
| |
|