Skip to content
Back to skills

Llamaindex

ASecurity

Integrates LlamaIndex (indexes, query engines, agents, workflows, document

  • 4 stars
  • 0 votes
  • 0 copies
  • 5 views
  • Added June 12, 2026
ai-agentspythongoreactnodegitapidatabasebackenddocumentation

Works with

  • api

Security analysis

A92/100
  • mediumInstalls packages at runtime which could introduce malicious dependencies

Pro shows the line behind each finding and how to fix it

Scanned June 12, 2026

npx -y skills add paulpas/agent-skill-router --skill llamaindex --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Llamaindex?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Llamaindex
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/paulpas-llamaindex/badge)](https://www.skillsdirectory.com/skills/paulpas-llamaindex)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---




name: llamaindex
description: Integrates LlamaIndex (indexes, query engines, agents, workflows, document
  parsing, RAG pipelines) for building data-aware LLM applications in Python.
license: MIT
compatibility: opencode
metadata:
  version: "1.0.0"
  domain: coding
  triggers: llamaindex, llama index, rag pipeline, query engine, vector store index,
    llama parse, how do i use llamaindex, document agents
  archetypes:
  - tactical
  - generation
  anti_triggers:
  - brainstorming
  - vague ideation
  - code golf
  - over-engineering
  response_profile:
    verbosity: low
    directive_strength: high
    abstraction_level: operational
  role: implementation
  scope: implementation
  output-format: code
  content-types:
  - code
  - guidance
  - examples
  - do-dont
  related-skills: coding-langchain, coding-openai-api, coding-pinecone-api, coding-chroma




---




# LlamaIndex Integration

Integrates LlamaIndex (v0.14+) for building data-aware LLM applications with indexing, retrieval, query engines, agents, and workflows. When loaded, this skill makes the model implement LlamaIndex pipelines for RAG, document Q&A, structured data extraction, and multi-agent orchestration.

## When to Use

Use this skill when:

- Building RAG (Retrieval-Augmented Generation) applications over your own documents
- Implementing advanced document indexing strategies (vector, tree, keyword, hybrid)
- Creating query engines with custom retrievers, rerankers, and response synthesizers
- Building agentic applications with `FunctionAgent`, tool calling, and multi-agent workflows
- Using LlamaParse for agentic OCR and document parsing (100+ formats)
- Implementing complex query workflows with event-driven `Workflow` patterns
- Building multi-agent systems with `AgentWorkflow` or custom orchestrator patterns

---

## When NOT to Use

- For general LLM orchestration without data indexing focus, prefer `coding-langchain`
- For direct LLM API calls without framework overhead, use `coding-openai-api` or `coding-anthropic-api`
- For standalone vector database usage, use `coding-pinecone-api` or `coding-chroma`

---

## Core Workflow

1. **Load and Parse Documents** — Use `SimpleDirectoryReader` to load files from a directory, or use LlamaParse for advanced document parsing (PDF with tables, scanned documents, complex layouts). Choose integrations from LlamaHub (300+ connectors for data sources). **Checkpoint:** Verify documents load correctly by checking `len(documents)` and inspecting document metadata.

2. **Build an Index** — Create a `VectorStoreIndex` from documents. This handles chunking, embedding, and storage. For production, persist the index with `index.storage_context.persist("storage")`. Use a custom vector store (Pinecone, Chroma, Weaviate) via the `vector_store` parameter. **Checkpoint:** Verify `index.as_retriever().retrieve("test query")` returns relevant nodes.

3. **Create a Query Engine** — Use `index.as_query_engine()` for the simplest case. For advanced needs, build a custom `RetrieverQueryEngine` with `VectorIndexRetriever`, response synthesizers (`compact`, `tree_summarize`, `accumulate`), and node post-processors (`SimilarityPostprocessor`, `KeywordNodePostprocessor`). **Checkpoint:** Test with multiple query types to verify retrieval quality.

4. **Build an Agent with Tools** — Create a `FunctionAgent` (or `ReActAgent`) with tools that wrap query engines, external APIs, or any Python function. Use `AgentWorkflow` for multi-agent systems where agents can hand off to each other. **Checkpoint:** Verify the agent correctly selects tools and maintains conversation state via `Context`.

5. **Implement Workflows for Complex Logic** — Use the event-driven `Workflow` class for multi-step processes. Define steps with `@step` decorators that receive events and emit events. Use `StartEvent` and `StopEvent` as entry/exit points. Workflows support looping, branching, concurrent execution, and checkpointing. **Checkpoint:** Test the workflow with the `ctx=Context()` parameter to verify state persistence across runs.

---

## Implementation Patterns

### Pattern 1: Basic RAG Pipeline

```python
from __future__ import annotations

# ❌ BAD — no persistence, no error handling, default settings only
from llama_index.core import VectorStoreIndex, SimpleDirectoryReader

documents = SimpleDirectoryReader("data").load_data()
index = VectorStoreIndex.from_documents(documents)
query_engine = index.as_query_engine()
response = query_engine.query("What is the main topic?")
print(response)

# ✅ GOOD — persistent storage, custom chunking, similarity threshold
from llama_index.core import (
    VectorStoreIndex,
    SimpleDirectoryReader,
    StorageContext,
    load_index_from_storage,
)
from llama_index.core.node_parser import SentenceSplitter
from llama_index.core.postprocessor import SimilarityPostprocessor
from llama_index.llms.openai import OpenAI
import os


def build_rag_pipeline(data_dir: str, persist_dir: str = "storage") -> VectorStoreIndex:
    """Build a persistent RAG pipeline from documents.

    Args:
        data_dir: Directory containing source documents.
        persist_dir: Directory for persisted index data.

    Returns:
        A VectorStoreIndex ready for querying.
    """
    # Check for existing persisted index
    if os.path.exists(persist_dir):
        storage_context = StorageContext.from_defaults(persist_dir=persist_dir)
        return load_index_from_storage(storage_context)

    # Load and parse documents with custom chunking
    documents = SimpleDirectoryReader(data_dir).load_data()
    parser = SentenceSplitter(chunk_size=512, chunk_overlap=50)
    nodes = parser.get_nodes_from_documents(documents)

    # Build index with a specific LLM
    llm = OpenAI(model="gpt-4o-mini", temperature=0)
    index = VectorStoreIndex(
        nodes=nodes,
        llm=llm,
    )

    # Persist to disk
    index.storage_context.persist(persist_dir)
    return index


def query_index(index: VectorStoreIndex, question: str) -> str:
    """Query the index with relevance filtering.

    Args:
        index: The VectorStoreIndex to query.
        question: Natural language question.

    Returns:
        Answer based on retrieved documents.
    """
    query_engine = index.as_query_engine(
        similarity_top_k=3,
        node_postprocessors=[
            SimilarityPostprocessor(similarity_cutoff=0.7),
        ],
    )
    response = query_engine.query(question)
    return str(response)
```

### Pattern 2: Agent with RAG Tools

```python
from __future__ import annotations

import asyncio

from llama_index.core import VectorStoreIndex, SimpleDirectoryReader
from llama_index.core.agent.workflow import FunctionAgent
from llama_index.llms.openai import OpenAI


async def build_rag_agent(data_dir: str) -> FunctionAgent:
    """Build an agent with a RAG tool for document Q&A.

    Args:
        data_dir: Directory with source documents.

    Returns:
        A FunctionAgent equipped with a document search tool.
    """
    documents = SimpleDirectoryReader(data_dir).load_data()
    index = VectorStoreIndex.from_documents(documents)
    query_engine = index.as_query_engine()

    async def search_documents(query: str) -> str:
        """Search documents for information relevant to the query.

        Args:
            query: Natural language search query.
        Returns:
            Retrieved context from relevant documents.
        """
        response = await query_engine.aquery(query)
        return str(response)

    async def multiply(a: float, b: float) -> float:
        """Multiply two numbers together."""
        return a * b

    agent = FunctionAgent(
        tools=[search_documents, multiply],
        llm=OpenAI(model="gpt-4o-mini"),
        system_prompt=(
            "You are a helpful assistant that can search through documents "
            "and perform calculations."
        ),
    )
    return agent


async def ask_agent(agent: FunctionAgent, question: str) -> str:
    """Ask the agent a question.

    Args:
        agent: The FunctionAgent instance.
        question: User's question.

    Returns:
        Agent's response.
    """
    response = await agent.run(question)
    return str(response)
```

### Pattern 3: Event-Driven Workflow for RAG

```python
from __future__ import annotations

from llama_index.core.workflow import (
    Workflow,
    step,
    StartEvent,
    StopEvent,
    Context,
)
from llama_index.core import VectorStoreIndex
from llama_index.llms.openai import OpenAI


class RAGWorkflow(Workflow):
    """A multi-step RAG workflow with query rewriting and verification."""

    def __init__(self, index: VectorStoreIndex) -> None:
        super().__init__()
        self.index = index
        self.llm = OpenAI(model="gpt-4o-mini")

    @step
    async def retrieve(self, ctx: Context, ev: StartEvent) -> StopEvent:
        """Retrieve documents and generate a response."""
        query = ev.get("query", "")
        query_engine = self.index.as_query_engine(similarity_top_k=3)
        response = await query_engine.aquery(query)
        return StopEvent(result=str(response))
```

---

## Constraints

### MUST DO
- Persist indexes to disk with `storage_context.persist()` and reload with `load_index_from_storage()` for production use
- Use `pip install llama-index-core` and select specific integration packages (e.g., `llama-index-llms-openai`) rather than the full `llama-index` starter package for smaller dependency footprint
- Use `FunctionAgent` for tool-calling agents and `AgentWorkflow` for multi-agent systems
- Set `similarity_cutoff` in `SimilarityPostprocessor` to filter low-relevance results in production RAG
- Use `SentenceSplitter` with explicit `chunk_size` and `chunk_overlap` rather than defaults
- Workflows require async — use `await workflow.run()` with `asyncio`

### MUST NOT DO
- Skip index persistence in production — rebuilding from documents on every startup is expensive
- Use the `llama-index` umbrella package if you only need a few integrations — install `llama-index-core` + specific packages instead
- Forget to set `similarity_top_k` on query engines — defaults may return too few or too many results
- Use synchronous `query()` in async contexts — prefer `aquery()` for async compatibility

---

## Live References

| Resource | URL |
|----------|-----|
| LlamaIndex Documentation | https://docs.llamaindex.ai/ |
| LlamaIndex GitHub | https://github.com/run-llama/llama_index |
| Starter Tutorial | https://docs.llamaindex.ai/en/stable/getting_started/starter_example.html |
| Workflows Guide | https://docs.llamaindex.ai/en/stable/understanding/workflows/ |
| Multi-Agent Patterns | https://docs.llamaindex.ai/en/stable/understanding/agent/multi_agent/ |
| LlamaHub (integrations) | https://llamahub.ai/ |
| LlamaParse | https://docs.llamaindex.ai/en/stable/llama_cloud/llama_parse.html |

---

## Related Skills

| Skill | Purpose |
|-------|---------|
| `coding-langchain` | General-purpose LLM orchestration alternative |
| `coding-openai-api` | Direct OpenAI API for LlamaIndex LLM/embedding configuration |
| `coding-pinecone-api` | Pinecone as a vector store backend for LlamaIndex |
| `coding-chroma` | Chroma as a lightweight local vector store |

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.