Integrating with LangChain

1. Installing LangChain Integration

Example: Install

pip install langchain langchain-pinecone langchain-openai
PackagePurpose
langchain-pineconePineconeVectorStore
langchain-openaiOpenAI embeddings/LLM

2. Creating PineconeVectorStore

Example: Vector Store

from langchain_pinecone import PineconeVectorStore
from langchain_openai import OpenAIEmbeddings

emb = OpenAIEmbeddings(model="text-embedding-3-small")
vs = PineconeVectorStore(
    index_name="docs", embedding=emb, namespace="kb",
)

3. Adding Documents

Example: Add Documents

from langchain_core.documents import Document

docs = [Document(page_content=t, metadata={"source": s})
        for t, s in pairs]
vs.add_documents(docs)
docs = vs.similarity_search("how does retrieval work?", k=5)
for d in docs:
    print(d.metadata, d.page_content[:120])

Example: MMR for Diversity

docs = vs.max_marginal_relevance_search(
    "vector dbs", k=5, fetch_k=20, lambda_mult=0.5,
)
ParamEffect
kFinal result count
fetch_kInitial candidate pool
lambda_mult0=max diversity, 1=max similarity

6. Filtering with Metadata

docs = vs.similarity_search(
    query, k=5,
    filter={"source": {"$eq": "wiki"}, "language": "en"},
)

7. Implementing RAG Pipeline

Example: LCEL Chain

from langchain_core.prompts import ChatPromptTemplate
from langchain_core.runnables import RunnablePassthrough
from langchain_openai import ChatOpenAI

llm = ChatOpenAI(model="gpt-4o-mini")
retriever = vs.as_retriever(search_kwargs={"k": 5})
prompt = ChatPromptTemplate.from_template(
    "Answer based on context.\n\n{context}\n\nQ: {question}")

chain = (
    {"context": retriever, "question": RunnablePassthrough()}
    | prompt | llm
)
print(chain.invoke("What is RAG?").content)

8. Using as Retriever

ModeMethod
Similarityas_retriever(search_type="similarity")
MMRsearch_type="mmr"
Thresholdsearch_type="similarity_score_threshold"

9. Customizing Embedding Function

Example: HF Embeddings

from langchain_huggingface import HuggingFaceEmbeddings

emb = HuggingFaceEmbeddings(model_name="BAAI/bge-large-en-v1.5")
vs = PineconeVectorStore(index_name="docs", embedding=emb)

10. Optimizing Retrieval Performance

TipEffect
Pre-init store onceAvoid per-request setup
Batch add_documentsInternally batched, control via batch_size
Namespace per tenantSmaller search space