Skip to content

adm_ai_rag_api

This document contains the API documentation for the adm_ai_rag_api package.

Type for embedding configuration

Definition:

type r_embedding_config_type is record (
dimensions number,
provider varchar2(4000 char),
model varchar2(4000 char),
config json_object_t
);

Fields:

NameTypeDescription
dimensionsnumber-
providervarchar2(4000 char)-
modelvarchar2(4000 char)-
configjson_object_t-

Type for the optional LLM (file-input) text-extraction configuration. is_configured is false when the collection has no llm_text_extraction section (built-in extraction is then used for every file). mime_types is always populated (defaults to application/pdf) and lowercased; annotation_* are null unless the apply_to filter restricts extraction to annotated documents.

Definition:

type r_llm_extraction_config_type is record (
is_configured boolean,
provider varchar2(4000 char),
model varchar2(4000 char),
config json_object_t,
prompt clob,
mime_types apex_t_varchar2,
annotation_key varchar2(255 char),
annotation_value varchar2(4000 char)
);

Fields:

NameTypeDescription
is_configuredboolean-
providervarchar2(4000 char)-
modelvarchar2(4000 char)-
configjson_object_t-
promptclob-
mime_typesapex_t_varchar2-
annotation_keyvarchar2(255 char)-
annotation_valuevarchar2(4000 char)-

Type for chunk configuration

Definition:

type r_chunk_config_type is record (
target_chunk_size number,
overlap_size number,
min_chunk_size number,
max_chunk_size number
);

Fields:

NameTypeDescription
target_chunk_sizenumber-
overlap_sizenumber-
min_chunk_sizenumber-
max_chunk_sizenumber-

Type for the optional hybrid-search configuration (vector + Oracle Text + RRF). is_enabled is false when the collection has no hybrid_search section (vector-only).

Definition:

type r_hybrid_config_type is record (
is_enabled boolean,
rrf_k number,
doc_candidates number,
vector_weight number,
keyword_weight number
);

Fields:

NameTypeDescription
is_enabledboolean-
rrf_knumber-
doc_candidatesnumber-
vector_weightnumber-
keyword_weightnumber-

Type for matched chunk result

Definition:

type r_matched_chunk_type is record (
rag_chunk_id number,
chunk_index number,
chunk_text clob,
score number,
document_id number,
document_name varchar2(4000 char),
version_id number,
version_number number
);

Fields:

NameTypeDescription
rag_chunk_idnumber-
chunk_indexnumber-
chunk_textclob-
scorenumber-
document_idnumber-
document_namevarchar2(4000 char)-
version_idnumber-
version_numbernumber-

Type for prepared source

Definition:

type r_source_type is record (
document_id number,
document_name varchar2(4000 char),
version_id number,
version_number number,
source_text clob,
chunk_count number,
avg_score number
);

Fields:

NameTypeDescription
document_idnumber-
document_namevarchar2(4000 char)-
version_idnumber-
version_numbernumber-
source_textclob-
chunk_countnumber-
avg_scorenumber-

Gets the embedding configuration for a RAG collection

Signature:

function get_embedding_config (
p_rag_collection_id in number
) return r_embedding_config_type;

Parameters:

NameDirectionTypeDescription
p_rag_collection_idinnumberID of the collection

Returns: r_embedding_config_type - Embedding configuration record


Gets the chunk configuration for a RAG collection

Signature:

function get_chunk_config (
p_rag_collection_id in number
) return r_chunk_config_type;

Parameters:

NameDirectionTypeDescription
p_rag_collection_idinnumberID of the collection

Returns: r_chunk_config_type - Chunk configuration record


Gets the configured vector backend for a RAG collection.

Signature:

function get_vector_store (
p_rag_collection_id in number
) return varchar2;

Parameters:

NameDirectionTypeDescription
p_rag_collection_idinnumberID of the collection

Returns: varchar2 - ‘ORACLE’ (native Oracle vector search) or ‘QDRANT’ (external Qdrant; also the default for legacy collections that predate the vector_store option)


Gets the optional LLM text-extraction configuration for a RAG collection. Returns is_configured = false (built-in extraction) when the collection has no llm_text_extraction section.

Signature:

function get_llm_extraction_config (
p_rag_collection_id in number
) return r_llm_extraction_config_type;

Parameters:

NameDirectionTypeDescription
p_rag_collection_idinnumberID of the collection

Returns: r_llm_extraction_config_type - LLM text-extraction configuration record


Gets the optional hybrid-search configuration for a RAG collection. Returns is_enabled = false (vector-only) when the collection has no hybrid_search section; numeric fields fall back to defaults (rrf_k 60, doc_candidates 20, weights 1).

Signature:

function get_hybrid_config (
p_rag_collection_id in number
) return r_hybrid_config_type;

Parameters:

NameDirectionTypeDescription
p_rag_collection_idinnumberID of the collection

Returns: r_hybrid_config_type - Hybrid-search configuration record


Creates a new RAG collection with JSON configuration validation

Signature:

function create_rag_collection (
p_collection_name in varchar2,
p_description in varchar2 default null,
p_config_json in clob
) return number;

Parameters:

NameDirectionTypeDescription
p_collection_nameinvarchar2Name of the collection (must be lowercase)
p_descriptioninvarchar2 default nullDescription of the collection
p_config_jsoninclobJSON configuration containing required attributes

Returns: number - The ID of the created RAG collection


Updates an existing RAG collection

Signature:

procedure update_rag_collection (
p_rag_collection_id in number,
p_collection_name in varchar2 default null,
p_description in varchar2 default null,
p_config_json in clob default null
);

Parameters:

NameDirectionTypeDescription
p_rag_collection_idinnumberID of the collection to update
p_collection_nameinvarchar2 default nullOptional new name for the collection
p_descriptioninvarchar2 default nullOptional new description
p_config_jsoninclob default nullOptional new JSON configuration

Deletes a RAG collection by ID

Signature:

procedure delete_rag_collection (
p_rag_collection_id in number
);

Parameters:

NameDirectionTypeDescription
p_rag_collection_idinnumberID of the collection to delete

Deletes a RAG collection by name

Signature:

procedure delete_rag_collection (
p_collection_name in varchar2
);

Parameters:

NameDirectionTypeDescription
p_collection_nameinvarchar2Name of the collection to delete

Searches for matching chunks in a RAG collection

Signature:

function search_chunks (
p_rag_collection_id in number,
p_query in varchar2,
p_limit in number default null,
p_score_threshold in number default null,
p_rewrite_query in boolean default null,
p_rewrite_provider in varchar2 default null,
p_rewrite_model in varchar2 default null,
p_rewrite_config in json_object_t default null,
p_document_id in number default null
) return t_matched_chunks_type pipelined;

Parameters:

NameDirectionTypeDescription
p_rag_collection_idinnumberID of the collection to search
p_queryinvarchar2The search query
p_limitinnumber default nullMaximum number of chunks to return; null uses the collection’s default_limit
p_score_thresholdinnumber default nullMinimum similarity score (0-1); null uses the collection’s default_score_threshold
p_rewrite_queryinboolean default nullWhether to rewrite query using LLM
p_rewrite_providerinvarchar2 default nullOverride provider for query rewriting
p_rewrite_modelinvarchar2 default nullOverride model for query rewriting
p_rewrite_configinjson_object_t default nullOverride UC AI config (merged over the collection’s
query_rewriting.config; override keys win) for query rewriting |

| p_document_id | in | number default null | Restrict the search to this document’s chunks; null (the default) searches the whole collection. Needs the native Oracle vector store: Qdrant points carry no payload to filter on, so a QDRANT collection raises adm_ai_error.e_no_doc_scoped_search rather than quietly searching everything. A document that is in the collection but has no active file yields no rows. |

Returns: t_matched_chunks_type pipelined - Collection of matched chunks


Prepares sources from matched chunks, grouping by document. Documents are ranked by their best chunk score, so p_max_sources returns the most relevant documents. Each matched chunk is expanded by p_surrounding_chunks neighboring chunks on each side; overlapping character ranges are merged so the source text contains no duplicated passages, and non-contiguous regions are separated by a ’[…]’ marker.

Signature:

function prepare_sources (
p_rag_collection_id in number,
p_query in varchar2,
p_limit in number default null,
p_score_threshold in number default null,
p_max_sources in number default null,
p_surrounding_chunks in number default null,
p_rewrite_query in boolean default null,
p_rewrite_provider in varchar2 default null,
p_rewrite_model in varchar2 default null,
p_rewrite_config in json_object_t default null,
p_document_id in number default null
) return t_sources_type pipelined;

Parameters:

NameDirectionTypeDescription
p_rag_collection_idinnumberID of the collection
p_queryinvarchar2The search query
p_limitinnumber default nullMaximum number of chunks to retrieve; null uses the collection’s default_limit
p_score_thresholdinnumber default nullMinimum similarity score (0-1); null uses the collection’s default_score_threshold
p_max_sourcesinnumber default nullMaximum number of source documents to return; null uses the collection’s default_max_sources
p_surrounding_chunksinnumber default nullNumber of neighboring chunks to include around each matched
chunk (0 = matched chunks only); null uses the collection's default_surrounding_chunks |

| p_rewrite_query | in | boolean default null | Whether to rewrite query using LLM | | p_rewrite_provider | in | varchar2 default null | Override provider for query rewriting | | p_rewrite_model | in | varchar2 default null | Override model for query rewriting | | p_rewrite_config | in | json_object_t default null | Override UC AI config (merged over the collection’s query_rewriting.config; override keys win) for query rewriting | | p_document_id | in | number default null | Restrict the search to this document’s chunks; null (the default) searches the whole collection. See search_chunks for the vector-store requirement. With a document bound, p_max_sources is naturally 1. |

Returns: t_sources_type pipelined - Collection of prepared sources


Generates an AI answer based on RAG sources

Signature:

function generate_answer (
p_rag_collection_id in number,
p_query in varchar2,
p_limit in number default null,
p_score_threshold in number default null,
p_max_sources in number default null,
p_surrounding_chunks in number default null,
p_system_prompt in clob default null,
p_rewrite_query in boolean default null,
p_rewrite_provider in varchar2 default null,
p_rewrite_model in varchar2 default null,
p_rewrite_config in json_object_t default null,
p_answer_provider in varchar2 default null,
p_answer_model in varchar2 default null,
p_answer_config in json_object_t default null
) return clob;

Parameters:

NameDirectionTypeDescription
p_rag_collection_idinnumberID of the collection
p_queryinvarchar2The user’s question
p_limitinnumber default nullMaximum number of chunks to retrieve; null uses the collection’s default_limit
p_score_thresholdinnumber default nullMinimum similarity score (0-1); null uses the collection’s default_score_threshold
p_max_sourcesinnumber default nullMaximum number of source documents; null uses the collection’s default_max_sources
p_surrounding_chunksinnumber default nullNumber of neighboring chunks to include around each matched
chunk; null uses the collection's default_surrounding_chunks |

| p_system_prompt | in | clob default null | Custom system prompt for answer generation; null uses the collection’s answer_model.system_prompt, falling back to a built-in prompt | | p_rewrite_query | in | boolean default null | Whether to rewrite query using LLM | | p_rewrite_provider | in | varchar2 default null | Override provider for query rewriting | | p_rewrite_model | in | varchar2 default null | Override model for query rewriting | | p_rewrite_config | in | json_object_t default null | Override UC AI config (merged over the collection’s query_rewriting.config; override keys win) for query rewriting | | p_answer_provider | in | varchar2 default null | Override provider for answer generation | | p_answer_model | in | varchar2 default null | Override model for answer generation | | p_answer_config | in | json_object_t default null | Override UC AI config (merged over the collection’s answer_model.config; override keys win) for answer generation |

Returns: clob - Generated answer with sources


Generates an AI answer based on RAG sources with debug logging

Signature:

procedure generate_answer_debug (
p_rag_collection_id in number,
p_query in varchar2,
p_limit in number default null,
p_score_threshold in number default null,
p_max_sources in number default null,
p_surrounding_chunks in number default null,
p_system_prompt in clob default null,
p_rewrite_query in boolean default null,
p_rewrite_provider in varchar2 default null,
p_rewrite_model in varchar2 default null,
p_rewrite_config in json_object_t default null,
p_answer_provider in varchar2 default null,
p_answer_model in varchar2 default null,
p_answer_config in json_object_t default null,
po_answer out nocopy clob,
po_debug_log_id out nocopy number
);

Parameters:

NameDirectionTypeDescription
p_rag_collection_idinnumberID of the collection
p_queryinvarchar2The user’s question
p_limitinnumber default nullMaximum number of chunks to retrieve; null uses the collection’s default_limit
p_score_thresholdinnumber default nullMinimum similarity score (0-1); null uses the collection’s default_score_threshold
p_max_sourcesinnumber default nullMaximum number of source documents; null uses the collection’s default_max_sources
p_surrounding_chunksinnumber default nullNumber of neighboring chunks to include around each matched
chunk; null uses the collection's default_surrounding_chunks |

| p_system_prompt | in | clob default null | Custom system prompt for answer generation; null uses the collection’s answer_model.system_prompt, falling back to a built-in prompt | | p_rewrite_query | in | boolean default null | Whether to rewrite query using LLM | | p_rewrite_provider | in | varchar2 default null | Override provider for query rewriting | | p_rewrite_model | in | varchar2 default null | Override model for query rewriting | | p_rewrite_config | in | json_object_t default null | Override UC AI config (merged over the collection’s query_rewriting.config; override keys win) for query rewriting | | p_answer_provider | in | varchar2 default null | Override provider for answer generation | | p_answer_model | in | varchar2 default null | Override model for answer generation | | p_answer_config | in | json_object_t default null | Override UC AI config (merged over the collection’s answer_model.config; override keys win) for answer generation | | po_answer | out | nocopy clob | OUT: Generated answer with sources | | po_debug_log_id | out | nocopy number | OUT: ID of the debug log entry |


Formats a debug log entry as Markdown

Signature:

function get_debug_log_markdown (
p_debug_log_id in number
) return clob;

Parameters:

NameDirectionTypeDescription
p_debug_log_idinnumberID of the debug log entry

Returns: clob - Markdown formatted debug information