Database / ChromaDB Interview Questions
How do you use ChromaDB as a vector store with LangChain?
LangChain provides a first-class Chroma vector store integration that wraps ChromaDB's API with LangChain's retriever interface. This enables plugging ChromaDB into LangChain RAG chains, agents, and pipelines without writing low-level ChromaDB code.
# pip install langchain langchain-chroma langchain-openai from langchain_chroma import Chroma from langchain_openai import OpenAIEmbeddings, ChatOpenAI from langchain_core.documents import Document from langchain_core.prompts import ChatPromptTemplate from langchain_core.output_parsers import StrOutputParser from langchain_core.runnables import RunnablePassthrough import os embeddings = OpenAIEmbeddings(model="text-embedding-3-small") # --- Option 1: Create from documents --- docs = [ Document(page_content="ChromaDB is a vector database.", metadata={"source": "intro"}), Document(page_content="HNSW is used for ANN search.", metadata={"source": "tech"}), Document(page_content="RAG improves LLM accuracy.", metadata={"source": "ai"}), ] vectorstore = Chroma.from_documents( documents=docs, embedding=embeddings, collection_name="lc_demo", persist_directory="./lc_chroma", # persistent storage ) # --- Option 2: Load existing ChromaDB --- vectorstore = Chroma( collection_name="lc_demo", embedding_function=embeddings, persist_directory="./lc_chroma", ) # Similarity search results = vectorstore.similarity_search("vector databases", k=2) for doc in results: print(doc.page_content) # As retriever (for use in chains) retriever = vectorstore.as_retriever( search_type="similarity", search_kwargs={"k": 3, "filter": {"source": "tech"}}, ) # Build a simple RAG chain with LCEL llm = ChatOpenAI(model="gpt-4o-mini") prompt = ChatPromptTemplate.from_template( "Answer based on context:\n\n{context}\n\nQuestion: {question}" ) def format_docs(docs): return "\n\n".join(d.page_content for d in docs) rag_chain = ( {"context": retriever | format_docs, "question": RunnablePassthrough()} | prompt | llm | StrOutputParser() ) print(rag_chain.invoke("What search algorithm does ChromaDB use?"))
More Related questions...