mcpbeat

Agentsop Llamaindex

agentsope/agentsop-llamaindex

| Operating-system distillation of LlamaIndex — the leading RAG / document-agent framework. Activate when the calling agent must build, debug, harden, or evaluate a Retrieval-Augmented Generation pipeline over unstructured/private data, decide between RAG primitives (Index types, retrievers, query engines, routers, agents), or pick LlamaIndex vs LangChain / Haystack / raw vector store for a coding task. Encodes the 5-layer mental model (Documents → Nodes → Indices → Retrievers → Query Engines / Response Synthesizers), the canonical RAG bootstrap SOP from baseline `VectorStoreIndex` through hybrid + reranker + eval-loop hardening, the official 13-failure-mode checklist, and 5 dilemma cases distilled from docs, GitHub issues, and 2025 production post-mortems.

21k tokens
context cost
the whole folder, loaded on every use
8
files
instructions only
0
copies elsewhere
how many repositories repackaged it
251
stars on the repo
on the repository, not the skill itself

Install

one command, takes just this skill from the repository
npx skills add https://github.com/agentsope/SkillAlchemy --skill agentsop-llamaindex

The instruction itself

44 sections, as written by the author

LlamaIndex · SOP

> Third-person analytical view of how LlamaIndex *thinks* about turning private

> documents into a grounded answering system. The skill is for an LLM agent that

> writes / reviews / debugs RAG code — not for an end user reading docs.


何时激活 (Activation Rules)

Activate this skill when any of the following holds:

  • The user's request involves building, modifying, or debugging a RAG pipeline (retrieval over private/unstructured data + LLM synthesis).
  • The user mentions LlamaIndex (from llama_index...), LlamaParse, LlamaCloud, or a LlamaIndex-style primitive (VectorStoreIndex, SummaryIndex, IngestionPipeline, QueryEngine, SubQuestionQueryEngine, RouterQueryEngine, Settings, Workflows).
  • The user is comparing RAG frameworks (LlamaIndex vs LangChain vs Haystack vs raw vector store).
  • The user is choosing between stuffing context, RAG, or an agent for a knowledge task.
  • The user is debugging retrieval quality (hallucinations, wrong chunks, stale data, embedding drift) — even if the codebase predates LlamaIndex, the failure-mode taxonomy applies.
  • The user is evaluating a RAG system (faithfulness, relevancy, MRR, hit-rate).

Do not activate when:

  • The task is pure agent orchestration with no retrieval (use LangGraph/CrewAI skill instead).
  • The corpus is tiny (<100k tokens, static) and prompt-stuffing is the correct answer.
  • The data is pure SQL/tabular with no unstructured component.

核心心智模型 (Core Mental Model)

LlamaIndex's design rests on three principles that distinguish it from "vector DB SDK + custom glue":

Principle 1 — The Index is a noun, not a verb

> In LangChain, "indexing" is something you do to a vector store. In LlamaIndex, an Index is a first-class typed object with its own retrieval semantics. Picking the right Index is half the architecture decision.

The 5-layer pipeline:

Documents → Nodes → Index → Retriever → Query Engine → Response
   ↓         ↓        ↓         ↓             ↓
parsing   chunking  storage   filters    synthesis
metadata  graph     primitive  rerank    (refine/tree_sum/compact)

Each layer has a distinct failure mode and a distinct optimization knob. See references/R1-architecture.md for the layer-failure-knob mapping.

Principle 2 — A Node is a graph node, not a chunk

A Node carries: text, metadata, embedding, relationships (PREV/NEXT/PARENT/CHILD links), and lifecycle ids. The relationships field is what enables Hierarchical, Auto-Merging, and Sentence-Window retrieval. The mental flip: don't think "split into chunks", think "build a chunk-graph".

Principle 3 — Indices are not interchangeable

| Index | Pick when |

|---|---|

| VectorStoreIndex | Default; semantic Q&A over chunks; ~90% of RAG cases |

| SummaryIndex | "Summarize this whole doc" — small, fan-out synthesis |

| TreeIndex | Hierarchical content with progressive zoom-in |

| KeywordTableIndex | Keyword-heavy queries, no embeddings budget |

| PropertyGraphIndex | Multi-hop reasoning over entities |

| DocumentSummaryIndex | Mixed corpora needing document-level routing first |

A RouterQueryEngine over multiple per-task indices is often the correct top-level shape, not a single monolithic VectorStoreIndex.

The 2025 shift

LlamaIndex now positions as "the leading document agent and OCR platform" (README). LlamaParse v2 + Workflows 1.0 (June 2025) + LlamaCloud mark a strategic move from "RAG framework" to "platform between messy documents and document-grounded agents". For a coder agent: assume Workflows for any new agentic code (QueryPipeline is deprecated).


SOP 工作流 (Agentic Protocol)

The protocol every RAG implementation must walk through. Each stage gates on the next.

Stage 0 — Frame the problem

Before code, answer:

  • Is the corpus unstructured + non-trivial size (>100k tokens) + growing? If not → see R4 boundaries; LlamaIndex may be the wrong tool.
  • Is retrieval quality the bottleneck (not orchestration)? If orchestration dominates → LangGraph leads, LlamaIndex becomes a retrieval tool *inside* it.
  • What is the query distribution? (lookup-only / summary / compare-contrast / mixed). This decides whether a single Index or a Router is needed.

Stage 1 — Baseline (cheap, fast, observable)

from llama_index.core import VectorStoreIndex, SimpleDirectoryReader, Settings
from llama_index.core.node_parser import SentenceSplitter

Settings.llm        = OpenAI(model="gpt-4o-mini")
Settings.embed_model = OpenAIEmbedding(model="text-embedding-3-small")
Settings.node_parser = SentenceSplitter(chunk_size=1024, chunk_overlap=20)

docs  = SimpleDirectoryReader("./data").load_data()
index = VectorStoreIndex.from_documents(docs)
qe    = index.as_query_engine(similarity_top_k=4)

Pin Settings once at app boot, never inline. This eliminates the entire embedding-mismatch failure class (failure #4).

Stage 2 — Build the eval loop before optimizing anything

from llama_index.core.evaluation import (
    DatasetGenerator, FaithfulnessEvaluator,
    RelevancyEvaluator, RetrieverEvaluator,
)
qa = DatasetGenerator.from_documents(docs).generate_dataset_from_nodes(num=50)

Track {MRR, hit-rate, faithfulness, relevancy, p95 latency}. Every subsequent change must be gated on these numbers.

> Most RAG failures in production trace to weak retrieval or sloppy ingestion — not the LLM. The eval loop is what surfaces them.

From the official basic_strategies guide:

  • Prompt engineering (cheapest)
  • Embedding model (pick from MTEB; full re-embed if you change it)
  • Chunk size sweep ({256, 512, 1024, 2048}; default 1024 for prose, 80-160 for code)
  • Hybrid search (BM25 + dense) — *only if traffic contains lexical-identity queries*
  • Metadata filters — for multi-tenant / multi-collection corpora
  • Document/chunk decouplingHierarchicalNodeParser+AutoMergingRetriever *or* SentenceWindowNodeParser
  • Reranking (Cohere / SentenceTransformer / ColBERT) — widen top_k to 20-50, rerank to 3-5

Note the order: prompts first, reranking last. Reranking is high-impact but expensive — exhaust cheap knobs first.

Stage 4 — Compose for query heterogeneity

| Query shape | Right primitive |

|---|---|

| "Summarize doc X" | SummaryIndex per doc, routed |

| "Find the clause about X" | VectorStoreIndex + metadata filters |

| "Compare X and Y across docs" | SubQuestionQueryEngine |

| "What entities relate to X?" | PropertyGraphIndex |

| Mixed | RouterQueryEngine over per-task engines |

Stage 5 — Production hardening

Apply the failure-mode checklist (R4). Top 5 non-negotiables:

  • IngestionPipeline with docstore + UPSERTS_AND_DELETE for any live corpus.
  • Settings.embed_model pinned at boot; embedding model name in index metadata.
  • tree_summarize synthesizer when packing many chunks (mitigates lost-in-the-middle).
  • Tracing/observability captures query + retrieved_nodes + scores + index_id + LLM prompt for every failure.
  • Indices versioned as deployment artifacts; ingestion completes before traffic routing.

Stage 6 — Escalate to Workflows / Agents (only when justified)

Escalate when at least one of:

  • A retrieval loop is needed ("retrieve → check → re-query").
  • Tool calls beyond retrieval (calculator, web, code-exec).
  • State surviving across query turns.
  • Multiple specialized retrievers chosen at runtime.

Use Workflows 1.0 (event-driven), not deprecated QueryPipeline. Wrap query engines as QueryEngineTools and tune the description= carefully — it is the only signal the router/agent reads.


操作模型 (Operation Models)

Each operation: Trigger / Action / Output / Evidence.

OP-01 BaselineVectorIndex

  • Trigger: First-pass RAG over a new corpus; retrieval-quality baseline unknown.
  • Action: VectorStoreIndex.from_documents() with SentenceSplitter(1024, 20), top_k=4, default synthesizer. Ship to eval bench *before* tuning.
  • Output: Working RAG endpoint + baseline {MRR, hit-rate, faithfulness, relevancy, p95}.
  • Evidence: developers.llamaindex.ai/python/framework/optimizing/basic_strategies/basic_strategies/

OP-02 TuneChunkSize

  • Trigger: Faithfulness below target OR retrieved chunks visibly truncated/incomplete.
  • Action: Sweep chunk_size ∈ {256, 512, 1024, 2048} with overlap at ~10-20%; re-evaluate faithfulness + relevancy + latency. Default land: 1024 for prose, 80-160 for code.
  • Output: Optimal chunk_size pinned + embedding model version locked in index metadata.
  • Evidence: llamaindex.ai/blog/evaluating-the-ideal-chunk-size-for-a-rag-system-using-llamaindex-6207e5d3fec5 (faithfulness peaked at 1024 in LlamaIndex's own eval on Uber 10-K).

OP-03 AddReranker

  • Trigger: Top-1 wrong but relevant docs appear in top-k (failure #1 / #10).
  • Action: Add CohereRerank or SentenceTransformerRerank as a NodePostprocessor; widen retrieval top_k to 20-50, narrow to top_n=3-5 after rerank.
  • Output: Faithfulness lift typically 5-15pp on noisy corpora; lower context-window pressure.
  • Evidence: developers.llamaindex.ai/python/framework/optimizing/rag_failure_mode_checklist/ (#1, #10).

OP-04 AddHybridBM25

  • Trigger: Traffic contains exact identifiers, error codes, SKUs, code symbols, rare jargon — pure dense silently misses them.
  • Action: QueryFusionRetriever([vector_retriever, BM25Retriever]) *or* vendor hybrid (Qdrant/Milvus alpha). Tune alpha per query type, not globally.
  • Output: Recall lift on lexical-identity queries with no degradation on semantic queries.
  • Evidence: llamaindex.ai/blog/llamaindex-enhancing-retrieval-performance-with-alpha-tuning-in-hybrid-search-in-rag-135d0c9b8a00; BM25Retriever docs.

OP-05 DecoupleChunkScope

  • Trigger: Chunk-size sweep produces no single winner (small wins precision, large wins context).
  • Action: HierarchicalNodeParser + AutoMergingRetriever (for structured docs) *or* SentenceWindowNodeParser + MetadataReplacementPostProcessor (for flat prose). Embed small, return large.
  • Output: Precision-recall pareto improvement; LLM gets surrounding context that small chunks alone lost.
  • Evidence: AutoMergingRetriever / Hierarchical / SentenceWindow docs on developers.llamaindex.ai.

OP-06 RouteByQueryType

  • Trigger: Corpus serves heterogeneous tasks (summary / lookup / compare) from one entry point.
  • Action: Build per-task QueryEngines (SummaryIndex for digest, VectorStoreIndex for lookup, SubQuestionQueryEngine for compare) + a RouterQueryEngine with LLM or Pydantic selector. Carefully author each QueryEngineTool.description.
  • Output: Each query lands on the structurally-correct retrieval primitive; latency stays bounded.
  • Evidence: DeepLearning.AI *Building Agentic RAG with LlamaIndex*; router docs.

OP-07 DecomposeMultiHop

  • Trigger: Compare/contrast queries; queries needing facts from >1 document; "what changed between X and Y?".
  • Action: SubQuestionQueryEngine decomposes query → dispatches sub-questions to sub-engines → synthesizes.
  • Output: Multi-hop answers a single retrieval cannot assemble.
  • Evidence: developers.llamaindex.ai sub-question query engine docs.

OP-08 IngestionWithDocstore

  • Trigger: Documents will update/delete over time (any production system).
  • Action: IngestionPipeline(transformations=..., docstore=..., vector_store=..., docstore_strategy=UPSERTS_AND_DELETE). Run on a schedule, not manually.
  • Output: Idempotent re-ingestion; no duplicate vectors; deletes propagate.
  • Evidence: developers.llamaindex.ai/python/framework/module_guides/loading/ingestion_pipeline/; failure #3.

OP-09 MetadataFilters

  • Trigger: Multi-tenant corpus; cross-contamination between sub-collections; access control needed.
  • Action: Inject structured metadata at ingestion (tenant, doc_type, date); apply MetadataFilters at query time OR enable auto-retrieval to let an LLM emit filters.
  • Output: Hard isolation between tenants; targeted retrieval without expensive rerank.
  • Evidence: Failure #7; basic_strategies metadata filters section.

OP-10 EvalLoop

  • Trigger: Any non-trivial RAG, pre-deploy AND continuously in production.
  • Action: DatasetGenerator → labeled QA pairs; run FaithfulnessEvaluator + RelevancyEvaluator + RetrieverEvaluator(["mrr","hit_rate"]). Gate every change.
  • Output: Quantitative regression test for every chunking / embedding / retriever / prompt change.
  • Evidence: developers.llamaindex.ai/python/framework-api-reference/evaluation/; cookbook.openai.com/examples/evaluation/evaluate_rag_with_llamaindex.

OP-11 LockGlobalSettings

  • Trigger: Multiple modules each instantiate LLM/embed independently — drift risk.
  • Action: Set Settings.llm and Settings.embed_model once in app bootstrap. Forbid inline overrides in PR review.
  • Output: Eliminates failure #4 (config drift) and #5 (embedding mismatch).
  • Evidence: docs.llamaindex.ai/en/stable/module_guides/supporting_modules/service_context_migration/.

OP-12 AgenticWorkflow

  • Trigger: Need loops, tool calls beyond retrieval, multi-step reasoning, or state across turns.
  • Action: Build a Workflows 1.0 event-driven workflow OR a FunctionAgent/ReActAgent with QueryEngineTools. Do NOT use the deprecated QueryPipeline.
  • Output: Cycle-capable agentic system with retrieval as one tool among many.
  • Evidence: llamaindex.ai/blog/announcing-workflows-1-0-a-lightweight-framework-for-agentic-systems.

困境决策案例 (Dilemma Cases)

(Full text in references/R3-dilemma-cases.md. Summarized here.)

Dilemma 1 — Chunk size: precision vs context

困境: Small chunks → precise embeddings, fragmented context for the LLM. Large chunks → rich context, embeddings become "topic averages", recall on specific queries drops. Failure modes #2 and #6 are the two poles.

约束: Embedding model has a fixed input window; metadata is propagated into payload (so very small chunks become all-metadata — GitHub #12200, #13792); token budget caps how many chunks fit downstream.

决策步骤:

  • Generate ~20 eval QA pairs.
  • Sweep chunk_size ∈ {128, 256, 512, 1024, 2048} with overlap = 10-20%.
  • Build a VectorStoreIndex per config; record faithfulness, relevancy, latency.
  • If a single winner emerges → pin it.
  • If the frontier is non-flat → do not compromise; switch to small-embed/large-return via Hierarchical+AutoMerging *or* SentenceWindow.

结果: LlamaIndex's own published study (Uber 10-K) peaked at 1024 on both faithfulness and relevancy → 1024 became the framework default for prose. For code: 80-160 tokens. When the eval doesn't converge, decoupling wins; never average two bad chunk_sizes.

可提取的操作: OP-02 TuneChunkSize, OP-05 DecoupleChunkScope. Anti-pattern A1.

Dilemma 2 — Hybrid (BM25+dense) vs pure dense

困境: Adding hybrid doubles index footprint, requires per-query-type alpha tuning, complicates the pipeline. Worth it?

约束: Dense embeddings *silently fail* on identifiers, error strings, code, SKUs — they "destroy lexical identity by pooling token representations" (TianPan, 2026). BM25 scores against an inverted token index.

决策步骤:

  • Build a query-type taxonomy from real traffic: semantic / lexical / mixed.
  • If lexical share <5% → dense-only.
  • 5-50% → add hybrid; tune alpha per query type.
  • >50% (legal, code, logs) → invert: BM25-first, dense as reranker signal.
  • Evaluate alpha at {0, 0.25, 0.5, 0.75, 1.0} on labeled subsets.

结果: Hybrid lifts the lexical slice without hurting the semantic slice — *if alpha is tuned per type*. A single global alpha often underperforms dense, which is why some teams wrongly conclude "hybrid didn't help".

可提取的操作: OP-04 AddHybridBM25. Decision is traffic-driven, not theoretical.

Dilemma 3 — Agent on top of RAG, RAG as tool, or just a Router?

困境: User adds compare/summary/lookup queries to a basic RAG. Three options:

  • A. RouterQueryEngine over per-task engines.
  • B. FunctionAgent/ReActAgent with engines as tools.
  • C. SubQuestionQueryEngine to decompose.

约束: Agents add ≥1 LLM round-trip per step (latency); introduce planning errors a router cannot make; harder to debug (failure #12); most queries aren't multi-hop in practice.

决策步骤:

  • Measure: what fraction of queries actually need multi-step reasoning?
  • <20% multi-step + heterogeneous-but-single-step → Router (A).
  • Compositional/well-shaped queries ("compare X and Y") → SubQuestion (C).
  • Tool calls beyond retrieval, or cycles, or state → Agent on Workflows (B).
  • Whichever you pick: invest in QueryEngineTool.description — it's the only signal the router/agent sees.

结果: DeepLearning.AI's official course ladder is Router → Agent. Production guidance consistently warns against premature agentization. Workflows 1.0 (2025) signals: when you need agency, use the agentic primitive, don't fake it with DAG pipelines.

可提取的操作: OP-06 RouteByQueryType, OP-07 DecomposeMultiHop, OP-12 AgenticWorkflow. Anti-pattern A9.

Dilemma 4 — Long-context LLM (1M tokens) vs RAG

困境: Does a 1M-token context window eliminate the need for RAG?

约束 (from llamaindex.ai/blog/towards-long-context-rag): 1M tokens ~60s latency + $0.50-$20/query; 10M tokens still doesn't cover large corpora; "lost in the middle" degrades quality by ~30%.

决策步骤:

  • Corpus >1M tokens → RAG mandatory.
  • p50 latency budget <5s → cannot afford full-context stuffing.
  • Per-query cost ceiling <$0.05 → same.
  • Apply LlamaIndex's three long-context patterns: Small-to-Big, Intelligent Routing, Retrieval-Augmented KV Caching.

结果: Long context does not replace RAG; it changes what RAG looks like. The bottleneck shifts from "fitting context" to "feeding right context in the right position" — making rerank + position-aware synthesis (tree_summarize) more important, not less.

可提取的操作: For any corpus >500k tokens or latency <5s: keep RAG. Use long-context as synthesis-stage capacity.

Dilemma 5 — Sentence-Window vs Auto-Merging

困境: Both implement "embed small, return large". Not interchangeable.

决策步骤:

  • Docs have clear hierarchy (sections/headings) → Auto-Merging.
  • Docs are flat prose → Sentence-Window.
  • Queries are bursty multi-chunk → Auto-Merging escalates correctly.
  • Queries are point-fact with surrounding context → Sentence-Window.

结果: Both beat naive top-k on faithfulness. Match parser/retriever pair to document structure, not theoretical elegance. Always pair SentenceWindowNodeParser with MetadataReplacementPostProcessor.


反模式与边界 (Anti-patterns & Boundaries)

Top 10 anti-patterns (full list in references/R4-anti-patterns.md)

| # | Anti-pattern | Correct move |

|---|---|---|

| A1 | Bump chunk_size when answers feel incomplete | Decouple embed-scope from synthesis-scope (Hierarchical / SentenceWindow) |

| A2 | Swap embedding model without re-embed | Rebuild index; tag artifact with embed model name+version |

| A3 | No eval loop; debug by anecdote | Stand up RetrieverEvaluator + FaithfulnessEvaluator + RelevancyEvaluator first |

| A4 | ServiceContext + manual config in every module | Pin Settings.llm and Settings.embed_model once at boot |

| A5 | QueryPipeline DAG for agentic logic | Use Workflows 1.0 (event-driven, supports cycles) |

| A6 | Naive top_k=N, no reranker | Widen top_k + add CohereRerank / SentenceTransformerRerank |

| A7 | Metadata not propagated to chunks; or metadata > 50% of chunk_size | Design metadata schema before ingestion; budget metadata tokens |

| A8 | Multi-modal RAG by base64-stuffing images into text | Use LlamaParse + multi-modal retrieval primitives |

| A9 | Wrap retrieval in a custom agent when a Router suffices | Default to RouterQueryEngine; escalate to Agent only with justification |

| A10 | Ingest once at deploy, never reconcile | IngestionPipeline + docstore + UPSERTS_AND_DELETE |

Boundaries — when not to use LlamaIndex

  • B1: Tiny static corpus (<100k tokens) → prompt-stuff with caching.
  • B2: Pure structured/tabular data → DuckDB/SQL/BI. (LlamaIndex only when NL2SQL+RAG hybrid.)
  • B3: Hard real-time / sub-100ms retrieval → raw vector store SDK, not a RAG framework.
  • B4: Complex multi-agent orchestration → LangGraph or CrewAI leads; embed LlamaIndex retrievers as tools.
  • B5: Highly specialized parsing requirements + team has engineering budget → custom stack (Unstructured.io + pgvector + custom retriever) gives more control.

PR-review smells (instant red flags)

  • from llama_index import ServiceContext → A4.
  • index.as_query_engine(similarity_top_k=20) without a rerank postprocessor → A6.
  • SentenceSplitter(chunk_size=4096) → likely A1.
  • Settings.embed_model = ... in >1 file → A4 drift.
  • IngestionPipeline(...) without docstore= → A10.
  • A Workflow with no events or loops → over-engineered; should be a QueryEngine.
  • An agent with a single retrieval tool → A9; should be a QueryEngine or RouterQueryEngine.

生态对照 (Ecosystem Context)

Decision rubric

Q1. Primarily extracting from messy documents (PDFs, slides, tables, scans)?
   YES → LlamaIndex (+ LlamaParse) leads.
Q2. Primary challenge is multi-step agentic orchestration with many non-retrieval tools?
   YES → LangGraph / CrewAI leads; use LlamaIndex retrievers as tools.
Q3. Corpus small (<100k tokens) and static?
   YES → No framework; prompt-stuff with caching.
Q4. Pure structured/tabular data?
   YES → SQL/DuckDB/BI. Use LlamaIndex only for hybrid NL2SQL+RAG.
DEFAULT → LlamaIndex remains lead; layer LangGraph only if agentic logic emerges.

Head-to-head highlights

| Vs | LlamaIndex wins when | Other wins when |

|---|---|---|

| LangChain | Retrieval quality and ingestion are the bottleneck; document-heavy | Orchestration is complex; many non-retrieval tools |

| Haystack | Modern LLM-centric docs; multi-modal; broader index taxonomy | YAML-configurable pipelines; classical IR feel |

| Raw vector store | Need >2 of {SentenceSplitter, IngestionPipeline, Reranker, Eval, Synthesizer} | Truly minimal RAG; team wants no framework |

| DSPy | Want structured retrieval infrastructure | Want automatic prompt optimization |

| LangGraph (for agents) | Retrieval-heavy with light agency (Workflows ergonomic here) | Many states, complex multi-agent state machines |

| CrewAI / AutoGen | (different category) | Multi-agent collaboration is the goal |

The normative hybrid (2025-2026)

> Most production teams converge on: LlamaIndex for retrieval & ingestion; LangGraph (or LlamaIndex Workflows) for orchestration; LangSmith / Phoenix for observability.


References

  • references/R1-architecture.md — 5-layer model deep dive, Index taxonomy, Settings/Workflows
  • references/R2-sop-workflow.md — full 8-stage RAG bootstrap protocol
  • references/R3-dilemma-cases.md — 5 dilemma cases in full
  • references/R4-anti-patterns.md — 13 official failure modes + 10 anti-patterns + boundaries
  • references/R5-ecosystem-context.md — comparison matrix, hybrid patterns
  • intermediate/operation_candidates.json — machine-readable operation list

Primary sources (cited inline above)

  • developers.llamaindex.ai/python/framework/ (architecture homepage)
  • developers.llamaindex.ai/python/framework/optimizing/basic_strategies/basic_strategies/
  • developers.llamaindex.ai/python/framework/optimizing/rag_failure_mode_checklist/ (official 13 failure modes)
  • developers.llamaindex.ai/python/framework/module_guides/indexing/index_guide/
  • developers.llamaindex.ai/python/framework/module_guides/loading/ingestion_pipeline/
  • llamaindex.ai/blog/evaluating-the-ideal-chunk-size-for-a-rag-system-using-llamaindex-6207e5d3fec5
  • llamaindex.ai/blog/llamaindex-enhancing-retrieval-performance-with-alpha-tuning-in-hybrid-search-in-rag-135d0c9b8a00
  • llamaindex.ai/blog/towards-long-context-rag
  • llamaindex.ai/blog/announcing-workflows-1-0-a-lightweight-framework-for-agentic-systems
  • docs.llamaindex.ai/en/stable/module_guides/supporting_modules/service_context_migration/
  • github.com/run-llama/llama_index (README, issues #12200, #13792, #6465)
  • cookbook.openai.com/examples/evaluation/evaluate_rag_with_llamaindex
  • learn.deeplearning.ai/courses/building-agentic-rag-with-llamaindex/
  • ibm.com/think/topics/llamaindex-vs-langchain
  • statsig.com/perspectives/llamaindex-rag-retrieval
  • tianpan.co/blog/2026-04-12-hybrid-search-production-bm25-dense-embeddings

How to use it

Copy the folder

Take agentsope/agentsop-llamaindex from the repository into ~/.claude/skills for personal use, or into .claude/skills inside a project.

Check the name does not clash

The agent identifies a skill by the name field in its header. Two skills with the same name cannot sit side by side — one of them will be ignored.