How to Use Pinecone with Langchain: Simple Guide
To use
Pinecone with Langchain, first install the Pinecone client and Langchain library, then create a Pinecone index and connect it using Langchain's Pinecone vector store class. This setup allows you to store and query vector embeddings efficiently within Langchain workflows.Syntax
Here is the basic syntax to connect Pinecone with Langchain:
pinecone.init(api_key, environment): Initializes Pinecone client with your API key and environment.pinecone.Index(index_name): Connects to your Pinecone index.Pinecone.from_existing_index(index_name, embedding_function): Creates a Langchain vector store linked to Pinecone.vector_store.similarity_search(query): Searches for similar vectors in Pinecone.
python
import pinecone from langchain.vectorstores import Pinecone from langchain.embeddings.openai import OpenAIEmbeddings # Initialize Pinecone pinecone.init(api_key="YOUR_API_KEY", environment="YOUR_ENVIRONMENT") # Connect to existing index index = pinecone.Index("your-index-name") # Create Langchain Pinecone vector store embeddings = OpenAIEmbeddings() vector_store = Pinecone.from_existing_index("your-index-name", embeddings.embed_query) # Perform similarity search results = vector_store.similarity_search("your query text")
Example
This example shows how to initialize Pinecone, create a Langchain Pinecone vector store, add documents, and perform a similarity search.
python
import pinecone from langchain.vectorstores import Pinecone from langchain.embeddings.openai import OpenAIEmbeddings from langchain.schema import Document # Initialize Pinecone client pinecone.init(api_key="YOUR_API_KEY", environment="us-west1-gcp") # Create or connect to Pinecone index index_name = "langchain-demo" if index_name not in pinecone.list_indexes(): pinecone.create_index(index_name, dimension=1536) # Connect to index index = pinecone.Index(index_name) # Initialize embeddings embeddings = OpenAIEmbeddings() # Create Langchain Pinecone vector store vector_store = Pinecone(index, embeddings.embed_query, "id") # Add documents docs = [ Document(page_content="Langchain makes working with LLMs easy."), Document(page_content="Pinecone is a vector database for similarity search."), Document(page_content="You can combine Langchain and Pinecone for powerful apps.") ] # Add documents to Pinecone vector_store.add_documents(docs) # Search for similar documents query = "How to use vector databases with Langchain?" results = vector_store.similarity_search(query) # Print results for doc in results: print(doc.page_content)
Output
Langchain makes working with LLMs easy.
You can combine Langchain and Pinecone for powerful apps.
Pinecone is a vector database for similarity search.
Common Pitfalls
Common mistakes when using Pinecone with Langchain include:
- Not initializing Pinecone with the correct
api_keyandenvironment. - Trying to connect to a Pinecone index that does not exist.
- Using mismatched embedding dimensions between your embeddings and Pinecone index.
- Forgetting to add documents before searching, resulting in empty results.
Always verify your Pinecone index exists and matches your embedding size.
python
import pinecone from langchain.vectorstores import Pinecone from langchain.embeddings.openai import OpenAIEmbeddings # WRONG: Missing Pinecone initialization # pinecone.init(api_key="YOUR_API_KEY", environment="us-west1-gcp") # Attempt to connect to index without init try: vector_store = Pinecone.from_existing_index("nonexistent-index", OpenAIEmbeddings().embed_query) except Exception as e: print(f"Error: {e}") # RIGHT: Proper initialization and index check pinecone.init(api_key="YOUR_API_KEY", environment="us-west1-gcp") if "nonexistent-index" not in pinecone.list_indexes(): pinecone.create_index("nonexistent-index", dimension=1536) vector_store = Pinecone.from_existing_index("nonexistent-index", OpenAIEmbeddings().embed_query)
Output
Error: Index 'nonexistent-index' does not exist.
Quick Reference
Summary tips for using Pinecone with Langchain:
- Always initialize Pinecone with
pinecone.init()before use. - Ensure your Pinecone index dimension matches your embedding size.
- Use
Pinecone.from_existing_index()to connect Langchain vector store to Pinecone. - Add documents with
add_documents()before searching. - Use
similarity_search()to find relevant documents by query.
Key Takeaways
Initialize Pinecone with your API key and environment before connecting.
Create or connect to a Pinecone index matching your embedding dimension.
Use Langchain's Pinecone vector store class to add documents and perform similarity search.
Always add documents to the vector store before running queries.
Check for common errors like missing initialization or non-existent indexes.