0
0
LangchainHow-ToBeginner ยท 4 min read

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_key and environment.
  • 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.