Vector database

From AI Wiki
Revision as of 01:30, 8 April 2023 by Daikon Radish (talk | contribs)
See also: AI terms

Introduction

A vector database is a type of database specifically designed for storing and querying high-dimensional vector data, which is often used in artificial intelligence applications (AI apps). These databases are gaining popularity due to their ability to extend large language models (LLMs) with long-term memory and provide efficient querying for AI-driven applications.

Vector Embeddings

Vectors are arrays of numbers that can represent complex objects such as words, sentences, images, or audio files in a continuous high-dimensional space, called an embedding. Embeddings work by mapping semantically similar words or features from various data types together. These embeddings can be used in recommendation systems, search engines, and text generation applications like ChatGPT.

Database Structure

In a relational database, data is organized in rows and columns, while in a document database, it is organized in documents and collections. In contrast, a vector database stores arrays of numbers that are clustered based on similarity. These databases can be queried with ultra-low latency, making them ideal for AI-driven applications.

Vector Database Products

Several vector databases have emerged to cater to the growing demand for AI applications. Some of the popular native vector databases include open-source options like Weaviate and Milvus, both written in Go. Pinecone is another popular vector database, although it is not open source. Chroma, based on Clickhouse, is an open-source project with a growing following. Relational databases like Postgres have tools like pgVector, and Redis has first-class vector support to accommodate this type of functionality.

Using Vector Databases with Large Language Models

One of the primary reasons for the increasing popularity of vector databases is their ability to extend large language models (LLMs) with long-term memory. By providing a general-purpose model, such as OpenAI's GPT-4, Meta's LLaMA, or Google's LaMDA, users can store their own data in a vector database. When prompted, the database can query relevant documents to update the context, customizing the final response and providing the AI with long-term memory.

In addition, vector databases can integrate with tools like LangChain, which combine multiple LLMs together for more advanced applications.

Example Code

To demonstrate the usage of a vector database, the following example shows how to use Chroma with JavaScript. First, create the client and define an embedding function. In this case, the OpenAI API is used to update the embeddings whenever a new data point is added. Each data point is a document with an ID and some text. The database can be queried by passing a string of text, and the result includes the data along with an array of distances, where smaller numbers indicate higher degrees of similarity.