What is a vector database?
A vector database stores and searches vectors, which are numerical representations of data such as:
- Text
- Documents
- Images
- Products
- Support tickets
- Knowledge articles
The important difference is how the data is searched.
Traditional Oracle queries typically ask:
“Find rows where the value matches these conditions.”
Vector search asks:
“Find rows whose meaning is most similar to this.”
For example, suppose your database contains Oracle support articles.
A user searches:
Database is running slowly after increasing workload
There may be no document containing exactly that sentence.
But documents containing concepts such as:
High CPU utilisation in OraclePoor SQL performanceDatabase performance degradationSQL execution slowing down
can still be considered similar.
That is the basic idea behind semantic search.
Traditional search vs vector search
Imagine this table:
DOCUMENT_ID TITLE----------- -------------------------------------1 Oracle tablespace monitoring2 Troubleshooting high CPU utilisation3 RMAN database backup4 Improving slow SQL performance
With traditional SQL, you might write:
SELECT *FROM documentsWHERE title LIKE '%slow%';
This is primarily matching text.
If the user instead searches:
Why are queries taking too much time?
the phrase slow SQL doesn’t appear in that question.
A vector search can potentially recognise that:
queries taking too much time
is semantically related to:
Improving slow SQL performance
That is the key benefit.
But what exactly is a vector?
This is the most important concept.
Suppose you have this sentence:
Oracle database performance tuning
An embedding model converts the text into numbers.
Conceptually:
Oracle database performance tuning | v Embedding Model | v[0.12, -0.45, 0.87, 0.33, ...]
That array of numbers is called a vector or embedding.
Real embedding vectors can contain hundreds or thousands of numbers, depending on the embedding model.
For example:
Document A"Oracle SQL performance tuning" ↓[0.12, 0.84, -0.22, 0.51, ...]Document B"How to make SQL queries faster" ↓[0.15, 0.79, -0.18, 0.49, ...]
Because these sentences have similar meanings, their vectors should be relatively close in the embedding space.
A simple mental model
Think of vectors as coordinates on a map of meanings.
Imagine:
RMAN Backup
*
/
/
SQL Tuning *---* Slow Query
\
\
High CPU
Employee Leave *
Concepts that mean similar things appear closer together.
So:
SQL tuningSlow queryDatabase performanceHigh CPU
may appear relatively close.
While:
Employee leave policy
would probably be farther away.
A vector search is essentially asking:
Which vectors are closest to my query vector?
Where does Oracle come into this?
Modern Oracle Database versions can store vector data alongside normal relational data.
Conceptually, instead of maintaining separate systems like:
Oracle Database +External Vector Database
an architecture can use Oracle for both relational information and vectors.
For example, your application might have:
DOCUMENT_IDDOCUMENT_NAMECATEGORYDOCUMENT_TEXTEMBEDDING
The first columns are normal relational information.
EMBEDDING contains the vector representation.
Example Oracle table
Conceptually, a table could look like:
CREATE TABLE knowledge_base ( document_id NUMBER, title VARCHAR2(200), content CLOB, embedding VECTOR);Data be like:DOCUMENT_ID : 101TITLE:Oracle SQL Performance TuningCONTENT:Methods for troubleshooting slow SQL...EMBEDDING:[0.124, -0.552, 0.891, ...]
The important point is:
Oracle isn’t replacing relational columns with vectors.
You use vectors alongside your existing relational information.
How does data become a vector?
This is where many people initially get confused.
The database doesn’t simply convert words into random numbers.
Normally an embedding model is involved.
The flow looks like:
DOCUMENT
|
v
Embedding Model
|
v
VECTOR
|
v
Oracle Database
For example:
"How to troubleshoot Oracle high CPU"
might become something conceptually like:
[0.18, -0.42, 0.91, 0.37, ...]
You store that vector with the document.
How searching works
Now suppose the user asks:Why is my Oracle database using too much processor?
The same type of embedding process is applied to the question.
User question | vEmbedding Model | vQuery Vector | vOracle Vector Search | vSimilar Documents
Oracle compares the query vector against stored vectors and returns the closest matches.
Conceptually:
Question"Why is my database using too much processor?" ↓Vector[0.20, -0.40, 0.88, ...] ↓Oracle Vector Search ↓1. Troubleshooting Oracle High CPU2. Database Performance Troubleshooting3. SQL Performance Tuning
Notice that the search didn’t depend entirely on the word processor.
That’s why vector search is often called semantic search.
Vector distance
How does Oracle determine whether vectors are similar?
It uses mathematical distance/similarity metrics.
Common concepts you’ll encounter include:
- Cosine similarity/distance
- Euclidean distance
- Dot product
Don’t worry too much about the maths initially.
As a DBA, think:
Traditional index/search ↓Find matching valuesVector search ↓Find nearby vectors ↓Find semantically similar content
Generally, the metric determines what “nearby” means mathematically
Why vector indexes exist
Now imagine having:
100 vectors
Comparing your query against every vector may be straightforward.
But imagine:
1,000,000+ vectors
Checking every vector can become expensive.
This is similar in spirit to why Oracle uses conventional indexes.
Traditional:
Table |B-tree Index |Fast lookup
Vector:
Vectors |Vector Index |Efficient similarity search
One important difference is that vector indexing commonly involves approximate nearest-neighbour search.
That introduces an important trade-off:
Search Speed <-------> Search Accuracy/Recall
That’s an important area for DBAs because index choice and search configuration can affect performance and recall.
SQL + vector search is where things get interesting
This is particularly useful for someone who already knows Oracle.
Suppose you have:
EMPLOYEE_DOCUMENTSIDDEPARTMENTDOCUMENT_TYPETEXTEMBEDDING
Someone asks:
Find documents related to database performance, but only for the DBA department.
You can conceptually combine:
Relational filter+Vector similarity
Something like:
SELECT ...FROM employee_documentsWHERE department = 'DBA'ORDER BY vector_distance(embedding, :query_vector)FETCH FIRST 5 ROWS ONLY;
So Oracle can combine traditional structured filtering with semantic similarity.
That is a very important advantage.
Vector database and Generative AI
This is probably where you’ll encounter vectors most often.
Suppose your company has:
Oracle runbooksDatabase SOPsTroubleshooting documentsInternal wiki pagesIncident documentation
You want an AI assistant that answers:
What should I check when the production database has high CPU?
You don’t necessarily want the LLM relying only on information it learned during training.
Instead:
User Question
|
v
Create Embedding
|
v
Oracle Vector Search
|
v
Find relevant internal documents
|
v
Send relevant
context to LLM
|
v
Answer
This pattern is called:
RAG
Retrieval-Augmented Generation
RAG in simple DBA language
You can think of RAG as:
Search first +Ask AI second
Instead of:
User | vLLM | vAnswer
you have:
User Question | vOracle Vector Search | vRelevant company information | +----------+ | v LLM | v Answer
The vector database handles the retrieval part.
The LLM handles the generation part.
A practical DBA example
Imagine you’ve stored Oracle troubleshooting documents.
Document 1
Title:Troubleshooting High CPUContent:Check CPU utilisation, active sessions,expensive SQL and execution plans...
Document 2
Title:RMAN Backup ProceduresContent:Steps for performing database backups...
Document 3
Title:Tablespace ManagementContent:How to monitor and extend tablespaces...
Each document gets converted into an embedding and stored.
Now the DBA asks:
Production is slow and CPU usage is very high.What should I investigate?
The question becomes a vector.
Oracle performs similarity search.
Likely result:
#1 Troubleshooting High CPU#2 SQL Performance document#3 Database Performance checklist
Those documents can then be provided to an LLM as context for generating the answer.