Integrating with LlamaIndex

1. Installing LlamaIndex Integration

Example: Install

pip install llama-index llama-index-vector-stores-pinecone

2. Creating PineconeVectorStore

Example: Vector Store

from llama_index.vector_stores.pinecone import PineconeVectorStore
from pinecone import Pinecone

pc = Pinecone(api_key="...")
pinecone_index = pc.Index("docs")
vs = PineconeVectorStore(pinecone_index=pinecone_index, namespace="kb")

3. Building VectorStoreIndex

Example: Build

from llama_index.core import VectorStoreIndex, StorageContext, SimpleDirectoryReader

docs = SimpleDirectoryReader("./data").load_data()
ctx = StorageContext.from_defaults(vector_store=vs)
idx = VectorStoreIndex.from_documents(docs, storage_context=ctx)

4. Querying Index

Example: Query

qe = idx.as_query_engine(similarity_top_k=5)
print(qe.query("What does the doc say about X?"))

5. Implementing Retrieval

Example: Retriever

retriever = idx.as_retriever(similarity_top_k=10)
nodes = retriever.retrieve("query text")
for n in nodes:
    print(n.score, n.node.text[:120])

6. Using Metadata Filters

Example: Filters

from llama_index.core.vector_stores import MetadataFilter, MetadataFilters, FilterOperator

filters = MetadataFilters(filters=[
    MetadataFilter(key="source", value="wiki", operator=FilterOperator.EQ),
])
qe = idx.as_query_engine(filters=filters, similarity_top_k=5)

7. Customizing Retriever Mode

ModeUse
defaultTop-K similarity
mmrDiversified results
sparseLexical only
hybridDense + sparse fusion

8. Implementing Chat Engine

Example: Chat with Context

chat = idx.as_chat_engine(chat_mode="context", similarity_top_k=5)
print(chat.chat("Summarize the key points"))
print(chat.chat("Now go deeper on the first one"))

9. Optimizing Query Performance

TipEffect
Lower similarity_top_kFaster, smaller LLM context
Streaming responsesBetter UX
Response synthesizercompact / tree_summarize for long context

10. Handling Large Document Sets

ApproachDetail
Ingestion pipelineChunk → embed → upsert in batches
Async ingestionIngestionPipeline(num_workers=8)
IncrementalTrack doc_id; skip already-indexed