Files
ragflow/agent/templates/advanced_ingestion_pipeline.json

823 lines
50 KiB
JSON
Raw Normal View History

{
"id": 23,
"title": {
"en": "Advanced Ingestion Pipeline",
"de": "Erweiterte Ingestion Pipeline",
"zh": "编排复杂的 Ingestion Pipeline"
},
"description": {
"en": "This template demonstrates how to use an LLM to generate summaries, keywords, Q&A, and metadata for each chunk to support diverse retrieval needs.",
"de": "Diese Vorlage demonstriert, wie ein LLM verwendet wird, um Zusammenfassungen, Schlüsselwörter, Fragen & Antworten und Metadaten für jedes Segment zu generieren, um vielfältige Abrufanforderungen zu unterstützen.",
"zh": "此模板演示如何利用大模型为切片生成摘要、关键词、问答及元数据,以满足多样化的召回需求。"
},
"canvas_type": "Ingestion Pipeline",
"canvas_category": "dataflow_canvas",
"dsl": {
"components": {
"Extractor:CurlyEmusJam": {
"downstream": [
"Tokenizer:WittySunsListen"
],
"obj": {
"component_name": "Extractor",
"params": {
"field_name": "metadata",
"frequencyPenaltyEnabled": true,
"frequency_penalty": 0.7,
"llm_id": "THUDM/GLM-4.1V-9B-Thinking@SILICONFLOW",
"maxTokensEnabled": false,
"max_tokens": 256,
"outputs": {
"chunks": {
"type": "Array<Object>",
"value": []
}
},
"presencePenaltyEnabled": true,
"presence_penalty": 0.4,
"prompts": [
{
"content": "Content:\n{Extractor:SmartWindowsHammer@chunks}",
"role": "user"
}
],
"sys_prompt": "Extract important structured information from the given content. Output ONLY a valid JSON string with no additional text. If no important structured information is found, output an empty JSON object: {}.\n\nImportant structured information may include: names, dates, locations, events, key facts, numerical data, or other extractable entities.",
"temperature": 0.1,
"temperatureEnabled": true,
"tenant_llm_id": 63,
"topPEnabled": true,
"top_p": 0.3
}
},
"upstream": [
"Extractor:SmartWindowsHammer"
]
},
"Extractor:LazyCarpetsKiss": {
"downstream": [
"Extractor:LovelyPearsRest"
],
"obj": {
"component_name": "Extractor",
"params": {
"field_name": "summary",
"frequencyPenaltyEnabled": true,
"frequency_penalty": 0.7,
"llm_id": "THUDM/GLM-4.1V-9B-Thinking@SILICONFLOW",
"maxTokensEnabled": false,
"max_tokens": 256,
"outputs": {
"chunks": {
"type": "Array<Object>",
"value": []
}
},
"presencePenaltyEnabled": true,
"presence_penalty": 0.4,
"prompts": [
{
"content": "Text to Summarize:\n{TokenChunker:BumpyStarsPress@chunks}",
"role": "user"
}
],
"sys_prompt": "Act as a precise summarizer. Your task is to create a summary of the provided content that is both concise and faithful to the original.\n\nKey Instructions:\n1. Accuracy: Strictly base the summary on the information given. Do not introduce any new facts, conclusions, or interpretations that are not explicitly stated.\n2. Language: Write the summary in the same language as the source text.\n3. Objectivity: Present the key points without bias, preserving the original intent and tone of the content. Do not editorialize.\n4. Conciseness: Focus on the most important ideas, omitting minor details and fluff.",
"temperature": 0.1,
"temperatureEnabled": true,
"tenant_llm_id": 63,
"topPEnabled": true,
"top_p": 0.3
}
},
"upstream": [
"TokenChunker:BumpyStarsPress"
]
},
"Extractor:LovelyPearsRest": {
"downstream": [
"Extractor:SmartWindowsHammer"
],
"obj": {
"component_name": "Extractor",
"params": {
"field_name": "keywords",
"frequencyPenaltyEnabled": true,
"frequency_penalty": 0.7,
"llm_id": "THUDM/GLM-4.1V-9B-Thinking@SILICONFLOW",
"maxTokensEnabled": false,
"max_tokens": 256,
"outputs": {
"chunks": {
"type": "Array<Object>",
"value": []
}
},
"presencePenaltyEnabled": true,
"presence_penalty": 0.4,
"prompts": [
{
"content": "Text Content\n{Extractor:LazyCarpetsKiss@chunks}",
"role": "user"
}
],
"sys_prompt": "Role\nYou are a text analyzer.\n\nTask\nExtract the most important keywords/phrases of a given piece of text content.\n\nRequirements\n- Summarize the text content, and give the top 5 important keywords/phrases.\n- The keywords MUST be in the same language as the given piece of text content.\n- The keywords are delimited by ENGLISH COMMA.\n- Output keywords ONLY.",
"temperature": 0.1,
"temperatureEnabled": true,
"tenant_llm_id": 63,
"topPEnabled": true,
"top_p": 0.3
}
},
"upstream": [
"Extractor:LazyCarpetsKiss"
]
},
"Extractor:SmartWindowsHammer": {
"downstream": [
"Extractor:CurlyEmusJam"
],
"obj": {
"component_name": "Extractor",
"params": {
"field_name": "questions",
"frequencyPenaltyEnabled": true,
"frequency_penalty": 0.7,
"llm_id": "THUDM/GLM-4.1V-9B-Thinking@SILICONFLOW",
"maxTokensEnabled": false,
"max_tokens": 256,
"outputs": {
"chunks": {
"type": "Array<Object>",
"value": []
}
},
"presencePenaltyEnabled": true,
"presence_penalty": 0.4,
"prompts": [
{
"content": "Text Content\n{Extractor:LovelyPearsRest@chunks}",
"role": "user"
}
],
"sys_prompt": "Role\nYou are a text analyzer.\n\nTask\nPropose 3 questions about a given piece of text content.\n\nRequirements\n- Understand and summarize the text content, and propose the top 3 important questions.\n- The questions SHOULD NOT have overlapping meanings.\n- The questions SHOULD cover the main content of the text as much as possible.\n- The questions MUST be in the same language as the given piece of text content.\n- One question per line.\n- Output questions ONLY.",
"temperature": 0.1,
"temperatureEnabled": true,
"tenant_llm_id": 63,
"topPEnabled": true,
"top_p": 0.3
}
},
"upstream": [
"Extractor:LovelyPearsRest"
]
},
"File": {
"downstream": [
"Parser:HipSignsRhyme"
],
"obj": {
"component_name": "File",
"params": {}
},
"upstream": []
},
"Parser:HipSignsRhyme": {
"downstream": [
"TokenChunker:BumpyStarsPress"
],
"obj": {
"component_name": "Parser",
"params": {
"outputs": {
"html": {
"type": "string",
"value": ""
},
"json": {
"type": "Array<object>",
"value": []
},
"markdown": {
"type": "string",
"value": ""
},
"text": {
"type": "string",
"value": ""
}
},
"setups": {
"doc": {
"output_format": "json",
"preprocess": "main_content",
"suffix": [
"doc"
]
},
"docx": {
"flatten_media_to_text": false,
"output_format": "json",
"preprocess": "main_content",
"suffix": [
"docx"
],
"vlm": {}
},
"email": {
"fields": [
"from",
"to",
"cc",
"bcc",
"date",
"subject",
"body",
"attachments"
],
"output_format": "text",
"preprocess": "main_content",
"suffix": [
"eml",
"msg"
]
},
"html": {
"output_format": "json",
"preprocess": "main_content",
"suffix": [
"htm",
"html"
]
},
"image": {
"output_format": "text",
"parse_method": "ocr",
"preprocess": "main_content",
"suffix": [
"jpg",
"jpeg",
"png",
"gif"
],
"system_prompt": ""
},
"markdown": {
"flatten_media_to_text": false,
"output_format": "json",
"preprocess": "main_content",
"suffix": [
"md",
"markdown",
"mdx"
],
"vlm": {}
},
"pdf": {
"flatten_media_to_text": false,
"output_format": "json",
"parse_method": "DeepDOC",
"preprocess": "main_content",
"suffix": [
"pdf"
],
"vlm": {}
},
"slides": {
"output_format": "json",
"parse_method": "DeepDOC",
"preprocess": "main_content",
"suffix": [
"pptx",
"ppt"
]
},
"spreadsheet": {
"flatten_media_to_text": false,
"output_format": "html",
"parse_method": "DeepDOC",
"preprocess": "main_content",
"suffix": [
"xls",
"xlsx",
"csv"
],
"vlm": {}
},
"text&code": {
"output_format": "json",
"preprocess": "main_content",
"suffix": [
"txt",
"py",
"js",
"java",
"c",
"cpp",
"h",
"php",
"go",
"ts",
"sh",
"cs",
"kt",
"sql"
]
}
}
}
},
"upstream": [
"File"
]
},
"TokenChunker:BumpyStarsPress": {
"downstream": [
"Extractor:LazyCarpetsKiss"
],
"obj": {
"component_name": "TokenChunker",
"params": {
"children_delimiters": [],
"chunk_token_size": 512,
"delimiter_mode": "token_size",
"delimiters": [],
"image_context_size": 0,
"outputs": {
"chunks": {
"type": "Array<Object>",
"value": []
}
},
"overlapped_percent": 0,
"table_context_size": 0
}
},
"upstream": [
"Parser:HipSignsRhyme"
]
},
"Tokenizer:WittySunsListen": {
"downstream": [],
"obj": {
"component_name": "Tokenizer",
"params": {
"fields": "text",
"filename_embd_weight": 0.1,
"outputs": {},
"search_method": [
"embedding",
"full_text"
]
}
},
"upstream": [
"Extractor:CurlyEmusJam"
]
}
},
"globals": {
"sys.history": []
},
"graph": {
"edges": [
{
"id": "xy-edge__Filestart-Parser:HipSignsRhymeend",
"source": "File",
"sourceHandle": "start",
"target": "Parser:HipSignsRhyme",
"targetHandle": "end"
},
{
"id": "xy-edge__Parser:HipSignsRhymestart-TokenChunker:BumpyStarsPressend",
"source": "Parser:HipSignsRhyme",
"sourceHandle": "start",
"target": "TokenChunker:BumpyStarsPress",
"targetHandle": "end"
},
{
"id": "xy-edge__TokenChunker:BumpyStarsPressstart-Extractor:LazyCarpetsKissend",
"source": "TokenChunker:BumpyStarsPress",
"sourceHandle": "start",
"target": "Extractor:LazyCarpetsKiss",
"targetHandle": "end"
},
{
"data": {
"isHovered": false
},
"id": "xy-edge__Extractor:LazyCarpetsKissstart-Extractor:LovelyPearsRestend",
"source": "Extractor:LazyCarpetsKiss",
"sourceHandle": "start",
"target": "Extractor:LovelyPearsRest",
"targetHandle": "end"
},
{
"data": {
"isHovered": false
},
"id": "xy-edge__Extractor:LovelyPearsReststart-Extractor:SmartWindowsHammerend",
"selected": false,
"source": "Extractor:LovelyPearsRest",
"sourceHandle": "start",
"target": "Extractor:SmartWindowsHammer",
"targetHandle": "end"
},
{
"data": {
"isHovered": false
},
"id": "xy-edge__Extractor:SmartWindowsHammerstart-Extractor:CurlyEmusJamend",
"selected": false,
"source": "Extractor:SmartWindowsHammer",
"sourceHandle": "start",
"target": "Extractor:CurlyEmusJam",
"targetHandle": "end"
},
{
"data": {
"isHovered": false
},
"id": "xy-edge__Extractor:CurlyEmusJamstart-Tokenizer:WittySunsListenend",
"source": "Extractor:CurlyEmusJam",
"sourceHandle": "start",
"target": "Tokenizer:WittySunsListen",
"targetHandle": "end"
}
],
"nodes": [
{
"data": {
"label": "File",
"name": "File"
},
"id": "File",
"measured": {
"height": 50,
"width": 200
},
"position": {
"x": 50,
"y": 200
},
"sourcePosition": "left",
"targetPosition": "right",
"type": "beginNode"
},
{
"data": {
"form": {
"outputs": {
"html": {
"type": "string",
"value": ""
},
"json": {
"type": "Array<object>",
"value": []
},
"markdown": {
"type": "string",
"value": ""
},
"text": {
"type": "string",
"value": ""
}
},
"setups": [
{
"fileFormat": "pdf",
"flatten_media_to_text": false,
"output_format": "json",
"parse_method": "DeepDOC",
"preprocess": "main_content"
},
{
"fileFormat": "spreadsheet",
"flatten_media_to_text": false,
"output_format": "html",
"parse_method": "DeepDOC",
"preprocess": "main_content"
},
{
"fileFormat": "image",
"output_format": "text",
"parse_method": "ocr",
"preprocess": "main_content",
"system_prompt": ""
},
{
"fields": [
"from",
"to",
"cc",
"bcc",
"date",
"subject",
"body",
"attachments"
],
"fileFormat": "email",
"output_format": "text",
"preprocess": "main_content"
},
{
"fileFormat": "markdown",
"flatten_media_to_text": false,
"output_format": "json",
"preprocess": "main_content"
},
{
"fileFormat": "text&code",
"output_format": "json",
"preprocess": "main_content"
},
{
"fileFormat": "html",
"output_format": "json",
"preprocess": "main_content"
},
{
"fileFormat": "doc",
"output_format": "json",
"preprocess": "main_content"
},
{
"fileFormat": "docx",
"flatten_media_to_text": false,
"output_format": "json",
"preprocess": "main_content"
},
{
"fileFormat": "slides",
"output_format": "json",
"parse_method": "DeepDOC",
"preprocess": "main_content"
}
]
},
"label": "Parser",
"name": "Parser_0"
},
"dragging": false,
"id": "Parser:HipSignsRhyme",
"measured": {
"height": 57,
"width": 200
},
"position": {
"x": 316.99524094206413,
"y": 195.39629819663406
},
"selected": false,
"sourcePosition": "right",
"targetPosition": "left",
"type": "parserNode"
},
{
"data": {
"form": {
"children_delimiters": [],
"chunk_token_size": 512,
"delimiter_mode": "token_size",
"delimiters": [
{
"value": "\n"
}
],
"image_table_context_window": 0,
"outputs": {
"chunks": {
"type": "Array<Object>",
"value": []
}
},
"overlapped_percent": 0
},
"label": "TokenChunker",
"name": "Token Chunker_0"
},
"id": "TokenChunker:BumpyStarsPress",
"measured": {
"height": 74,
"width": 200
},
"position": {
"x": 616.9952409420641,
"y": 195.39629819663406
},
"selected": false,
"sourcePosition": "right",
"targetPosition": "left",
"type": "chunkerNode"
},
{
"data": {
"form": {
"field_name": "summary",
"frequencyPenaltyEnabled": true,
"frequency_penalty": 0.7,
"llm_id": "THUDM/GLM-4.1V-9B-Thinking@SILICONFLOW",
"maxTokensEnabled": false,
"max_tokens": 256,
"outputs": {
"chunks": {
"type": "Array<Object>",
"value": []
}
},
"presencePenaltyEnabled": true,
"presence_penalty": 0.4,
"prompts": "Text to Summarize:\n{TokenChunker:BumpyStarsPress@chunks}",
"sys_prompt": "Act as a precise summarizer. Your task is to create a summary of the provided content that is both concise and faithful to the original.\n\nKey Instructions:\n1. Accuracy: Strictly base the summary on the information given. Do not introduce any new facts, conclusions, or interpretations that are not explicitly stated.\n2. Language: Write the summary in the same language as the source text.\n3. Objectivity: Present the key points without bias, preserving the original intent and tone of the content. Do not editorialize.\n4. Conciseness: Focus on the most important ideas, omitting minor details and fluff.",
"temperature": 0.1,
"temperatureEnabled": true,
"tenant_llm_id": 63,
"topPEnabled": true,
"top_p": 0.3
},
"label": "Extractor",
"name": "Summarization"
},
"id": "Extractor:LazyCarpetsKiss",
"measured": {
"height": 90,
"width": 200
},
"position": {
"x": 916.9952409420641,
"y": 195.39629819663406
},
"selected": false,
"sourcePosition": "right",
"targetPosition": "left",
"type": "contextNode"
},
{
"data": {
"form": {
"field_name": "keywords",
"frequencyPenaltyEnabled": true,
"frequency_penalty": 0.7,
"llm_id": "THUDM/GLM-4.1V-9B-Thinking@SILICONFLOW",
"maxTokensEnabled": false,
"max_tokens": 256,
"outputs": {
"chunks": {
"type": "Array<Object>",
"value": []
}
},
"presencePenaltyEnabled": true,
"presence_penalty": 0.4,
"prompts": "Text Content\n{Extractor:LazyCarpetsKiss@chunks}",
"sys_prompt": "Role\nYou are a text analyzer.\n\nTask\nExtract the most important keywords/phrases of a given piece of text content.\n\nRequirements\n- Summarize the text content, and give the top 5 important keywords/phrases.\n- The keywords MUST be in the same language as the given piece of text content.\n- The keywords are delimited by ENGLISH COMMA.\n- Output keywords ONLY.",
"temperature": 0.1,
"temperatureEnabled": true,
"tenant_llm_id": 63,
"topPEnabled": true,
"top_p": 0.3
},
"label": "Extractor",
"name": "Auto Keyword"
},
"dragging": false,
"id": "Extractor:LovelyPearsRest",
"measured": {
"height": 90,
"width": 200
},
"position": {
"x": 983.5410692821999,
"y": 301.1557383781162
},
"selected": false,
"sourcePosition": "right",
"targetPosition": "left",
"type": "contextNode"
},
{
"data": {
"form": {
"field_name": "questions",
"frequencyPenaltyEnabled": true,
"frequency_penalty": 0.7,
"llm_id": "THUDM/GLM-4.1V-9B-Thinking@SILICONFLOW",
"maxTokensEnabled": false,
"max_tokens": 256,
"outputs": {
"chunks": {
"type": "Array<Object>",
"value": []
}
},
"presencePenaltyEnabled": true,
"presence_penalty": 0.4,
"prompts": "Text Content\n{Extractor:LovelyPearsRest@chunks}",
"sys_prompt": "Role\nYou are a text analyzer.\n\nTask\nPropose 3 questions about a given piece of text content.\n\nRequirements\n- Understand and summarize the text content, and propose the top 3 important questions.\n- The questions SHOULD NOT have overlapping meanings.\n- The questions SHOULD cover the main content of the text as much as possible.\n- The questions MUST be in the same language as the given piece of text content.\n- One question per line.\n- Output questions ONLY.",
"temperature": 0.1,
"temperatureEnabled": true,
"tenant_llm_id": 63,
"topPEnabled": true,
"top_p": 0.3
},
"label": "Extractor",
"name": "Auto Question"
},
"dragging": false,
"id": "Extractor:SmartWindowsHammer",
"measured": {
"height": 90,
"width": 200
},
"position": {
"x": 1021.1009769800036,
"y": 421.67760363913044
},
"selected": false,
"sourcePosition": "right",
"targetPosition": "left",
"type": "contextNode"
},
{
"data": {
"form": {
"field_name": "metadata",
"frequencyPenaltyEnabled": true,
"frequency_penalty": 0.7,
"llm_id": "THUDM/GLM-4.1V-9B-Thinking@SILICONFLOW",
"maxTokensEnabled": false,
"max_tokens": 256,
"outputs": {
"chunks": {
"type": "Array<Object>",
"value": []
}
},
"presencePenaltyEnabled": true,
"presence_penalty": 0.4,
"prompts": "Content:\n{Extractor:SmartWindowsHammer@chunks}",
"sys_prompt": "Extract important structured information from the given content. Output ONLY a valid JSON string with no additional text. If no important structured information is found, output an empty JSON object: {}.\n\nImportant structured information may include: names, dates, locations, events, key facts, numerical data, or other extractable entities.",
"temperature": 0.1,
"temperatureEnabled": true,
"tenant_llm_id": 63,
"topPEnabled": true,
"top_p": 0.3
},
"label": "Extractor",
"name": "Auto Metadata"
},
"dragging": false,
"id": "Extractor:CurlyEmusJam",
"measured": {
"height": 90,
"width": 200
},
"position": {
"x": 1065.7115140232393,
"y": 527.4370438206126
},
"selected": true,
"sourcePosition": "right",
"targetPosition": "left",
"type": "contextNode"
},
{
"data": {
"form": {
"fields": "text",
"filename_embd_weight": 0.1,
"outputs": {},
"search_method": [
"embedding",
"full_text"
]
},
"label": "Tokenizer",
"name": "Indexer_0"
},
"dragging": false,
"id": "Tokenizer:WittySunsListen",
"measured": {
"height": 114,
"width": 200
},
"position": {
"x": 1327.3247542536642,
"y": 164.72133416115918
},
"selected": false,
"sourcePosition": "right",
"targetPosition": "left",
"type": "tokenizerNode"
}
]
},
"history": [],
"messages": [],
"path": [],
"retrieval": [],
"variables": []
},
"avatar": "data:image/png;base64,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
}