How to store AI memory in vector database
Quick answer
Store AI memory by converting text or documents into vector embeddings using a model like
text-embedding-3-small from OpenAI. Save these embeddings in a vector database such as FAISS or Chroma for efficient similarity search and retrieval during AI interactions.PREREQUISITES
Python 3.8+OpenAI API key (free tier works)pip install openai faiss-cpu chromadb
Setup
Install required Python packages and set your OpenAI API key as an environment variable.
- Use
pip install openai faiss-cpu chromadbto install dependencies. - Set
OPENAI_API_KEYin your environment for authentication.
pip install openai faiss-cpu chromadb output
Collecting openai... Collecting faiss-cpu... Collecting chromadb... Successfully installed openai faiss-cpu chromadb
Step by step
This example shows how to embed text memory with OpenAI embeddings and store them in a FAISS vector store for retrieval.
import os
from openai import OpenAI
from langchain_openai import OpenAIEmbeddings
from langchain_community.vectorstores import FAISS
# Initialize OpenAI client
client = OpenAI(api_key=os.environ["OPENAI_API_KEY"])
# Sample AI memory texts
texts = [
"The Eiffel Tower is in Paris.",
"Python is a popular programming language.",
"OpenAI develops advanced AI models."
]
# Create embeddings for texts
embedding_model = OpenAIEmbeddings(client=client, model="text-embedding-3-small")
vectors = embedding_model.embed_documents(texts)
# Create FAISS index and add vectors
index = FAISS.from_embeddings(vectors, texts)
# Query example: find closest memory to a query
query = "Where is the Eiffel Tower located?"
query_vector = embedding_model.embed_query(query)
results = index.similarity_search_by_vector(query_vector, k=1)
print("Query:", query)
print("Closest memory:", results[0].page_content) output
Query: Where is the Eiffel Tower located? Closest memory: The Eiffel Tower is in Paris.
Common variations
You can use other vector databases like Chroma or Weaviate for scalable storage. Async embedding calls are possible with OpenAI SDK. Different embedding models can be chosen based on accuracy and speed needs.
import os
import asyncio
from openai import OpenAI
from langchain_openai import OpenAIEmbeddings
from langchain_community.vectorstores import Chroma
async def async_embedding_example():
client = OpenAI(api_key=os.environ["OPENAI_API_KEY"])
embedding_model = OpenAIEmbeddings(client=client, model="text-embedding-3-small")
texts = ["AI memory storage in vector DB.", "Embedding vectors enable similarity search."]
# Async embedding calls (simulate with asyncio.to_thread)
vectors = await asyncio.to_thread(embedding_model.embed_documents, texts)
# Store in Chroma vector DB
chroma_index = Chroma.from_embeddings(vectors, texts)
query = "How to store AI memory?"
query_vector = await asyncio.to_thread(embedding_model.embed_query, query)
results = chroma_index.similarity_search_by_vector(query_vector, k=1)
print("Query:", query)
print("Closest memory:", results[0].page_content)
asyncio.run(async_embedding_example()) output
Query: How to store AI memory? Closest memory: AI memory storage in vector DB.
Troubleshooting
- If embeddings fail, verify your
OPENAI_API_KEYis set correctly. - If vector search returns irrelevant results, check that embeddings and queries use the same model.
- For large datasets, ensure your vector database supports persistence and indexing.
Key Takeaways
- Use OpenAI embeddings like
text-embedding-3-smallto convert AI memory text into vectors. - Store embeddings in vector databases such as
FAISSorChromafor fast similarity search. - Ensure consistent embedding models for both storing and querying vectors to maintain accuracy.