1Z0-184-25 Question 146
Single answerYou are designing a Python-based retrieval-augmented generation (RAG) application on Oracle Cloud Infrastructure (OCI). The goal is to process thousands of text documents stored in Oracle Object Storage, generate embeddings for each, and retrieve the top relevant segments at runtime to feed into a text generation model. You also want to leverage OCI� scalable services and ensure easy organization of your embedding data. Which approach should you implement?
- A
Develop a standalone Python script on a local server that reads from Object Storage through the CLI, generates embeddings, and stores them in individual CSV files on Oracle Object Storage for per-request downloads.
- B
Implement a user-managed MySQL database on a self-provisioned OCI Compute instance, load all text and embeddings directly into MySQL, and rely on manual indexing for queries.
- C
Use Oracle Data Flow to batch-download documents from Object Storage, generate embeddings in Python, store them in Oracle Autonomous Database with vector search, and retrieve embeddings at query time from a Python application deployed in OCI.
- D
Upload documents to Oracle Functions, embed them in memory for immediate requests, and discard embeddings after each function invocation to reduce storage overhead.
Show answer and explanation
Correct answer: C
Explanation
Creating a RAG pipeline involves storing pre-computed embeddings in a system designed for fast vector queries. Oracle Autonomous Database with vector search is specifically optimized for this, and Oracle Data Flow enables scalable data processing. The official Oracle documentation on 'Using Vector Search in Oracle Autonomous Database' and 'Data Flow Integration with Object Storage' provides guidance on how to batch-process data, store embeddings, and retrieve them in a Python-based application for minimal overhead and high performance.
- A. Incorrect.
Option 1 is incorrect. Storing embeddings in individual CSV files on Object Storage can become cumbersome and inefficient at scale. It also forces your application to repeatedly download partial or entire CSV files, leading to higher network overhead and more complicated query logic.
- B. Incorrect.
Option 2 is incorrect. Manually managing a MySQL database on a Compute instance limits scalability and high availability. Additionally, using manual indexing for embeddings can be labor-intensive and error-prone, especially when dealing with thousands of documents and vector-based queries.
- C. Correct.
Option 3 is correct. Oracle Data Flow lets you process large volumes of data from Object Storage in a scalable fashion. Generating embeddings in Python during the data flow job and storing them in Oracle Autonomous Database exploits built-in vector search capabilities. Retrieving embeddings at query time from a Python application deployed on OCI (such as OCI Container Engine for Kubernetes or Oracle Functions) provides a performant and maintainable architecture.
- D. Incorrect.
Option 4 is incorrect. While Oracle Functions is a serverless solution, discarding embeddings after each invocation forces you to regenerate or reload them every time. This approach increases latency and cost, defeating the purpose of a persistent vector store to efficiently retrieve the relevant documents.