-- Runtime Few-shots remain semantic vector retrieval. Customer examples are -- governed by their DB approval state, not restricted to exact text matches. UPDATE sg_qa_vector_example SET reference_status = 'APPROVED', reference_kind = 'SQL_TEMPLATE', target_type = 'SINGLE', object_role = 'GAME_GOODS_HOLDINGS', inspection_status = 'VERIFIED', inspection_note = 'Verified CZN-07 semantic Few-shot. Use goods holdings, crystal dimension, RU_FLAG=1, excluded-user filter, nonzero holdings, and daily grouping.', verified_at = SYSTIMESTAMP, verified_by = 'SGMP_POC_METADATA_REVIEW' WHERE source_type = 'CUSTOMER_QA_BENCHMARK' AND source_case_id = 'CZN-07' / CREATE OR REPLACE FUNCTION sg_qa_vector_search( p_question IN CLOB, p_top_k IN PLS_INTEGER DEFAULT 3, p_target_type IN VARCHAR2 DEFAULT 'ANY' ) RETURN SYS_REFCURSOR AUTHID DEFINER IS v_query_vector VECTOR; v_results SYS_REFCURSOR; v_target_type VARCHAR2(16) := UPPER(TRIM(NVL(p_target_type, 'ANY'))); v_max_cosine_distance NUMBER; BEGIN IF p_question IS NULL THEN RAISE_APPLICATION_ERROR(-20003, 'question is required.'); END IF; IF p_top_k IS NULL OR p_top_k < 1 OR p_top_k > 20 THEN RAISE_APPLICATION_ERROR(-20004, 'top_k must be between 1 and 20.'); END IF; IF v_target_type NOT IN ('NONE', 'SINGLE', 'MULTI', 'ALL', 'ANY') THEN RAISE_APPLICATION_ERROR(-20005, 'invalid target type.'); END IF; SELECT number_value INTO v_max_cosine_distance FROM sg_game_scope_policy WHERE policy_key = 'QA_VECTOR_MAX_COSINE_DISTANCE' AND active_yn = 'Y' AND number_value IS NOT NULL; v_query_vector := DBMS_VECTOR.UTL_TO_EMBEDDING( p_question, JSON(sg_qa_vector_params('search_query')) ); OPEN v_results FOR SELECT example_id, question, answer_sql, answer_text, embedding_model, reference_kind, target_type, object_role, source_case_id, source_type, cosine_distance FROM ( SELECT example_id, question, answer_sql, answer_text, embedding_model, reference_kind, target_type, object_role, source_case_id, source_type, VECTOR_DISTANCE(embedding, v_query_vector, COSINE) AS cosine_distance FROM sg_qa_vector_example WHERE reference_status = 'APPROVED' AND inspection_status = 'VERIFIED' AND answer_sql IS NOT NULL AND (source_type = 'POLICY_TEMPLATE' OR NOT REGEXP_LIKE(answer_sql, '<[A-Z][A-Z0-9_]*>', 'i')) AND (target_type = 'ANY' OR v_target_type = 'ANY' OR target_type = v_target_type) ) WHERE cosine_distance <= v_max_cosine_distance ORDER BY cosine_distance, example_id FETCH FIRST p_top_k ROWS ONLY; RETURN v_results; END; / COMMIT