What is a vector database
vector database is a specialized database that stores data as high-dimensional vectors and enables fast similarity search based on vector distances. It is essential for AI tasks like Retrieval-Augmented Generation (RAG), where it retrieves relevant information by comparing vector embeddings of queries and documents.Vector database is a specialized database that stores and searches data as high-dimensional vectors to enable efficient similarity-based retrieval.How it works
A vector database stores data points as vectors—numerical arrays representing features or semantic meaning. When you query the database, it converts your input (like text or images) into a vector using an embedding model. Then, it finds vectors in the database closest to your query vector using distance metrics like cosine similarity or Euclidean distance. This process is like finding the nearest neighbors in a multi-dimensional space.
Think of it as a giant library where each book is represented by coordinates in a multi-dimensional space. Instead of searching by title or author, you search by how similar the content is to your query, quickly locating the most relevant books.
Concrete example
Here is a simple Python example using the OpenAI API to embed text and store vectors in a hypothetical vector database for similarity search:
import os
from openai import OpenAI
# Initialize OpenAI client
client = OpenAI(api_key=os.environ["OPENAI_API_KEY"])
# Sample documents
documents = [
"The Eiffel Tower is in Paris.",
"The Statue of Liberty is in New York.",
"Mount Everest is the tallest mountain."
]
# Embed documents
embeddings = []
for doc in documents:
response = client.embeddings.create(
model="text-embedding-3-large",
input=doc
)
embeddings.append(response.data[0].embedding)
# Example query
query = "Where is the Eiffel Tower located?"
query_embedding = client.embeddings.create(
model="text-embedding-3-large",
input=query
).data[0].embedding
# Simple similarity function (cosine similarity)
import numpy as np
def cosine_similarity(a, b):
return np.dot(a, b) / (np.linalg.norm(a) * np.linalg.norm(b))
# Find most similar document
similarities = [cosine_similarity(query_embedding, e) for e in embeddings]
most_similar_idx = np.argmax(similarities)
print(f"Most relevant document: {documents[most_similar_idx]}") Most relevant document: The Eiffel Tower is in Paris.
When to use it
Use a vector database when you need to perform semantic search or similarity search over unstructured data like text, images, or audio. It is critical for AI applications such as Retrieval-Augmented Generation (RAG), recommendation systems, and anomaly detection. Avoid using vector databases for traditional structured data queries like exact matches or transactional operations, where relational databases excel.
Key terms
| Term | Definition |
|---|---|
| Vector | A numerical array representing features or semantic meaning of data. |
| Embedding | A vector representation of input data generated by a model. |
| Cosine similarity | A metric measuring the cosine of the angle between two vectors, indicating similarity. |
| Retrieval-Augmented Generation (RAG) | An AI architecture combining retrieval of relevant documents with language model generation. |
| Nearest neighbor search | Finding vectors closest to a query vector in vector space. |
Key Takeaways
- Vector databases store data as high-dimensional vectors enabling semantic similarity search.
- They are essential for AI tasks like RAG to retrieve relevant knowledge efficiently.
- Use vector databases for unstructured data search, not for exact-match transactional queries.