Skip to content

Install Extras Matrix

This page lists every optional extra — for each, the component slot it serves, the implementation(s) it enables, and the packages it pulls in.

The guiding rule: pip install indx stays light. Core carries no cloud SDKs, no vector-DB clients, and no heavy parsing toolchains. Anything expensive is opt-in. The documented model defaults use cloud adapters once their extras are installed, and the local profile stays available for air-gapped runs.

A plain pip install indx carries only a small set of pure-Python (and one compiled-wheel) dependencies:

PackageWhy it’s in core
Pydantic v2All boundary-crossing data models (config, manifest, documents, chunks, relations)
TyperBuilds the typed CLI command tree
RichTerminal rendering — progress bars, tables for indx inspect, tracebacks
ClickUnderlies Typer’s parsing and completion
pydantic-settingsLayers config sources: defaults → indx.toml → env vars → CLI flags

TOML parsing needs no dependency. tomllib has been in the Python standard library since 3.11, and indx requires Python 3.11–3.13.

The bare install is not just a skeleton. It ships working fallbacks for every slot that would otherwise need an extra. A full end-to-end run is therefore possible offline with nothing but pip install indx:

SlotFallback (in core)Behaviour
parserplaintextReads files as plain text — no Docling/Torch needed
storejsonlVectors and metadata written inline; brute-force linear search
vlmnoneSkips vision enrichment entirely (this is also the default VLM)
output writer.indx and jsonlSelf-contained archive, or newline-delimited documents/chunks

pyproject.toml maps each extra to the packages its implementation needs, under [project.optional-dependencies]. The “Pulls” column shows the headline dependency each extra brings in.

pip install …SlotImplementation(s) enabledPulls (illustrative)
indx[docling]parserDoclingParserdocling
indx[unstructured]parserUnstructuredParserunstructured
indx[llamaparse]parserLlamaParseParserllama-cloud-services
indx[markitdown]parserMarkItDownParsermarkitdown
indx[ollama]llm / vlmOllamaLLMollama
indx[vllm]llmVLLMClientvllm, openai (OpenAI-compatible API)
indx[openai]llm / vlm / embedOpenAILLM, GPT4oVLM, OpenAIEmbedderopenai
indx[anthropic]llmAnthropicLLManthropic
indx[litellm]llm / embedLiteLLMClient, LiteLLMEmbedderlitellm (one client for 100+ providers, on-prem + AWS/Azure/GCP/cloud)
indx[azure]llm / vlm / embed / parser / storeAzureOpenAILLM, AzureOpenAIVLM, AzureOpenAIEmbedder, DocumentIntelligenceParser, AzureAISearchStoreopenai, azure-ai-documentintelligence, azure-search-documents, azure-identity, azure-core
indx[qwen-vl]vlmQwenVLClienttransformers, torch, qwen-vl-utils
indx[vlm-local]vlmLocalVLMhttpx
indx[bge]embedBGEM3Embedder (name: bge-m3)FlagEmbedding, torch
indx[e5]embedE5Embeddersentence-transformers, torch
indx[cohere]embedCohereEmbeddercohere
indx[qdrant]storeQdrantStoreqdrant-client
indx[pgvector]storePgVectorStorepsycopg[binary], pgvector
indx[chroma]storeChromaStorechromadb
indx[lancedb]storeLanceDBStorelancedb
indx[aws]parser / llm / vlm / embed / storeTextractParser, BedrockLLM, BedrockVLM, BedrockEmbedder, S3VectorsStoreboto3>=1.40
indx[aws-opensearch]storeOpenSearchStoreindx[aws], opensearch-py>=2.4
indx[gcp]parser / llm / vlm / embed / storeDocumentAIParser, VertexLLM, VertexVLM, VertexEmbedder, BigQueryStoregoogle-genai>=1.0, google-cloud-documentai>=2.20, google-cloud-bigquery>=3.20
indx[gcp-vectorsearch]storeVertexVectorStoreindx[gcp], google-cloud-aiplatform>=1.50
indx[langchain]output / agentLangChainWriter; LangChain agent tools + retrieverlangchain-core
indx[llamaindex]outputLlamaIndexWriterllama-index-core
indx[mcp]agentMCP server (indx mcp); KnowledgeConnector.mcp()fastmcp>=2.0, falls back to the FastMCP bundled in the mcp SDK
indx[pydantic-ai]agentPydantic AI toolspydantic-ai-slim
indx[openai-agents]agentOpenAI Agents SDK function toolsopenai-agents
indx[claude-agent]agentClaude Agent SDK in-process MCP serverclaude-agent-sdk
indx[agent]agent (bundle)every framework adapter + the MCP serverunion of the agent extras + langchain
indx[local] / indx[defaults]bundledocling + ollama + bge-m3 + qdrant (the local profile)the local / air-gapped stack
indx[all]bundleeverything above + all cloud stacksunion of all extras (including aws, aws-opensearch, azure, gcp, gcp-vectorsearch)

Two convenience bundles install groups of extras in one command:

BundleInstallsUse when
indx[local]docling + ollama + bge + qdrantYou want the local profile in one line.
indx[all]The union of every extra aboveCI, exploration, or trying every backend.

indx[local] and indx[defaults] are aliases for the same local bundle. Installing either pulls the local profile: Docling, Ollama qwen2.5, BGE-M3, and Qdrant.

Terminal window
# Opt-in local profile (air-gapped stack): Docling, Ollama (qwen2.5), BGE-M3, Qdrant
# indx[local] and indx[defaults] are aliases for the same bundle
pip install "indx[local]"
# Everything, for CI or experimentation
pip install "indx[all]"
# Or compose exactly what you need
pip install "indx[markitdown,openai,chroma]"

The indx.agent package turns a built .indx archive into live tools for an AI agent. Each framework adapter is gated behind its own extra; indx[agent] installs them all (plus the MCP server).

Terminal window
pip install "indx[agent]" # every adapter + the MCP server
pip install "indx[mcp]" # just the universal MCP server (Mastra, Cursor, Claude Desktop…)

The langchain extra does double duty: it powers both the build-time langchain output writer and the LangChain agent connector (both ride on langchain-core). See the AI agents guide.

Three extras bundle a complete single-vendor pipeline — parser, LLM, VLM, embedder, and vector store — all satisfied by one cloud’s managed services. Install one extra, pass the matching CLI flag, and every slot is filled automatically (explicit flags still win; see CLI reference).

Terminal window
pip install "indx[aws]" # Textract · Bedrock · Titan · S3 Vectors
pip install "indx[azure]" # Document Intelligence · Azure OpenAI · Azure AI Search
pip install "indx[gcp]" # Document AI · Vertex AI (Gemini) · gemini-embedding-001 · BigQuery

Each cloud’s SDK is gated behind an extra and is never pulled by a bare pip install indx.

ExtraKey SDK dependencyNotes
indx[aws]boto3>=1.40boto3 is the single SDK for Bedrock, Textract, and S3 Vectors. boto3>=1.40 is required for the S3 Vectors client (GA 2025-12). Older versions lack the s3vectors service client and raise a clear upgrade prompt at runtime.
indx[aws-opensearch]opensearch-py>=2.4Adds the opt-in OpenSearch Serverless store on top of indx[aws]. Use this when you need lower-latency ANN search.
indx[azure]openai>=1.40, azure-ai-documentintelligence>=1.0.0, azure-search-documents>=11.5.0, azure-identity>=1.16, azure-core>=1.30Widened from the previous ["openai"] definition. The extra now covers the full Azure stack. The openai package stays at the same pin it already required; the Azure service SDKs are additive. azure-ai-documentintelligence>=1.0.0 is required for the body= argument shape (pre-1.0.0 betas used a different parameter). azure-search-documents>=11.5.0 is required for the vector-search profile classes. azure-identity enables DefaultAzureCredential (managed-identity / az login) when no API-key env var is set.
indx[gcp]google-genai>=1.0, google-cloud-documentai>=2.20, google-cloud-bigquery>=3.20google-genai is the unified SDK for Vertex AI Gemini (LLM, VLM, and embedder slots). The deprecated vertexai.generative_models classes are not used.
indx[gcp-vectorsearch]google-cloud-aiplatform>=1.50Adds Vertex Vector Search on top of indx[gcp]. Vertex Vector Search requires deploying an index to an endpoint before querying (a 20–60 minute operation); the default GCP store (bigquery) has no such requirement.
CloudDefault storeOpt-in storeWhy the split
AWSs3vectors (indx[aws])opensearch (indx[aws-opensearch])S3 Vectors needs only boto3; OpenSearch Serverless requires opensearch-py plus extra IAM data-access policies. S3 Vectors is zero-infra and ~90 % cheaper; OpenSearch gives lower latency and higher QPS.
Azureazure-search (indx[azure])— (Azure AI Search is the only native option)All Azure service SDKs are already in indx[azure].
GCPbigquery (indx[gcp])vertex-vector (indx[gcp-vectorsearch])BigQuery is serverless with no endpoint to deploy; Vertex Vector Search requires a long-running, always-billed endpoint. BigQuery maps cleanly to upsert/search/delete at seconds-scale latency.

Because the registry only ever imports concrete implementations lazily, a missing extra never breaks an unrelated code path. The error surfaces only when you actually select that slot.

When an implementation module is imported without its extra installed, the utils.lazy.require_extra(...) helper raises a single, actionable error. Selecting the Qdrant store without indx[qdrant] installed yields:

MissingExtraError: store 'qdrant' requires the 'qdrant' extra: pip install indx[qdrant]

The message always names the slot, the selected implementation, and the exact pip install indx[...] command to fix it. MissingDependencyError is part of the shared exception hierarchy rooted at IndxError; see Errors & exit codes.

If you’d rather choose deliberately than install a bundle, each slot has a dedicated guide that weighs the options:

For how a name in indx.toml resolves to one of these classes — and how third-party plugins register their own — see Registry & Defaults and Configuration.