3.2.6 GenAI Summary Ingestion Task
GenAI Summary Ingestion is a workflow task that generates chunk-level and overall summaries, creates embeddings for the summaries, and stores them with metadata in an Oracle AI Database vector table. It is optimized for semantic summary retrieval.
- Reads the source document.
- Splits it into larger summary chunks.
- Generates a summary for each chunk.
- Optionally combines the chunk summaries into one overall summary.
- Generates embeddings for the summaries.
- Stores the summary embeddings and metadata in an Oracle Database vector table.
The task stores generated summaries rather than the original source content. Use the regular GenAI Ingestion task when raw-content retrieval is required.
The task type is: "GENAI_SUMMARY_INGESTION"
The summary behavior is controlled by the prompts and metadata supplied in the task input.
Prerequisites
Before adding this task, ensure that you have completed the following:
- Create an Oracle AI Database vector table. Use the
VECTORdata type as shown in the following example. The table must be compatible with the vector store schema used by MicroTx Workflows.CREATE TABLE DOCUMENT_SUMMARY_DATA ( id VARCHAR2(36) PRIMARY KEY, content CLOB, metadata JSON, embedding VECTOR );For more information about creating a table, see Create Tables Using the VECTOR Data Type in Oracle AI Vector Search User's Guide.
- Create a Database Connector Profile for the Oracle AI Database instance containing the vector table. Note down this name as you will provide this name later. See Create a Database Profile.
- Create an LLM Connector Profile containing the embedding model used to generate summaries. See Create an LLM Definition.
- Identify the document, file, URL, or text content to summarize.
To add a GenAI Summary Ingestion Task
- Navigate to the Task tab in the Workflow Builder. See Access the Task Tab in Workflow Builder.
- Add GenAI Summary Ingestion Task.
- Select the task and provide the task details.
- Configure the GenAI Summary Ingestion task parameters described below.
- LLM Profile (
llmProfile): Mandatory. LLM profile used to generate chunk and overall summaries. The profile must contain at least one model. - LLM Profile Name (
llmProfile.name): Mandatory. Name of the summary-generation LLM profile. - LLM Profile Model (
llmProfile.model): Optional. Model to use for summary generation. Defaults to the first model in the profile. - Embedding Model Profile (
embeddingModelProfile): Mandatory. LLM profile containing the embedding model. - Embedding Model Profile Name (
embeddingModelProfile.name): Mandatory. Name of the embedding model profile. - Embedding Model Profile Model (
embeddingModelProfile.model): Optional. Model used to generate vector embeddings. - Data Store Profile (
dataStoreProfile): Mandatory. Database profile for the Oracle AI Database vector table. - Table Name (
tableName): Mandatory. Name of the vector table where summary embeddings are stored. - Data (
data): Mandatory. Source content to summarize. Supported sources areWEB,OCI,LOCAL, andTEXT, with source-specific fields such asurl,filePath, or inline text. - Dimensions (
dimensions): Optional. Number of dimensions in the embedding vector. Must match the embedding model output and vector column definition. Defaults to 512. - .Index Type (
indexType): Optional. Vector index type. Supported values areHNSW(Default),IVF, andNONE. - Distance Type (
distanceType): Optional. Vector similarity distance. Supported values includeCOSINE(Default),DOT,EUCLIDEAN,MANHATTAN, andEUCLIDEAN_SQUARED. - Keep Separator (
keepSeparator): Optional. Retains separators such as newline characters while splitting source content. Defaults totrue. - Document Metadata (
documentMetadata): Optional. Custom metadata copied to generated summary documents. Use fields such asproject_id,source_path,file_path,artifact_type,language,active, andcontent_hashto scope later retrieval. Defaults to an empty object. - Enable Idempotency (
enableIdempotency): Optional. Prevents duplicate summary ingestion for the same workflow and task idempotency keys. Defaults tofalse. - Idempotent Table Name (
idempotentTableName): Optional. Table used for idempotency lock information. Default table isfenced_task_idempotency_lock.
- LLM Profile (
- Save and confirm the workflow.
Source Data Example
Web URL:
"data": {
"source": "web",
"url": "https://example.com/design-document.html"
}"data": {
"source": "text",
"text": "Text to summarize"
}Summary Chunking Parameters
| Parameter | Required | Default Value | Description |
|---|---|---|---|
summaryChunkSize |
No | 8000 |
Target size of each summary input chunk. Larger chunks reduce the number of LLM calls but may reduce detail. |
summaryMinChunkSizeChars |
No | 200 |
Minimum chunk size in characters. Chunks smaller than this threshold may be combined or excluded by the splitting process. |
summaryMinChunkLengthToEmbed |
No | 20 |
Minimum generated summary length required before an embedding is created. |
summaryMaxNumChunks |
No | 10000 |
Maximum number of summary chunks generated from the source. |
Advanced Summary Controls
| Parameter | Required | Default | Valid Range/Behavior | Description |
|---|---|---|---|---|
ingestChunkSummaries |
No | true |
Boolean | Stores one generated summary for each source chunk. Use these summaries for section-level or focused retrieval. |
ingestOverallSummary |
No | true |
Boolean | Generates and stores one overall summary for each source document. Use this for high-level document or file questions. |
maxParallelSummaries |
No | 4 |
1 - 64 | Maximum number of chunk-summary LLM calls executed concurrently. Higher values may reduce duration but increase model usage and provider load. |
maxParallelIngestions |
No | 1 |
1 - 32 | Maximum number of vector-ingestion batches executed concurrently. Increase only after validating database capacity and embedding-provider limits. |
ingestionBatchSize |
No | 100 |
1 - 1000 | Number of generated summary documents ingested in one vector-store batch. |
summaryReduceBatchSize |
No | 20 |
2 - 100 | Number of chunk summaries combined in one intermediate reduction request when generating the overall summary. |
summaryProgressLogInterval |
No | 25 |
1 - 1000 | Logs progress after this number of completed chunk summaries or reduction batches. |
{
"summaryChunkSize": 8000,
"summaryMinChunkSizeChars": 200,
"summaryMinChunkLengthToEmbed": 20,
"summaryMaxNumChunks": 10000,
"maxParallelSummaries": 4,
"maxParallelIngestions": 1,
"ingestionBatchSize": 100,
"summaryReduceBatchSize": 20,
"summaryProgressLogInterval": 25
} For very large code files, increasing summaryChunkSize can substantially reduce the number of summary-generation requests. Increase maxParallelSummaries only when the LLM provider can support the additional concurrent requests.
Summary Prompts
summaryPrompt- Optional prompt used to summarize each source chunk. If omitted, the task uses a default prompt that instructs the model to:- Keep the summary factual and coverage-oriented.
- Include important names, headings, inputs, outputs, side effects, dependencies, conditions, notable logic, business rules, errors, and unresolved items.
- Preserve enough detail for the overall summary.
- Avoid inventing behavior not visible in the source chunk.
Example"summaryPrompt": "Summarize this source chunk for later code or document Q&A. Preserve important names, inputs, outputs, dependencies, business rules, errors, and unresolved items. Do not invent missing context."overallSummaryPrompt- Optional prompt used to create the overall summary from chunk summaries. If omitted, the task uses a default prompt that instructs the model to:- Cover all major topics, including topics found in only one chunk.
- Include purpose, components, data flow, control flow, dependencies, rules, error handling, and unresolved items.
- Preserve uncertainty when the chunk summaries do not provide enough evidence.
Example"overallSummaryPrompt": "Create an overall technical and functional summary from the chunk summaries. Include purpose, major sections, data flow, dependencies, business rules, error handling, and unresolved items. Do not invent unsupported facts."
LLM Generation Parameters
| Parameter | Default | Description |
|---|---|---|
temperature |
0.2 |
Controls randomness in generated summaries. |
maxTokens |
1024 |
Maximum output tokens for models that use max_tokens. |
top_k |
40 |
Top-k sampling parameter. |
top_p |
0.9 |
Nucleus sampling parameter. |
maxCompletionTokens |
2048 |
Maximum completion tokens for models that use max_completion_tokens, including supported reasoning models.
|
guardrails |
None | Optional guardrail configuration applied during summary generation. |
Example
{
"name": "document_summary_ingest",
"taskReferenceName": "document_summary_ingestion",
"type": "GENAI_SUMMARY_INGESTION",
"inputParameters": {
"llmProfile": {
"name": "oci-summary-profile",
"model": "openai.gpt-4.1"
},
"embeddingModelProfile": {
"name": "oci-embedding-profile",
"model": "cohere.embed-multilingual-image-v3.0"
},
"dataStoreProfile": "oracle-atp-vector",
"tableName": "DOCUMENT_SUMMARY_DATA",
"data": {
"source": "local",
"filePath": "docs/payment-design.md"
},
"dimensions": 512,
"indexType": "HNSW",
"distanceType": "COSINE",
"keepSeparator": true,
"documentMetadata": {
"project_id": "claims-migration",
"source_path": "docs/payment-design.md",
"artifact_type": "DOCUMENT_SUMMARY",
"active": true
},
"summaryChunkSize": 8000,
"summaryMinChunkSizeChars": 200,
"summaryMinChunkLengthToEmbed": 20,
"summaryMaxNumChunks": 10000,
"ingestChunkSummaries": true,
"ingestOverallSummary": true,
"maxParallelSummaries": 4,
"maxParallelIngestions": 1,
"ingestionBatchSize": 100,
"summaryReduceBatchSize": 20,
"summaryProgressLogInterval": 25,
"enableIdempotency": true,
"idempotentTableName": "fenced_task_idempotency_lock"
}
} Parent topic: Create System Tasks and Operator Tasks