mirror of
https://github.com/langgenius/dify.git
synced 2026-11-11 13:51:25 +08:00
351 lines
7.8 KiB
TypeScript
351 lines
7.8 KiB
TypeScript
import type { NotionInfo, PreProcessingRule } from '@dify/contracts/api/console/datasets/types.gen'
|
|
import type { DataSourceNotionPage, DataSourceProvider } from './common'
|
|
import type { IndexingType } from '@/app/components/datasets/create/step-two'
|
|
import type { AppIconType, RetrievalConfig, TransferMethod } from '@/types/app'
|
|
import type { I18nKeysByPrefix } from '@/types/i18n'
|
|
|
|
export const DataSourceType = {
|
|
FILE: 'upload_file',
|
|
NOTION: 'notion_import',
|
|
WEB: 'website_crawl',
|
|
} as const
|
|
|
|
export type DataSourceType = (typeof DataSourceType)[keyof typeof DataSourceType]
|
|
|
|
export const ChunkingMode = {
|
|
text: 'text_model', // General text
|
|
qa: 'qa_model', // General QA
|
|
parentChild: 'hierarchical_model', // Parent-Child
|
|
// graph = 'graph', // todo: Graph RAG
|
|
} as const
|
|
|
|
export type ChunkingMode = (typeof ChunkingMode)[keyof typeof ChunkingMode]
|
|
|
|
export type IconInfo = {
|
|
icon: string
|
|
icon_background?: string
|
|
icon_type: AppIconType
|
|
icon_url?: string
|
|
}
|
|
|
|
export type SummaryIndexSetting = {
|
|
enable?: boolean
|
|
model_name?: string
|
|
model_provider_name?: string
|
|
summary_prompt?: string
|
|
}
|
|
|
|
export type CustomFile = File & {
|
|
id?: string
|
|
extension?: string
|
|
mime_type?: string
|
|
created_by?: string
|
|
created_at?: number
|
|
}
|
|
|
|
export type DocumentItem = {
|
|
id: string
|
|
name: string
|
|
extension: string
|
|
}
|
|
|
|
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 CrawlResult = {
|
|
data: CrawlResultItem[]
|
|
time_consuming: number | string
|
|
}
|
|
|
|
export const CrawlStep = {
|
|
init: 'init',
|
|
running: 'running',
|
|
finished: 'finished',
|
|
} as const
|
|
|
|
export type CrawlStep = (typeof CrawlStep)[keyof typeof CrawlStep]
|
|
|
|
export type FileItem = {
|
|
fileID: string
|
|
file: CustomFile
|
|
progress: number
|
|
}
|
|
|
|
export type FetchDatasetsParams = {
|
|
params: {
|
|
page: number
|
|
ids?: string[]
|
|
tag_ids?: string[]
|
|
limit?: number
|
|
include_all?: boolean
|
|
keyword?: string
|
|
}
|
|
}
|
|
|
|
export type QA = {
|
|
question: string
|
|
answer: string
|
|
}
|
|
|
|
export const ProcessMode = {
|
|
general: 'custom',
|
|
parentChild: 'hierarchical',
|
|
} as const
|
|
|
|
export type ProcessMode = (typeof ProcessMode)[keyof typeof ProcessMode]
|
|
|
|
export type ParentMode = 'full-doc' | 'paragraph'
|
|
|
|
export type Rules = {
|
|
pre_processing_rules: PreProcessingRule[]
|
|
segmentation: Segmentation
|
|
parent_mode?: ParentMode
|
|
subchunk_segmentation?: Segmentation
|
|
}
|
|
|
|
type Segmentation = {
|
|
separator: string
|
|
max_tokens: number
|
|
chunk_overlap?: number
|
|
}
|
|
|
|
export const DisplayStatusList = [
|
|
'queuing',
|
|
'indexing',
|
|
'paused',
|
|
'error',
|
|
'available',
|
|
'enabled',
|
|
'disabled',
|
|
'archived',
|
|
] as const
|
|
|
|
export type DocumentDisplayStatus = (typeof DisplayStatusList)[number]
|
|
|
|
export const isDocumentDisplayStatus = (value: unknown): value is DocumentDisplayStatus =>
|
|
DisplayStatusList.some((status) => status === value)
|
|
|
|
export type LegacyDataSourceInfo = {
|
|
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
|
|
credential_id?: string
|
|
}
|
|
|
|
export type LocalFileInfo = {
|
|
extension: string
|
|
mime_type: string
|
|
name: string
|
|
related_id: string
|
|
size: number
|
|
transfer_method: TransferMethod
|
|
url: string
|
|
}
|
|
|
|
export type WebsiteCrawlInfo = {
|
|
content: string
|
|
credential_id: string
|
|
description: string
|
|
source_url: string
|
|
title: string
|
|
provider?: string
|
|
job_id?: string
|
|
}
|
|
|
|
export type OnlineDocumentInfo = {
|
|
credential_id: string
|
|
workspace_id: string
|
|
page: {
|
|
last_edited_time: string
|
|
page_icon: DataSourceNotionPage['page_icon']
|
|
page_id: string
|
|
page_name: string
|
|
parent_id: string
|
|
type: string
|
|
}
|
|
}
|
|
|
|
export type UploadFileIdInfo = {
|
|
upload_file_id: string
|
|
}
|
|
|
|
type DocumentReq = {
|
|
original_document_id?: string
|
|
indexing_technique?: IndexingType
|
|
doc_form: ChunkingMode
|
|
doc_language: string
|
|
process_rule: ProcessRule
|
|
summary_index_setting?: SummaryIndexSetting
|
|
}
|
|
|
|
export type CreateDocumentReq = Omit<DocumentReq, 'indexing_technique'> & {
|
|
indexing_technique: IndexingType
|
|
data_source: DataSource
|
|
retrieval_model: RetrievalConfig
|
|
embedding_model: string
|
|
embedding_model_provider: string
|
|
}
|
|
|
|
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 ProcessRule = {
|
|
mode: ProcessMode
|
|
rules: Rules
|
|
summary_index_setting?: SummaryIndexSetting
|
|
}
|
|
|
|
type CustomizableDocType =
|
|
| 'book'
|
|
| 'web_page'
|
|
| 'paper'
|
|
| 'social_media_post'
|
|
| 'personal_document'
|
|
| 'business_document'
|
|
| 'im_chat_log'
|
|
type FixedDocType = 'synced_from_github' | 'synced_from_notion' | 'wikipedia_entry'
|
|
export type DocType = CustomizableDocType | FixedDocType
|
|
|
|
export type Attachment = {
|
|
id: string
|
|
name: string
|
|
size: number
|
|
extension: string
|
|
mime_type: string
|
|
source_url: string
|
|
}
|
|
|
|
export type SegmentUpdater = {
|
|
content: string
|
|
answer?: string
|
|
summary?: string
|
|
keywords?: string[]
|
|
regenerate_child_chunks?: boolean
|
|
attachment_ids?: string[]
|
|
}
|
|
|
|
export type SelectedDatasetsMode = {
|
|
allHighQuality: boolean
|
|
allHighQualityVectorSearch: boolean
|
|
allHighQualityFullTextSearch: boolean
|
|
allEconomic: boolean
|
|
mixtureHighQualityAndEconomic: boolean
|
|
allInternal: boolean
|
|
allExternal: boolean
|
|
mixtureInternalAndExternal: boolean
|
|
inconsistentEmbeddingModel: boolean
|
|
}
|
|
|
|
export const WeightedScoreEnum = {
|
|
SemanticFirst: 'semantic_first',
|
|
KeywordFirst: 'keyword_first',
|
|
Customized: 'customized',
|
|
} as const
|
|
|
|
export type WeightedScoreEnum = (typeof WeightedScoreEnum)[keyof typeof WeightedScoreEnum]
|
|
|
|
export const RerankingModeEnum = {
|
|
RerankingModel: 'reranking_model',
|
|
WeightedScore: 'weighted_score',
|
|
} as const
|
|
|
|
export type RerankingModeEnum = (typeof RerankingModeEnum)[keyof typeof RerankingModeEnum]
|
|
|
|
export const DEFAULT_WEIGHTED_SCORE = {
|
|
allHighQualityVectorSearch: {
|
|
semantic: 1.0,
|
|
keyword: 0,
|
|
},
|
|
allHighQualityFullTextSearch: {
|
|
semantic: 0,
|
|
keyword: 1.0,
|
|
},
|
|
other: {
|
|
semantic: 0.7,
|
|
keyword: 0.3,
|
|
},
|
|
}
|
|
|
|
// Used in api url
|
|
export const DocumentActionType = {
|
|
enable: 'enable',
|
|
disable: 'disable',
|
|
archive: 'archive',
|
|
unArchive: 'un_archive',
|
|
delete: 'delete',
|
|
summary: 'summary',
|
|
} as const
|
|
|
|
export type DocumentActionType = (typeof DocumentActionType)[keyof typeof DocumentActionType]
|
|
|
|
export const DOC_FORM_ICON_CLASS_WITH_BG: Record<ChunkingMode | 'external', string> = {
|
|
[ChunkingMode.text]: 'i-custom-public-knowledge-dataset-card-general',
|
|
[ChunkingMode.qa]: 'i-custom-public-knowledge-dataset-card-qa',
|
|
[ChunkingMode.parentChild]: 'i-custom-public-knowledge-dataset-card-parent-child',
|
|
// [ChunkingMode.graph]: Graph, // todo: Graph RAG
|
|
external: 'i-custom-public-knowledge-dataset-card-external-knowledge-base',
|
|
}
|
|
|
|
type ChunkingModeText = I18nKeysByPrefix<'dataset', 'chunkingMode.'>
|
|
|
|
export const DOC_FORM_TEXT: Record<ChunkingMode, ChunkingModeText> = {
|
|
[ChunkingMode.text]: 'general',
|
|
[ChunkingMode.qa]: 'qa',
|
|
[ChunkingMode.parentChild]: 'parentChild',
|
|
// [ChunkingMode.graph]: 'graph', // todo: Graph RAG
|
|
}
|
|
|
|
export type HitTestingRequest = {
|
|
query: string
|
|
attachment_ids: string[]
|
|
retrieval_model: RetrievalConfig
|
|
}
|
|
|
|
export type ExternalKnowledgeBaseHitTestingRequest = {
|
|
query: string
|
|
external_retrieval_model: {
|
|
top_k: number
|
|
score_threshold: number
|
|
score_threshold_enabled: boolean
|
|
}
|
|
}
|