Integrating with LlamaIndex
1. Installing LlamaIndex Integration
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
| Mode | Use |
|---|---|
| default | Top-K similarity |
| mmr | Diversified results |
| sparse | Lexical only |
| hybrid | Dense + 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
| Tip | Effect |
|---|---|
| Lower similarity_top_k | Faster, smaller LLM context |
| Streaming responses | Better UX |
| Response synthesizer | compact / tree_summarize for long context |
10. Handling Large Document Sets
| Approach | Detail |
|---|---|
| Ingestion pipeline | Chunk → embed → upsert in batches |
| Async ingestion | IngestionPipeline(num_workers=8) |
| Incremental | Track doc_id; skip already-indexed |