feat: add dedicated Cohere Embed 4 QA vector retrieval
This commit is contained in:
70
docs/design/723-sgmp-qa-vector-retrieval/README.md
Normal file
70
docs/design/723-sgmp-qa-vector-retrieval/README.md
Normal file
@@ -0,0 +1,70 @@
|
||||
# 723. SGMP QA Vector Retrieval
|
||||
|
||||
## Goal
|
||||
|
||||
Store curated question, answer SQL, answer text, and their combined retrieval
|
||||
document in `SGMP_POC`. Retrieve the top-K closest examples for a new question
|
||||
and pass the returned context to the Text2SQL prompt in a later application
|
||||
integration.
|
||||
|
||||
## Security boundary
|
||||
|
||||
- IAM identity: `sgmp-qa-vector-api`
|
||||
- IAM group: `sgmp-vector-embed-group`
|
||||
- IAM policy: only `use generative-ai-text-embedding in tenancy`
|
||||
- Database credential: `SGMP_POC_QA_VECTOR_CRED`, created from that dedicated
|
||||
API signing key only. It does not reuse `SGMP_POC_OCI_DEFAULT_CRED`.
|
||||
- Network: HTTPS only to OCI GenAI Chicago EmbedText endpoint on port 443. The
|
||||
`SGMP_POC` ACE is provisioned once by an ADB `ADMIN` connection because an
|
||||
application schema cannot administer network ACLs.
|
||||
- The private key is read from `VECTOR_OCI_API_KEY_FILE`; it is never committed,
|
||||
displayed, or persisted outside the encrypted database credential.
|
||||
|
||||
## Embedding contract
|
||||
|
||||
- Model: `cohere.embed-v4.0`
|
||||
- Dimension: `1536` FLOAT32
|
||||
- The current ADB `DBMS_VECTOR` OCI adapter does not forward Cohere Embed 4's
|
||||
`input_type` field; both paths therefore use the provider's compatible
|
||||
default request shape. The model and 1536-dimension vector contract remain
|
||||
fixed. Once the adapter exposes Embed 4 `input_type`, switch stored examples
|
||||
to `search_document` and incoming questions to `search_query`.
|
||||
- `p_top_k` default: `3` (accepted range `1..20`)
|
||||
|
||||
Oracle recommends distinct document/query input types for Cohere Embed 4 RAG
|
||||
flows and its default output size is 1536. See [Cohere Embed 4](https://docs.oracle.com/en-us/iaas/Content/generative-ai/cohere-embed-4.htm).
|
||||
|
||||
## Database API
|
||||
|
||||
```sql
|
||||
-- Stores question + answer SQL + optional answer and returns EXAMPLE_ID.
|
||||
SELECT sg_qa_vector_store(:question, :answer_sql, :answer_text) FROM dual;
|
||||
|
||||
-- Returns EXAMPLE_ID, QUESTION, ANSWER_SQL, ANSWER_TEXT, MODEL and distance.
|
||||
DECLARE
|
||||
results SYS_REFCURSOR;
|
||||
BEGIN
|
||||
results := sg_qa_vector_search(:question); -- default top 3
|
||||
END;
|
||||
/
|
||||
|
||||
-- Ready-to-insert textual context for a prompt.
|
||||
SELECT sg_qa_vector_context(:question, 3) FROM dual;
|
||||
```
|
||||
|
||||
## Apply
|
||||
|
||||
```bash
|
||||
export SGMP_POC_DB_PASSWORD='...'
|
||||
export SGMP_POC_WALLET_DIR='/path/to/Wallet_SGMPAIPOC'
|
||||
export VECTOR_OCI_USER_OCID='...'
|
||||
export VECTOR_OCI_TENANCY_OCID='...'
|
||||
export VECTOR_OCI_COMPARTMENT_OCID='...'
|
||||
export VECTOR_OCI_API_KEY_FILE='/secure/path/sgmp_qa_vector_api_key.pem'
|
||||
export VECTOR_OCI_API_KEY_FINGERPRINT='...'
|
||||
./scripts/setup-sgmp-qa-vector.sh
|
||||
```
|
||||
|
||||
For the initial small QA corpus, exact cosine search is deliberate: it makes
|
||||
results immediately verifiable. Add a vector index only after the corpus size
|
||||
and recall/latency target are measured.
|
||||
Reference in New Issue
Block a user