feat: knowledge pipeline (#25360)

Signed-off-by: -LAN- <laipz8200@outlook.com>
Co-authored-by: twwu <twwu@dify.ai>
Co-authored-by: crazywoola <100913391+crazywoola@users.noreply.github.com>
Co-authored-by: jyong <718720800@qq.com>
Co-authored-by: Wu Tianwei <30284043+WTW0313@users.noreply.github.com>
Co-authored-by: QuantumGhost <obelisk.reg+git@gmail.com>
Co-authored-by: lyzno1 <yuanyouhuilyz@gmail.com>
Co-authored-by: quicksand <quicksandzn@gmail.com>
Co-authored-by: Jyong <76649700+JohnJyong@users.noreply.github.com>
Co-authored-by: lyzno1 <92089059+lyzno1@users.noreply.github.com>
Co-authored-by: zxhlyh <jasonapring2015@outlook.com>
Co-authored-by: Yongtao Huang <yongtaoh2022@gmail.com>
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
Co-authored-by: Joel <iamjoel007@gmail.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: nite-knite <nkCoding@gmail.com>
Co-authored-by: Hanqing Zhao <sherry9277@gmail.com>
Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
Co-authored-by: Harry <xh001x@hotmail.com>
This commit is contained in:
-LAN- 2025-09-18 12:49:10 +08:00 • committed by GitHub
commit 85cda47c70
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
1772 changed files with 102407 additions and 31710 deletions

View file

@ -352,6 +352,19 @@ const translation = {
'optional': 'додатковий',
'json': 'JSON Код',
'checkbox': 'Чекбокс',
'unit': 'Одиниці',
'placeholder': 'Заповнювач',
'noDefaultSelected': 'Не вибирати',
'startChecked': 'Почати перевірено',
'displayName': 'Відображуване ім\'я',
'uploadMethod': 'Спосіб завантаження',
'showAllSettings': 'Показати всі налаштування',
'startSelectedOption': 'Почати вибраний варіант',
'tooltips': 'Спливаючі чтива',
'placeholderPlaceholder': 'Введіть текст для відображення, коли поле порожнє',
'unitPlaceholder': 'Показувати одиниці виміру після чисел, наприклад токени',
'defaultValuePlaceholder': 'Введіть значення за замовчуванням, щоб попередньо заповнити поле',
'tooltipsPlaceholder': 'Введіть корисний текст, який відображається при наведенні курсору на мітку',
},
vision: {
// Vision

View file

@ -80,6 +80,7 @@ const translation = {
completionUserDescription: 'Швидко створюйте помічника зі штучним інтелектом для завдань із генерації тексту за допомогою простої конфігурації.',
workflowUserDescription: 'ізуально створюйте автономні ШІ-процеси з простотою перетягування.',
dropDSLToCreateApp: 'Перетягніть файл DSL сюди, щоб створити додаток',
import: 'Імпорт',
},
editApp: 'Редагувати інформацію',
editAppTitle: 'Редагувати інформацію про додаток',

View file

@ -93,6 +93,7 @@ const translation = {
comparePlanAndFeatures: 'Порівняйте плани та функції',
apiRateLimitTooltip: 'Обмеження частоти запитів застосовується до всіх запитів, зроблених через API Dify, включаючи генерацію тексту, чат-розмови, виконання робочих процесів та обробку документів.',
documentsRequestQuotaTooltip: 'Вказує загальну кількість дій, які робоча область може виконувати за хвилину в межах бази знань, включаючи створення, видалення, оновлення наборів даних, завантаження документів, модифікації, архівування та запити до бази знань. Цей показник використовується для оцінки ефективності запитів до бази знань. Наприклад, якщо користувач Sandbox виконує 10 послідовних тестів за один хвилину, його робочій області буде тимчасово заборонено виконувати наступні дії протягом наступної хвилини: створення наборів даних, видалення, оновлення, а також завантаження чи модифікацію документів.',
startBuilding: 'Почніть будувати',
},
plans: {
sandbox: {
@ -115,6 +116,15 @@ const translation = {
description: 'Отримайте повні можливості та підтримку для масштабних критично важливих систем.',
includesTitle: 'Все, що входить до плану Team, плюс:',
features: {
4: 'Єдиний вхід',
8: 'Професійна технічна підтримка',
1: 'Авторизація комерційної ліцензії',
2: 'Ексклюзивні функції підприємства',
6: 'Розширені функції безпеки та керування',
5: 'Угода про рівень обслуговування за домовленістю від Dify Partners',
3: 'Кілька робочих областей і управління підприємством',
0: 'Масштабовані рішення для розгортання корпоративного рівня',
7: 'Оновлення та обслуговування від Dify Official',
},
btnText: 'Зв\'язатися з відділом продажу',
priceTip: 'Тільки річна оплата',
@ -123,6 +133,9 @@ const translation = {
},
community: {
features: {
1: 'Єдине робоче місце',
2: 'Відповідає ліцензії Dify з відкритим вихідним кодом',
0: 'Усі основні функції випущено в загальнодоступному репозиторії',
},
btnText: 'Розпочніть з громади',
includesTitle: 'Безкоштовні можливості:',
@ -133,6 +146,10 @@ const translation = {
},
premium: {
features: {
1: 'Єдине робоче місце',
2: 'Налаштування логотипу WebApp та брендингу',
0: 'Самокерована надійність різними хмарними провайдерами',
3: 'Пріоритетна підтримка електронною поштою та в чаті',
},
description: 'Для середніх підприємств та команд',
btnText: 'Отримайте Преміум у',

View file

@ -491,6 +491,15 @@ const translation = {
configLoadBalancing: 'Конфігурація балансування навантаження',
addModelCredential: 'Додати облікові дані моделі',
providerManagedTip: 'Поточна конфігурація розміщується провайдером.',
addModel: 'Додати модель',
removeModel: 'Видалити модель',
modelCredential: 'Облікові дані моделі',
manageCredentials: 'Керування обліковими даними',
selectModelCredential: 'Виберіть облікові дані моделі',
addNewModelCredential: 'Додайте нові облікові дані моделі',
customModelCredentials: 'Облікові дані користувацької моделі',
editModelCredential: 'Редагувати облікові дані моделі',
customModelCredentialsDeleteTip: 'Облікові дані використовуються і не можуть бути видалені',
},
},
dataSource: {
@ -590,6 +599,7 @@ const translation = {
viewDoc: 'Переглянути документацію',
relatedApp: 'пов\'язані програми',
noRelatedApp: 'Немає пов\'язаних додатків',
pipeline: 'Трубопроводу',
},
voiceInput: {
speaking: 'Говоріть зараз...',
@ -749,6 +759,9 @@ const translation = {
placeholder: 'Будь ласка, опишіть, що пішло не так або як ми можемо покращити...',
subtitle: 'Будь ласка, скажіть нам, що пішло не так із цією відповіддю',
},
label: {
optional: '(необов\'язково)',
},
}
export default translation

View file

@ -87,6 +87,7 @@ const translation = {
configureWatercrawl: 'Налаштування Watercrawl',
watercrawlTitle: 'Витягуйте веб-контент за допомогою Watercrawl',
watercrawlDoc: 'Документація Watercrawl',
running: 'Біг',
},
cancel: 'Скасувати',
},
@ -172,6 +173,7 @@ const translation = {
switch: 'Комутатор',
qaSwitchHighQualityTipTitle: 'Формат запитань і відповідей вимагає якісного методу індексації',
paragraphTip: 'Цей режим розбиває текст на абзаци на основі роздільників і максимальної довжини фрагмента, використовуючи розділений текст як батьківський фрагмент для пошуку.',
qaTip: 'Використовуючи структуровані дані запитань і відповідей, ви можете створювати документи, які поєднують запитання з відповідями. Ці документи індексуються на основі частини запитань, що дозволяє системі отримувати релевантні відповіді на основі схожості запитів.',
},
stepThree: {
creationTitle: '🎉 Знання створено',

View file

@ -98,6 +98,9 @@ const translation = {
upload_file: 'Завантажити файл',
notion: 'Синхронізувати з Notion',
github: 'Синхронізувати з Github',
online_document: 'Онлайн-документ',
local_file: 'Локальний файл',
website_crawl: 'Сканування веб-сайту',
},
type: {
book: 'Книга',
@ -335,6 +338,7 @@ const translation = {
pause: 'Пауза',
parentMaxTokens: 'Родитель',
hierarchical: 'Батьки-діти',
waiting: 'Виконання очікує...',
},
segment: {
paragraphs: 'Параграфи',

View file

@ -0,0 +1,154 @@
const translation = {
creation: {
createFromScratch: {
title: 'Порожній конвеєр знань',
description: 'Створіть кастомну воронку продажів з нуля з повним контролем над обробкою та структурою даних.',
},
caution: 'Обережність',
backToKnowledge: 'Назад до знань',
createKnowledge: 'Створюйте знання',
successTip: 'Успішно створили Базу знань',
importDSL: 'Імпорт із файлу DSL',
errorTip: 'Не вдалося створити базу знань',
},
templates: {
customized: 'Налаштувати',
},
operations: {
process: 'Процес',
choose: 'Вибирати',
details: 'Деталі',
convert: 'Перетворити',
dataSource: 'Джерело даних',
preview: 'Попередній перегляд',
exportPipeline: 'Пайплайн експорту',
saveAndProcess: 'Зберегти та обробити',
editInfo: 'Редагувати інформацію',
backToDataSource: 'Назад до джерела даних',
useTemplate: 'Використовуйте цей конвеєр знань',
},
deletePipeline: {
title: 'Ви впевнені, що видалили цей шаблон пайплайну?',
content: 'Видалення шаблону трубопроводу є незворотнім.',
},
publishPipeline: {
success: {
message: 'Опубліковано портфель знань',
},
error: {
message: 'Не вдалося опублікувати конвеєр знань',
},
},
publishTemplate: {
success: {
learnMore: 'Дізнатися більше',
message: 'Опубліковано шаблон пайплайну',
tip: 'Ви можете використовувати цей шаблон на сторінці створення.',
},
error: {
message: 'Не вдалося опублікувати шаблон пайплайну',
},
},
exportDSL: {
successTip: 'Успішний експорт DSL воронки продажів',
errorTip: 'Не вдалося експортувати DSL пайплайну',
},
details: {
structure: 'Структура',
structureTooltip: 'Структура фрагментів визначає, як документи розділяються та індексуються (пропонуючи режими «Загальні», «Батьки-дочірні елементи» та «Запитання й відповіді»), і є унікальною для кожної бази знань.',
},
testRun: {
steps: {
dataSource: 'Джерело даних',
documentProcessing: 'Обробка документів',
},
dataSource: {
localFiles: 'Локальні файли',
},
notion: {
docTitle: 'Notion docs',
title: 'Обирайте сторінки Notion',
},
title: 'Тестовий запуск',
tooltip: 'У режимі тестового запуску дозволяється імпортувати лише один документ за раз для полегшення налагодження та спостереження.',
},
inputFieldPanel: {
uniqueInputs: {
title: 'Унікальні входи для кожного входу',
tooltip: 'Унікальні входи доступні лише для вибраного джерела даних та його подальших вузлів. Користувачам не потрібно буде заповнювати його при виборі інших джерел даних. На першому кроці з\'являться лише поля введення, на які посилаються змінні джерела даних (Джерело даних). Всі інші поля будуть показані на другому кроці (Обробка документів).',
},
globalInputs: {
title: 'Глобальні входи для всіх входів',
tooltip: 'Глобальні входи є спільними для всіх вузлів. Користувачам потрібно буде заповнити їх при виборі будь-якого джерела даних. Наприклад, такі поля, як роздільник і максимальна довжина фрагмента, можуть бути однаково застосовані до кількох джерел даних. На першому кроці відображаються лише поля вводу, на які посилаються змінні джерела даних (джерело даних). Усі інші поля з\'являться на другому кроці (Обробка документів).',
},
preview: {
stepOneTitle: 'Джерело даних',
stepTwoTitle: 'Обробляти документи',
},
error: {
variableDuplicate: 'Ім\'я змінної вже існує. Будь ласка, виберіть іншу назву.',
},
addInputField: 'Додати поле введення',
editInputField: 'Редагувати поле введення',
title: 'Поля для введення даних користувачем',
description: 'Поля введення користувача використовуються для визначення та збору змінних, необхідних під час виконання воронки продажів. Користувачі можуть налаштовувати тип поля та гнучко налаштовувати вхідне значення для задоволення потреб різних джерел даних або етапів обробки документів.',
},
addDocuments: {
steps: {
processingDocuments: 'Оформлення документів',
processDocuments: 'Обробляти документи',
chooseDatasource: 'Виберіть джерело даних',
},
stepOne: {
preview: 'Попередній перегляд',
},
stepTwo: {
chunkSettings: 'Налаштування фрагментів',
previewChunks: 'Фрагменти попереднього перегляду',
},
stepThree: {
learnMore: 'Дізнатися більше',
},
characters: 'Символів',
backToDataSource: 'Джерело даних',
title: 'Додати документи',
},
documentSettings: {
title: 'Параметри документа',
},
onlineDocument: {},
onlineDrive: {
breadcrumbs: {
allFiles: 'Всі файли',
searchPlaceholder: 'Пошук файлів...',
allBuckets: 'Усі сегменти хмарного сховища',
},
emptyFolder: 'Ця папка порожня',
emptySearchResult: 'Предметів не знайдено',
resetKeywords: 'Скидання ключових слів',
notSupportedFileType: 'Цей тип файлу не підтримується',
},
credentialSelector: {},
conversion: {
confirm: {
title: 'Підтвердження',
content: 'Ця дія є постійною. Ви не зможете повернутися до попереднього способу. Будь ласка, підтвердьте конвертацію.',
},
title: 'Перетворення на конвеєр знань',
warning: 'Цю дію не можна скасувати.',
successMessage: 'Успішно перетворили набір даних у пайплайн',
errorMessage: 'Не вдалося перетворити набір даних у пайплайн',
descriptionChunk2: '— більш відкритий та гнучкий підхід з доступом до плагінів з нашого маркетплейсу. Це застосує новий метод обробки до всіх майбутніх документів.',
descriptionChunk1: 'Тепер ви можете перетворити наявну базу знань на використання Knowledge Pipeline для обробки документів',
},
knowledgeDescription: 'Опис знань',
knowledgePermissions: 'Дозволи',
inputField: 'Поле введення',
knowledgeNameAndIcon: 'Знання ім\'я та піктограма',
knowledgeNameAndIconPlaceholder: 'Будь ласка, введіть назву Бази знань',
pipelineNameAndIcon: 'Назва та піктограма воронки продажів',
editPipelineInfo: 'Як редагувати інформацію про воронку продажів',
knowledgeDescriptionPlaceholder: 'Опишіть, що є в цій Базі знань. Детальний опис дозволяє штучному інтелекту більш точно отримати доступ до вмісту набору даних. Якщо значення порожнє, Dify використовуватиме стратегію удару за замовчуванням. (Необов\'язково)',
}
export default translation

View file

@ -37,6 +37,14 @@ const translation = {
indexMethodChangeToEconomyDisabledTip: 'Недоступно для пониження з HQ до ECO',
upgradeHighQualityTip: 'Після оновлення до режиму високої якості повернення до економного режиму недоступне',
searchModel: 'Пошук моделі',
chunkStructure: {
learnMore: 'Дізнатися більше',
description: 'про структуру шматків.',
title: 'Структура шматків',
},
nameAndIcon: 'Ім\'я та піктограма',
numberOfKeywords: 'Кількість ключових слів',
onSearchResults: 'Жодні учасники не відповідають вашому пошуковому запиту.\nСпробуйте виконати пошук ще раз.',
},
}

View file

@ -43,6 +43,10 @@ const translation = {
},
change: 'Змінити',
changeRetrievalMethod: 'Змінити метод пошуку',
keyword_search: {
title: 'Перевернутий індекс',
description: 'Перевернутий індекс — це структура, яка використовується для ефективного пошуку. Упорядкований за термінами, кожен термін вказує на документи або веб-сторінки, що містять його.',
},
},
docsFailedNotice: 'документи не вдалося проіндексувати',
retry: 'Повторити спробу',
@ -150,6 +154,8 @@ const translation = {
chunkingMode: {
parentChild: 'Батьки-діти',
general: 'Загальне',
graph: 'Графік',
qa: 'Питання та відповіді',
},
parentMode: {
fullDoc: 'Повний документ',
@ -218,6 +224,9 @@ const translation = {
addMetadata: 'Додати метадані',
},
embeddingModelNotAvailable: 'Модель вбудовування недоступна.',
updated: 'Оновлено',
createFromPipeline: 'Створюйте на основі Knowledge Pipeline',
externalKnowledgeBase: 'Зовнішня база знань',
}
export default translation

View file

@ -1,4 +1,8 @@
const translation = {
sidebar: {
collapseSidebar: 'Згорнути бічну панель',
expandSidebar: 'Розгорнути бічну панель',
},
}
export default translation

View file

@ -0,0 +1,38 @@
const translation = {
common: {
publishAsPipeline: {
description: 'Опис знань',
namePlaceholder: 'Будь ласка, введіть назву цього конвеєра знань. (Вимагається)',
descriptionPlaceholder: 'Будь ласка, введіть опис цього конвеєра знань. (Необов\'язково)',
name: 'Назва та піктограма воронки продажів',
},
processing: 'Обробки',
testRun: 'Тестовий запуск',
reRun: 'Повторний запуск',
goToAddDocuments: 'Перейти до додавання документів',
preparingDataSource: 'Підготовка джерела даних',
confirmPublish: 'Підтвердити публікацію',
publishAs: 'Публікація у вигляді конвеєра знань',
confirmPublishContent: 'Після успішної публікації конвеєра знань структура фрагментів цієї бази знань не може бути змінена. Ви впевнені, що хочете його опублікувати?',
},
inputField: {
manage: 'Керувати',
create: 'Створити поле для введення даних користувачем',
},
publishToast: {
title: 'Цей трубопровід поки що не опублікований',
desc: 'Якщо конвеєр не опубліковано, ви можете змінити структуру фрагментів у вузлі бази знань, і оркестрація та зміни в конвеєрі будуть автоматично збережені як чернетка.',
},
result: {
resultPreview: {
loading: 'Обробки... Будь ласка, зачекай',
viewDetails: 'Перегляд докладних відомостей',
error: 'Під час виконання сталася помилка',
},
},
ragToolSuggestions: {
title: 'Пропозиції щодо RAG',
},
}
export default translation

View file

@ -17,6 +17,7 @@ const translation = {
agent: 'Агент',
weather: 'Погода',
entertainment: 'Розваги',
rag: 'ТРЯПІЧНАЯ',
},
allTags: 'Всі теги',
searchTags: 'Пошукові теги',

View file

@ -6,6 +6,7 @@ const translation = {
models: 'Моделі',
extensions: 'Розширення',
agents: 'Стратегії агентів',
datasources: 'Джерела даних',
},
categorySingle: {
agent: 'Стратегія агента',
@ -13,6 +14,7 @@ const translation = {
tool: 'Інструмент',
extension: 'Збільшення',
model: 'Модель',
datasource: 'Джерело даних',
},
list: {
source: {
@ -250,6 +252,8 @@ const translation = {
customCredentialUnavailable: 'Індивідуальні облікові дані наразі недоступні',
credentialUnavailable: 'Облікові дані наразі недоступні. Будь ласка, зверніться до адміністратора.',
credentialUnavailableInButton: 'Облікові дані недоступні',
connectedWorkspace: 'Підключене робоче середовище',
emptyAuth: 'Будь ласка, налаштуйте аутентифікацію',
},
deprecated: 'Застарілий',
autoUpdate: {

View file

@ -37,6 +37,7 @@ const translation = {
output: 'РРРР-ММ-ДД',
display: 'MMMM D, YYYY',
outputWithTime: 'YYYY-MM-DDTHH:mm:ss.SSSZ',
input: 'РРРР-ММ-ДД',
},
}

View file

@ -244,6 +244,7 @@ const translation = {
publishTip: 'Додаток не опубліковано. Спочатку опублікуйте додаток.',
},
},
allTools: 'Всі інструменти',
}
export default translation

View file

@ -87,7 +87,6 @@ const translation = {
depthLimit: 'Обмеження рівня паралельного вкладеності шарів {{num}}',
},
disconnect: 'Відключити',
parallelRun: 'Паралельний біг',
jumpToNode: 'Перейти до цього вузла',
addParallelNode: 'Додати паралельний вузол',
parallel: 'ПАРАЛЕЛЬНИЙ',
@ -218,6 +217,8 @@ const translation = {
back: 'Назад',
iteration: 'Ітерація',
loop: 'Петля',
reRun: 'Повторний запуск',
preparingDataSource: 'Підготовка джерела даних',
},
tabs: {
'tools': 'Інструменти',
@ -236,6 +237,8 @@ const translation = {
'searchBlock': 'Пошуковий вузол',
'addAll': 'Додати все',
'allAdded': 'Всі додані',
'sources': 'Джерел',
'searchDataSource': 'Пошук у джерелі даних',
},
blocks: {
'start': 'Початок',
@ -260,6 +263,8 @@ const translation = {
'loop-start': 'Початок циклу',
'loop': 'Петля',
'loop-end': 'Вихід з циклу',
'datasource': 'Джерело даних',
'knowledge-index': 'База знань',
},
blocksAbout: {
'start': 'Визначте початкові параметри для запуску робочого потоку',
@ -282,6 +287,8 @@ const translation = {
'agent': 'Виклик великих мовних моделей для відповідей на запитання або обробки природної мови',
'loop': 'Виконуйте цикл логіки, поки не буде виконано умову завершення або досягнуто максимальну кількість ітерацій.',
'loop-end': 'Еквівалентно "перерві". Цей вузол не має елементів конфігурації. Коли тіло циклу досягає цього вузла, цикл завершується.',
'datasource': 'Джерело даних про',
'knowledge-index': 'База знань про нас',
},
operator: {
zoomIn: 'Збільшити',
@ -382,6 +389,7 @@ const translation = {
input: 'Вхідне значення',
variable: 'Використовуйте змінну',
},
inputVars: 'Вхідні змінні',
},
start: {
required: 'обов\'язковий',
@ -916,6 +924,27 @@ const translation = {
deleteTitle: 'Видалити вузол циклу?',
loopMaxCount: 'Максимальна кількість циклів',
},
dataSource: {
supportedFileFormatsPlaceholder: 'Розширення файлу, e.g. doc',
add: 'Додати джерело даних',
supportedFileFormats: 'Підтримувані формати файлів',
},
knowledgeBase: {
chunkStructureTip: {
learnMore: 'Дізнатися більше',
title: 'Будь ласка, виберіть структуру шматків',
message: 'База знань Dify підтримує три структури, що розділяються: Загальні, Батьки-дочірні та Запитання та відповіді. Кожна база знань може мати тільки одну структуру. Вихідні дані з попереднього вузла повинні співпадати з обраною структурою фрагментів. Зауважимо, що вибір структури фрагментації впливає на доступні методи індексування.',
},
changeChunkStructure: 'Зміна структури фрагментів',
aboutRetrieval: 'про метод пошуку.',
chunkStructure: 'Структура шматків',
chunkIsRequired: 'Потрібна структура шматків',
indexMethodIsRequired: 'Обов\'язковий індексний метод',
chooseChunkStructure: 'Виберіть структуру шматків',
retrievalSettingIsRequired: 'Потрібне налаштування для отримання',
chunksInput: 'Частини',
chunksInputTip: 'Вхідна змінна вузла бази знань - це Частини. Тип змінної - об\'єкт з певною JSON-схемою, яка повинна відповідати вибраній структурі частин.',
},
},
tracing: {
stopBy: 'Зупинено користувачем {{user}}',
@ -986,6 +1015,10 @@ const translation = {
chatNode: 'Розмова',
resetConversationVar: 'Скинути змінну розмови на значення за замовчуванням',
emptyTip: 'Після переходу через вузол на полотні або виконання вузла поетапно, ви можете переглянути поточне значення змінної вузла у Перевірці змінних.',
export: 'експорт',
exportToolTip: 'Експортувати змінну як файл',
largeDataNoExport: 'Великі дані - лише частковий попередній перегляд',
largeData: 'Великий обсяг даних, попередній перегляд лише для читання. Експортуйте, щоб переглянути всі.',
},
lastRunTab: 'Останній запуск',
settingsTab: 'Налаштування',