Doramagic 项目包 · 项目说明书

llama_index 项目

LlamaIndex 是领先的文件智能体与 OCR 平台

Framework Overview & Monorepo Architecture

LlamaIndex 是一个面向大语言模型(LLM)应用的数据框架,核心目标是把外部数据源、检索层、向量库、工具集与 Agent 工作流统一在同一套抽象下,让开发者能够以最小代价构建 RAG(检索增强生成)、工具调用与多 Agent 协作系统。仓库采用 monorepo 形式管理,把核心库与大量第三方集成放在同一个 Git 仓库内协同发布。

章节 相关页面

继续阅读本节完整说明和来源证据。

章节 1. Readers(数据连接器)

继续阅读本节完整说明和来源证据。

章节 2. Tools(Agent 工具规格)

继续阅读本节完整说明和来源证据。

章节 3. Vector Stores 与 Graph RAG

继续阅读本节完整说明和来源证据。

框架概览与 Monorepo 架构

一、定位与目标

LlamaIndex 是一个面向大语言模型(LLM)应用的数据框架,核心目标是把外部数据源、检索层、向量库、工具集与 Agent 工作流统一在同一套抽象下,让开发者能够以最小代价构建 RAG(检索增强生成)、工具调用与多 Agent 协作系统。仓库采用 monorepo 形式管理,把核心库与大量第三方集成放在同一个 Git 仓库内协同发布。

仓库顶层通过 llama-index-core 提供基础抽象(DocumentBaseReaderBaseToolSpec 等),再以同名可独立发布的子包形式挂载各种数据连接器、LLM、嵌入模型、向量库、回调与 Agent 集成。社区也通过这一架构提供"外部集成"通道,例如 issue #21883 提到的 Bocha Web Search ToolSpec 即作为独立外部包发布。

二、Monorepo 目录组织

仓库在顶层按职责拆分为多个子目录,常见的有 llama-index-core/(核心抽象)和 llama-index-integrations/(集成生态)。llama-index-integrations/ 内部又按集成类别分子目录,每个子目录对应一个或多个 PyPI 可发布包。

graph TD
  A[llama_index monorepo] --> B[llama-index-core]
  A --> C[llama-index-integrations]
  A --> D[llama-dev]
  B --> B1[核心抽象: Document / BaseReader / BaseToolSpec / Settings]
  B --> B2[Agent / Workflow 模板]
  C --> E[readers<br/>数据连接器]
  C --> F[tools<br/>工具规格]
  C --> G[vector_stores<br/>向量库后端]
  C --> H[graph_rag<br/>图检索增强]
  C --> I[llms / embeddings / agents / callbacks]
  E --> E1[apify / docling / wikipedia / obsidian / confluence / markitdown / service_now / layoutir / docstring_walker / docugami]
  F --> F1[tavily-research / wikipedia / seltz / agentql / parallel-web-systems]
  G --> G1[wordlift 等]
  H --> H1[cognee 等]
  D --> D1[统一开发与发布 CLI]

每个集成子包都遵循统一的命名约定(llama-index-<category>-<name>)并提供独立 README.md、依赖与版本号,方便按需安装,避免核心包过度膨胀。

三、集成层次与典型子包

1. Readers(数据连接器)

Readers 负责把异构数据源解析为 Document 列表,是构建索引与 Agent 上下文的最上游。仓库内置丰富的开箱即用连接器:

  • 通用文档解析llama-index-readers-docling 基于 Docling 提供 PDF/DOCX/HTML 等格式解析,可输出 Markdown 或 Docling 原始 JSON 资料来源:llama-index-readers-docling/README.md:1-50。
  • 格式转换llama-index-readers-markitdown 调用微软 MarkItDown 将 PPTX/DOCX/PDF/HTML 等转为 Markdown 资料来源:llama-index-readers-markitdown/README.md:1-20。
  • 企业协作llama-index-readers-confluence 支持 Confluence 空间、页面 ID 与 CQL 查询检索,并可通过 process_attachment_callback 过滤附件资料来源:llama-index-readers-confluence/README.md:50-120;llama-index-readers-service-now 则面向 ServiceNow 知识库表(默认 kb_knowledge),并要求用户提供自定义解析器(如 HTMLParser)资料来源:llama-index-readers-service-now/README.md:1-60。
  • 本地与个人数据llama-index-readers-obsidian 解析 Obsidian Vault,抽取 wikilinks、backlinks 与任务元数据 资料来源:llama-index-readers-obsidian/README.md:1-30;llama-index-readers-wikipedia 按页面标题批量抓取 Wikipedia 资料来源:llama-index-readers-wikipedia/README.md:1-15。
  • 专用场景llama-index-readers-apify 借助 Apify Actor 抓取网页并通过 dataset_mapping_function 映射成 Document 资料来源:llama-index-readers-apify/README.md:1-20;llama-index-readers-docstring-walker 通过 AST 提取代码库中模块、类与函数的 docstring 资料来源:llama-index-readers-docstring-walker/README.md:1-20。

2. Tools(Agent 工具规格)

Tools 子包面向 FunctionAgent 等工作流 Agent 提供结构化能力。BaseToolSpecto_tool_list() 方法把每个工具函数转换成 LLM 可调用的工具描述。例如:

  • TavilyToolSpec 提供 searchextract 两个工具,可与 FunctionAgent 配合做实时检索 资料来源:llama-index-tools-tavily-research/README.md:30-55。
  • WikipediaToolSpec 暴露 load_datasearch_data,供 Agent 按需加载 Wikipedia 页面 资料来源:llama-index-tools-wikipedia/README.md:1-25。
  • SeltzToolSpecAgentQL 工具则进一步提供上下文工程化与浏览器交互能力 资料来源:llama-index-tools-seltz/README.md:1-40、llama-index-tools-agentql/README.md:1-30。

Agent 自身的提示与循环由核心层提供,例如 ReAct 模板通过 system_header_template.md 定义了 Thought / Action / Action Input / Observation 的标准交互格式 资料来源:llama-index-core/llama_index/core/agent/react/templates/system_header_template.md:1-30

3. Vector Stores 与 Graph RAG

向量库集成位于 llama-index-integrations/vector_stores/,例如 llama-index-vector-stores-wordlift 把 Linked Data 知识图谱与向量检索结合,要求在节点 metadata 中提供 entity_id 以建立永久可解析 URI 资料来源:llama-index-vector-stores-wordlift/README.md:1-15。

graph_rag/ 子目录则承载图检索增强方案,例如 llama-index-graph-rag-cognee 提供 addprocess_datasearchrag_searchget_related_nodesvisualize_graph 等方法,支持 SQLite/PostgreSQL/Neo4j 等多种后端 资料来源:llama-index-graph-rag-cognee/README.md:1-50。

四、发布节奏与社区演进

仓库遵循核心包 + 集成包独立版本化的发布模式。以最新一次发布 v0.14.22(2026-05-14)为例,单次发布可同时推动数十个集成包版本号前进,集成包之间通过 pyproject.toml 显式声明对 llama-index-core 的依赖约束。

近期核心包演进方向包括:

  • 可观测与安全llama-index-callbacks-agentopshoneyhiveargillawandb 等回调被持续更新以支持新的事件类型(如 v0.14.12 的 async tool spec 追踪)。
  • 性能与稳定性v0.14.16 引入 LLM/embedding 调用的 token-bucket 限流器;v0.14.14 修复 VectorStoreQueryOutputParser 中的 pydantic.ValidationError 捕获问题。
  • Agent 增强v0.14.15 新增多模态类型基础操作;v0.14.13 为 agent workflow 增加 early_stopping_method 参数;同版本还加入了基于 token 的 CodeSplitterRayIngestionPipeline 集成。
  • Trust / Governance 生态:社区讨论中的 AgentMeshAgent Magnet 等提案表明,治理、记忆与可信 Agent 正在成为下一阶段重点。

See Also

来源:https://github.com/run-llama/llama_index / 项目说明书

Data Connectors, Node Parsers & Ingestion Pipeline

LlamaIndex 的摄取子系统由三个互相衔接的层级组成:Data Connectors(Reader) 负责将外部数据源(Confluence、Obsidian、Apify、ServiceNow、Docling、Wikipedia 等)转换为统一的 Document 对象;Node Parsers 把长文档切分为可索引的 Node;Ingestion Pipeline ...

章节 相关页面

继续阅读本节完整说明和来源证据。

概述

LlamaIndex 的摄取子系统由三个互相衔接的层级组成:Data Connectors(Reader) 负责将外部数据源(Confluence、Obsidian、Apify、ServiceNow、Docling、Wikipedia 等)转换为统一的 Document 对象;Node Parsers 把长文档切分为可索引的 NodeIngestion Pipeline 则将转换、切片、嵌入、写入向量库等步骤编排为可复用、可缓存、可并行的工作流。社区在 v0.14.13 引入 RayIngestionPipeline,将分布式执行下沉到 Ray 集群,以满足大规模场景的吞吐需求(参见 v0.14.13 release notes)。在 v0.14.16 中又新增 LLM 与 Embedding 调用的 token-bucket 限流器(参见 v0.14.16 release notes)。

数据连接器(Data Connectors)

数据连接器位于 llama-index-integrations/readers/ 目录,是摄取流程的入口。每个 Reader 都继承自 BaseReader,并通过 load_data(...) 方法返回 List[Document]。按照数据来源可分为以下几类:

社区关注点:用户曾在 #1321 反馈索引在缺乏上下文时仍可能产生“超出文档”的回答,这通常意味着需要更严格的 metadata 过滤与提示词约束;为 Reader 注入更丰富元数据(如 Obsidian 的 wikilinks/backlinks)是缓解手段之一(参见 Issue #1321)。

节点解析器(Node Parsers)

Node Parser 的职责是把 Document.text 切分为 BaseNode 列表,是检索质量的关键环节。v0.14.13 引入 token-based CodeSplitter,按模型 token 预算对齐代码块边界;SemanticSplitterNodeParser 借助嵌入相似度识别语义断点;SentenceSplitter 是默认实现,按句子与 chunk_overlap 进行滑动切分。Reader 与 Parser 之间通过统一 metadata 透传:例如 ObsidianReaderfile_namefolder_pathwikilinks 写入 Document.metadata,这些字段会在 Parser 阶段被复制到每个生成的 Node,供后续 Hybrid Search 与 Metadata Filter 使用(参见 llama-index-readers-obsidian/README.md)。

摄取管道(Ingestion Pipeline)

IngestionPipeline 把 Reader 输出后的处理步骤(Transformations、Embedding、Vector Store 写入、去重、缓存)编排为可重启的工作流。典型流程如下:

flowchart LR
    A[数据源<br/>Confluence/Obsidian/Docling/...] --> B[Reader<br/>load_data]
    B --> C[List[Document]]
    C --> D[Node Parser<br/>SentenceSplitter/CodeSplitter]
    D --> E[List[Node]]
    E --> F[Embedding<br/>+ Token-Bucket 限流]
    F --> G[(Vector Store<br/>Qdrant/Weaviate/PGVector)]
    G --> H[Index / Query Engine]

在 v0.14.13 中加入的 RayIngestionPipeline 将上述流程下沉到 Ray 集群并行执行;v0.14.16 引入的 token-bucket 限流器对 LLM 与 Embedding API 调用生效,可与 Ray 流水线配合防止外部服务触发 429。同时,CogneeGraphRAG 提供 addprocess_datasearch 的高层封装,把摄取结果以图结构组织,支持 get_related_nodesvisualize_graph(参见 llama-index-graph-rag-cognee/README.md)。最后,Reader 输出的 Document 还会被 ReActAgent 通过 tool_spec.to_tool_list() 暴露给 Agent,由 LLM 决策触发顺序(参见 system_header_template.md)。

常见失败模式

  1. 缺少自定义解析器SnowKBReaderConfluenceReader 不内置 HTML/DOCX 解析器,未注入 custom_parsers 时会在附件阶段抛出异常(参见 llama-index-readers-service-now/README.md)。
  2. Docling JSON 误用:若使用 ExportType.JSON 而未在 Pipeline 中配置 Docling Node Parser,节点内容会变成原始 JSON 字符串(参见 llama-index-readers-docling/README.md)。
  3. 元数据漂移:Reader 与 Parser 之间若未保持一致的 metadata 字段命名,会导致 Hybrid Search 过滤失败,建议在 Reader 侧显式声明字段并复用同一 schema(参见 llama-index-readers-obsidian/README.md)。

参见

  • Agents & Tool Specs(Tools / Function Calling)
  • Vector Stores & Embedding Integrations
  • Graph RAG 集成(Cognee、Neo4j 等)
  • ReAct Agent 工作流与 System Prompt

来源:https://github.com/run-llama/llama_index / 项目说明书

Index Types, Vector Stores & Storage Layer

LlamaIndex 的存储与索引体系是其 RAG(检索增强生成)能力的核心。该体系由三层组成:Index Types(索引类型) 负责组织数据并提供查询接口,Vector Stores(向量存储) 负责持久化嵌入向量与元数据,Storage Layer(存储层) 则统一管理文档存储、索引存储以及向量存储之间的协作关系。三者通过 StorageContext 解耦,用户可以...

章节 相关页面

继续阅读本节完整说明和来源证据。

章节 2.1 VectorStoreIndex

继续阅读本节完整说明和来源证据。

章节 2.2 TreeIndex

继续阅读本节完整说明和来源证据。

章节 2.3 KeywordTableIndex

继续阅读本节完整说明和来源证据。

1. 概述

LlamaIndex 的存储与索引体系是其 RAG(检索增强生成)能力的核心。该体系由三层组成:Index Types(索引类型) 负责组织数据并提供查询接口,Vector Stores(向量存储) 负责持久化嵌入向量与元数据,Storage Layer(存储层) 则统一管理文档存储、索引存储以及向量存储之间的协作关系。三者通过 StorageContext 解耦,用户可以灵活替换底层实现(如 Pinecone、Chroma、PostgreSQL 等),而无需修改上层业务代码。

资料来源:llama-index-core/llama_index/core/indices/__init__.py llama-index-core/llama_index/core/storage/storage_context.py

2. 索引类型(Index Types)

LlamaIndex 内置多种索引类型,适用于不同的检索场景:

2.1 VectorStoreIndex

最常用的索引类型,基于向量相似度进行检索。它将文档分块、向量化后存入底层 VectorStore,查询时通过余弦相似度或近似最近邻(ANN)算法召回相关节点。资料来源:llama-index-core/llama_index/core/indices/vector_store/base.py

2.2 TreeIndex

树形索引,采用自底向上方式构建——父节点摘要子节点内容。查询时支持 default(递归遍历树叶节点)与 retrieve(直接以根节点为上下文)两种模式。资料来源:llama-index-core/llama_index/core/indices/tree/README.md

2.3 KeywordTableIndex

基于关键词抽取的非向量索引,适合需要精确关键词匹配的场景。它从节点文本中提取关键字,并构建关键字到节点的映射表。资料来源:llama-index-core/llama_index/core/indices/keyword_table/base.py

2.4 PropertyGraphIndex

属性图索引,将文档建模为图结构,节点表示实体,边表示关系。该索引常与图存储后端(如 Neo4j、WordLift)配合使用,支持复杂的关系推理。资料来源:llama-index-core/llama_index/core/indices/property_graph/base.py 社区近期讨论的 AgentMesh 集成(v0.14.15 起)以及 Agent Magnet 等记忆层方案,也倾向于基于此类图索引构建持久化记忆能力。资料来源:GitHub Issue #21880

graph LR
    A[Documents] --> B[Index Types]
    B --> B1[VectorStoreIndex]
    B --> B2[TreeIndex]
    B --> B3[KeywordTableIndex]
    B --> B4[PropertyGraphIndex]
    B1 --> C[Vector Stores]
    B2 --> C
    B4 --> C
    C --> D[Storage Layer]
    D --> D1[Document Store]
    D --> D2[Index Store]
    D --> D3[Vector Store]

3. 向量存储(Vector Stores)

向量存储是索引的物理后端,定义了 adddeletequery 等核心操作的协议抽象。BasePydanticVectorStore 规定所有实现必须返回 VectorStoreQueryResult,包含节点 ID、相似度分数及原始数据。

资料来源:llama-index-core/llama_index/core/vector_stores/types.py

社区提供了丰富的集成选项:

4. 存储层(Storage Layer)

StorageContext 是存储层的入口,集中管理以下组件:

  • docstore:文档存储,保存原始 Document 对象;
  • index_store:索引元数据,保存索引结构(如树结构、图结构)的序列化结果;
  • vector_store:向量存储,保存嵌入向量及节点引用;
  • graph_store:图存储(可选),仅 PropertyGraphIndex 使用。

用户可通过 StorageContext.from_defaults() 快速创建默认(内存)实现,或显式注入自定义后端。资料来源:llama-index-core/llama_index/core/storage/storage_context.py

5. 常见问题与社区反馈

  1. Pydantic 版本兼容性:长期存在 #13477 等讨论,用户希望默认采用 Pydantic v2,以避免与 FastAPI 等下游框架冲突。资料来源:GitHub Issue #13477
  2. 本地部署:社区常问如何在本地使用 Alpaca 等模型构建完全自托管的索引与向量存储,避免数据外传。资料来源:GitHub Issue #928
  3. 索引答案超出文档范围:使用 VectorStoreIndex 时,模型可能基于通用知识回答未在语料中出现的问题,可通过自定义 QueryEngine 提示词模板或增加相关性阈值来缓解。资料来源:GitHub Issue #1321
  4. 外部集成策略:自 v0.14.x 起,官方鼓励第三方工具(如 Bocha Web Search)以外部包形式发布,并通过回调机制(Instrumentation Handler)增强可观测性与安全性。资料来源:GitHub Issue #21883

See Also

资料来源:llama-index-core/llama_index/core/indices/__init__.py llama-index-core/llama_index/core/storage/storage_context.py

Retrievers, Query Engines & Response Synthesizers

LlamaIndex 的 RAG(Retrieval-Augmented Generation)管道围绕三个核心抽象构建:Retriever(检索器)负责从索引中召回相关节点,Query Engine(查询引擎)将检索与 LLM 编排组合为端到端问答接口,Response Synthesizer(响应合成器)则把检索到的节点与查询合成为最终答案。仓库中大量的 reader、...

章节 相关页面

继续阅读本节完整说明和来源证据。

概览

LlamaIndex 的 RAG(Retrieval-Augmented Generation)管道围绕三个核心抽象构建:Retriever(检索器)负责从索引中召回相关节点,Query Engine(查询引擎)将检索与 LLM 编排组合为端到端问答接口,Response Synthesizer(响应合成器)则把检索到的节点与查询合成为最终答案。仓库中大量的 reader、tool spec、vector store 集成包,正是为了在数据接入、工具能力与向量存储三个外围环节为这三大核心组件提供可插拔的输入/输出。

llama-index-readers-apifyApifyDataset 将 Apify Actor 数据集映射为 Document 列表后即可送入索引(llama-index-readers-apify/README.md:18-35)。类似地,ObsidianReader 会解析 vault 下的 Markdown 文件并附带 wikilinks/backlinks 元数据(llama-index-readers-obsidian/README.md:9-19)。这些 Document 正是 Retriever 所检索对象的源头。

数据读取器(Readers)— Retriever 的输入侧

Readers 是管道最前端的适配器,其职责是将异构来源转换为统一的 Document 列表。仓库按来源类型划分出多个 reader 集成包:

Reader 集成典型来源关键能力
llama-index-readers-apifyApify Dataset(README.md:18-35通过 dataset_mapping_function 自定义字段映射
llama-index-readers-obsidian本地 Obsidian vault(README.md:7-19提取 wikilinks/backlinks、tasks 元数据
llama-index-readers-wikipediaWikipedia 页面(README.md:14-23pages 列表批量拉取
llama-index-readers-service-nowServiceNow KB(README.md:5-50通过 article_sys_idnumbers 检索;必须用户提供自定义解析器
llama-index-readers-doclingPDF/DOCX/HTML(README.md:8-39支持 Markdown 与 Docling JSON 双导出
llama-index-readers-layoutirPDF(README.md:20-45通过 IR 中间表示保留多栏与表格结构
llama-index-readers-markitdownOffice/HTML/PDF/ZIP(README.md:6-13基于 MarkItDown 的通用文本抽取
llama-index-readers-web/.../spider_web任意网页(README.md:8-39mode="scrape"mode="crawl" 双模式

DocstringWalker 走的是另一条路径——使用 Python AST 解析本地代码库的 docstring(llama-index-readers-docstring-walker/README.md:5-13),它说明 Readers 不限于文本文档,也可直接产出可索引的结构化文本。

ServiceNow reader 特别强调:用户必须提供继承自 BaseReader 的自定义解析器(至少 HTML 解析器),库不会内置文件解析(llama-index-readers-service-now/README.md:18-50)。这是常见的"边界由集成方控制"设计哲学,避免对外部文件格式做强假设。

工具层(Tools)— Query Engine 的能力扩展

Tool Spec 把外部服务暴露为 Agent 可调用的 Tool,让 Query Engine 在 ReAct/LLM 工作流中获得检索之外的能力(搜索、网页交互、抽取等)。FunctionAgent 配合 tool_spec.to_tool_list() 是标准接入方式(llama-index-tools-wikipedia/README.md:11-19, llama-index-tools-seltz/README.md:15-22)。

主流工具的能力分组:

  • 搜索/抓取类SeltzToolSpec.searchREADME.md:31-40)、ExaToolSpecsearch/find_similarREADME.md:5-7)、MetaphorToolSpec 同名方法(README.md:5-7)、ParallelWebSystemsToolSpec.extractsearchREADME.md:20-55)。
  • WikipediaWikipediaToolSpec 提供 load_datasearch_dataREADME.md:17-19)。
  • 结构化网页抽取AgentQLRestAPIToolSpec.extract_web_data_with_rest_api 返回 JSON(README.md:24-28);浏览器版本需配合 Playwright。
  • 混合检索AirweaveToolSpec.advanced_search_collection 支持 temporal_relevanceretrieval_strategyREADME.md:5-23)。
  • 网页爬虫SpiderWebReadermode="scrape"/mode="crawl"README.md:18-39)。

ReAct 代理使用上述工具的系统提示词明确说明了"Thought/Action/Action Input"循环(system_header_template.md:5-19),意味着每个工具调用都会被包装为一次结构化推理步。

向量存储与知识图谱

Retriever 的物理后端由 Vector Store 集成承担。llama-index-vector-stores-wordlift 把数据写入 WordLift 的 Knowledge Graph,要求加载的 Document 携带 entity_id 元数据以维持链接数据语义(README.md:1-5)。这与 llama-index-readers-obsidian 已经产出 wikilinks/backlinks 元数据的做法(README.md:9-19)形成呼应:Readers 与 Vector Stores 通过统一的 metadata 协议进行对接。

端到端数据流

flowchart LR
    A[异构数据源<br/>Web/Wiki/KB/Code/Vault] --> B[Reader<br/>Apify/Obsidian/Docling/...]
    B --> C[Document 列表<br/>含统一 metadata]
    C --> D[Index + Embedding]
    D --> E[Retriever]
    F[Tool Spec<br/>Seltz/Exa/AgentQL/...] --> G[Query Engine<br/>含 ReAct/路由]
    E --> G
    G --> H[Response Synthesizer]
    H --> I[最终答案]

配置与常见失败模式

  • 必须显式提供解析器SnowKBReader 不内置 HTML/DOCX 解析,若未通过 custom_parsers 注入会在导入/运行时报错(llama-index-readers-service-now/README.md:18-50)。
  • 环境变量/凭据ApifyDataset 需 Apify API token(llama-index-readers-apify/README.md:5-15);AgentQLAGENTQL_API_KEY(llama-index-tools-agentql/README.md:13-19);SeltzToolSpecAirweaveToolSpec 同样以 api_key 构造(llama-index-tools-seltz/README.md:9-13, llama-index-tools-airweave/README.md:5-13)。
  • 异步与浏览器依赖AgentQL 浏览器工具仅支持异步并依赖 Playwright 实例(llama-index-tools-agentql/README.md:5-7)。
  • Pydantic 兼容性:社区长期存在"默认使用 Pydantic v1 模型"导致与宿主应用(Pydantic v2,如 FastAPI)冲突的问题(#13477),自 v0.14 起核心逐步迁移到 v2 路径,使用自定义 pydantic.BaseModel 子类时需注意序列化差异。
  • 可观测性/治理:社区提出的 llamaindex-tealtiger 等治理回调会在 *tool 调用前* 与 *query 执行前* 介入(#21882),这是把策略点插入上述 Query Engine 循环的典型示例。

See Also

  • Data Connectors(Readers 总览)
  • Vector Stores 集成目录
  • Tools / Tool Spec 集成目录
  • Agent Workflows(ReAct / FunctionAgent)

来源:https://github.com/run-llama/llama_index / 项目说明书

Agents, Workflows & Memory

LlamaIndex 的智能体层为 LLM 提供了"工具调用 + 推理"的能力,目前在仓库中通过 FunctionAgent 与 ReActAgent 两种入口暴露。FunctionAgent 直接依赖 LLM 原生的 function calling 能力,典型用法见 llama-index-tools-wikipedia/README.md、llama-index-to...

章节 相关页面

继续阅读本节完整说明和来源证据。

1. 智能体架构概览

LlamaIndex 的智能体层为 LLM 提供了"工具调用 + 推理"的能力,目前在仓库中通过 FunctionAgentReActAgent 两种入口暴露。FunctionAgent 直接依赖 LLM 原生的 function calling 能力,典型用法见 llama-index-tools-wikipedia/README.mdllama-index-tools-seltz/README.mdllama-index-tools-linkup-research/README.md,三处示例都展示了 FunctionAgent(tools=tool_spec.to_tool_list(), llm=OpenAI(...)) 的统一构造方式,并通过 await agent.run(...) 启动异步工作流。ReActAgent 则使用自然语言推理格式,模板固化在 llama-index-core/llama_index/core/agent/react/templates/system_header_template.md 中:模型必须按 Thought / Action / Action Input / Observation 的循环输出,并由 LlamaIndex 解析 Action Input 中的 JSON kwargs 后再分发到工具。

flowchart LR
    U[用户 Query] --> A[FunctionAgent / ReActAgent]
    A -->|to_tool_list| T[ToolSpec: Wikipedia / Seltz / Linkup / Parallel / AgentQL]
    T -->|Document| R[Reader: Apify / Wikipedia / Docling / Confluence]
    R -->|Vector Index| A
    A -->|治理回调| M[Memory / Governance Handler]
    M --> A
    A --> Y[最终答案]

2. 工具集成与 ToolSpec 模式

所有外部能力都以 ToolSpec 形式注入智能体,仓库中的 to_tool_list() 是统一入口。以 llama-index-tools-seltz/README.md 为例,SeltzToolSpec 仅暴露 search 一个函数,参数包括 querymax_documents(默认 10)、contextprofile,返回 Document 列表;LinkupToolSpec(见 llama-index-tools-linkup-research/README.md)则通过 depthstandard/deep)与 output_typesearchResults/sourcedAnswer/structured)控制结果形态。AgentQL(见 llama-index-tools-agentql/README.md)强调"仅支持异步函数与 Playwright 浏览器 API",其 extract_web_data_from_browserget_web_element_from_browser 必须配合 PlaywrightToolSpeccreate_async_playwright_browser 才能工作。ParallelWebSystemsToolSpec(见 llama-index-tools-parallel-web-systems/README.md)内置了"失败返回空列表"的容错逻辑,使智能体在单次 API 失败时仍能继续运行——这与社区在 v0.14.16 中引入的 token-bucket 限流器(Add token-bucket rate limiter for LLM and embedding API calls)形成互补。

3. 数据读取器与上下文准备

Reader 负责把异构数据源转成 Document 列表,是智能体可消费的"长期记忆"载体。llama-index-readers-apify/README.md 给出最简模式:ApifyDataset("<token>").load_data(dataset_id=..., dataset_mapping_function=lambda item: Document(text=..., metadata={"url": ...})),由用户自定义映射函数决定字段抽取逻辑。llama-index-readers-wikipedia/README.md 演示了"按页面标题批量读取"的写法:reader.load_data(pages=["Page Title 1", ...]),输出的 Document 可直接送入 WikipediaToolSpecload_data 工具,形成"读 → 检索 → 回答"的闭环。ServiceNowConfluenceMarkItDown 等 Reader 则进一步支持自定义 custom_parsers 与回调函数,让企业级附件处理可注入项目级逻辑。

4. 记忆、治理与社区演进

v0.14.13 在 agent_workflows 中加入了 early_stopping_method 参数(release notes),用以控制智能体在循环中提前终止的策略;v0.14.12 增强了 MockFunctionCallingLLMAsync Tool Spec 支持(release notes),使工作流测试与异步工具链更稳定。在社区层面,#21880 提出了 Agent Magnet —— 一种"改 base URL 即获得行为记忆"的外部记忆层;#21882 提出了 TealTiger 治理回调,在工具调用与查询执行前做确定性策略评估;v0.14.15 引入 AgentMesh 信任层(release notes),与 v0.14.22 中的 0.2.0 升级(release notes)一起,构成"工具 → 治理 → 记忆"三位一体的演进方向:智能体先通过 FunctionAgent 调用工具,再由治理回调过滤高风险动作,最后将经验写入外部记忆层供下次会话检索。

See Also

  • 社区外部工具包:Bocha Web Search ToolSpec(#21883)
  • 信任层集成:llama-index-agent-agentmesh(v0.14.15+)
  • 异步与限流:token-bucket rate limiter(v0.14.16)
  • 数据接入:llama-index-readers-* 系列(Apify、Wikipedia、Docling 等)

来源:https://github.com/run-llama/llama_index / 项目说明书

LLM, Embedding & Multi-Modal Integrations

LlamaIndex 是一个用于构建检索增强生成(RAG)与代理(Agent)应用的数据框架,其核心能力来自大量可插拔的集成包。这些集成按照职责被组织在 llama-index-integrations/ 下的多个子目录中:LLM、Embedding、Reader(数据加载器)、Tool、Vector Store、Graph RAG、Callback、Multi-Modal...

章节 相关页面

继续阅读本节完整说明和来源证据。

LLM、Embedding 与多模态集成

概述与设计目标

LlamaIndex 是一个用于构建检索增强生成(RAG)与代理(Agent)应用的数据框架,其核心能力来自大量可插拔的集成包。这些集成按照职责被组织在 llama-index-integrations/ 下的多个子目录中:LLM、Embedding、Reader(数据加载器)、Tool、Vector Store、Graph RAG、Callback、Multi-Modal LLM 等。所有集成遵循统一的对接契约:实现抽象基类后即可被 SettingsFunctionAgent 等核心组件发现并使用。

在 v0.14.x 系列中,框架持续以"外部集成 + monorepo 内部集成"双轨方式扩展能力。例如 v0.14.15 引入了"basic operations for multimodal types"(v0.14.15),v0.14.16 增加了"token-bucket rate limiter for LLM and embedding API calls"(v0.14.16),这表明 LLM 与 Embedding 通道正在被纳入统一的速率治理与多模态扩展体系中。

flowchart LR
    A[应用 / Agent] --> B[Tool Spec]
    A --> C[LLM 集成]
    A --> D[Embedding 集成]
    A --> E[Multi-Modal LLM]
    B --> F[Reader / 数据源]
    C --> G[Settings]
    D --> G
    E --> G
    F --> H[Vector Store]
    H --> I[Graph RAG / 检索]

LLM 与工具集成

LLM 集成包提供对话、函数调用、流式输出等能力。每个实现位于 llama-index-integrations/llms/<provider>/,并通过 from llama_index.llms.<provider> import ... 暴露给上层。Heroku Managed Inference 是一个典型示例:开发者提供 API Key 与推理 URL 后即可调用托管模型,集成包内置了对缺失 Key、URL 错误、模型未配置等常见问题的错误处理(llama-index-llms-heroku/README.md)。

工具(Tool)层是 LLM 与外部世界交互的桥梁。例如:

  • Wikipedia Tool:提供 load_data(按页面加载)与 search_data(搜索后加载匹配页)两个函数,可直接挂载到 FunctionAgentllama-index-tools-wikipedia/README.md)。
  • Seltz Web Knowledge Tool:通过 search(query, max_documents, context, profile) 拉取实时网页内容,返回 Document 列表(llama-index-tools-seltz/README.md)。
  • Linkup Research Tool:支持 standard / deep 两种搜索深度,以及 searchResultssourcedAnswerstructured 三种输出类型,便于按场景切换成本与质量(llama-index-tools-linkup-research/README.md)。
  • AgentQL Tool:基于 AgentQL 查询或自然语言描述从网页中提取结构化数据;其中两个浏览器函数需配合 Playwright 使用(llama-index-tools-agentql/README.md)。

社区中与 LLM/工具相关的需求集中在三点:① 端到端的本地化运行(issue #928),希望完全在本地 EC2 中使用 LlamaIndex;② 治理与安全,例如 issue #21882 提出的 TealTiger 回调处理器,希望在工具调用与查询执行前评估确定性安全策略;③ 第三方 ToolSpec 的外部分发(issue #21883),Bocha Web Search 集成包遵循 CONTRIBUTING.md 中"外部分发"路径而非并入 monorepo。

Embedding、Reader 与向量存储

Embedding 集成负责把文本/图像转为向量,而 Reader 集成负责把异构数据源转换为 Document 对象。两者协同后才进入向量存储与检索阶段。

Reader 生态覆盖了从本地文件、知识库到 SaaS 系统的多种来源:

集成包数据源关键能力
Apify ReaderApify Dataset通过 dataset_mapping_function 把每条记录映射为 Document
DocstringWalker本地代码目录基于 AST 提取 docstring,节省喂给 LLM 的 token
Obsidian ReaderObsidian Vault解析 Markdown、按标题分块、维护 wikilinks/backlinks 元数据
LayoutIR ReaderPDF 等基于中间表示保留多栏/表格结构,可选 GPU 加速
MarkItDown Reader多格式借助 MarkItDown 将 PPTX、DOCX、PDF、HTML 等转为 Markdown
Docling ReaderPDF/DOCX/HTML默认输出 Markdown,也可输出 Docling JSON 供专用 Node Parser 处理
Confluence ReaderConfluence Space事件驱动处理页面与附件,支持 OAuth2
ServiceNow KB ReaderServiceNow KB自定义 HTML 解析器为必填项,支持按 sys_id 或编号检索

资料来源:llama-index-readers-apify/README.mdllama-index-readers-docstring-walker/README.mdllama-index-readers-obsidian/README.mdllama-index-readers-layoutir/README.mdllama-index-readers-markitdown/README.mdllama-index-readers-docling/README.mdllama-index-readers-confluence/README.mdllama-index-readers-service-now/README.md

向量存储方面,WordLift 集成把 SEO 知识图谱作为向量库直接接入 LlamaIndex,添加节点时需要在 metadata 中附带 entity_id 以保持 Linked Data 完整性(llama-index-vector-stores-wordlift/README.md)。Graph RAG 方向,Cognee 集成提供 addprocess_datasearchrag_searchget_related_nodesvisualize_graph 等方法,支持 SQLite/PostgreSQL、Neo4j、Qdrant 等多种后端,并可在浏览器中打开 D3.js 生成的知识图谱可视化(llama-index-graph-rag-cognee/README.md)。

多模态与社区关注点

多模态集成由 v0.14.15 起获得框架层支持("Support basic operations for multimodal types"),允许在节点与查询通道中同时承载文本、图像等多模态载荷。v0.14.16 引入的 token-bucket 限流器则统一保护 LLM 与 Embedding 的 API 调用,避免突发流量触发上游限速(v0.14.16)。

从社区反馈看,使用者最关心的问题集中在以下几类:

  • 本地化与隐私:issue #928 询问如何结合 Alpaca 等本地模型在自有 EC2 上跑 LlamaIndex,说明 Embedding/LLM 的离线能力是落地关键。
  • 云厂商模型覆盖:issue #7507 提议原生支持 Amazon Bedrock 的 LLM 与 Embedding;issue #16681 关注 llama-index-llms-bedrock-converse 是否跟上 Claude 3.5 Sonnet V2。这两个诉求都体现了"广覆盖 LLM/Embedding 后端"的社区期待。
  • 数据模型兼容性:issue #13477 希望默认改用 pydantic v2,以解决 LlamaIndex 旧版模型与 FastAPI 等新应用之间的冲突。
  • 生成内容的边界:issue #1321 反映基于 SimpleVectorIndex 在缺乏证据时仍会回答"什么是 AI"等通用问题——这与 LLM 的 grounding 行为、Embedding 的检索质量都直接相关,提示了多模态/检索增强策略需要进一步收紧。

选型与使用建议

  • 构建 RAG 管线时:优先选择与 Reader → Embedding → Vector Store 一一对应的"全家桶"组合,例如 Docling + 本地 Embedding + WordLift 知识图谱,可同时获得版面保真与领域语义。
  • 构建 Agent 时:把 Wikipedia、Seltz、Linkup、AgentQL 等 Tool 注册到 FunctionAgent.to_tool_list(),并按"低成本 → 高成本"选择 depth / output_type 等参数。
  • 生产稳定性:在 v0.14.16+ 中启用 token-bucket 限流器以保护 LLM/Embedding API;通过回调/Instrumentation 层(如 issue #21882 提议的 TealTiger)插入确定性安全策略。
  • 希望贡献新集成:按 issue #21883 推荐的"外部集成"路径发布独立 Python 包,并在 llama_index 主仓库中只保留引用说明。

See Also

  • Agent 与 Tool Spec 集成
  • 向量存储与检索后端
  • 回调与可观测性(Instrumentation)
  • Graph RAG 与知识图谱

资料来源:llama-index-readers-apify/README.mdllama-index-readers-docstring-walker/README.mdllama-index-readers-obsidian/README.mdllama-index-readers-layoutir/README.mdllama-index-readers-markitdown/README.mdllama-index-readers-docling/README.mdllama-index-readers-confluence/README.mdllama-index-readers-service-now/README.md

Observability, Instrumentation & Callbacks

在 LlamaIndex 中,可观测性(Observability) 由两条互补的子系统共同实现:传统的 Callback(回调) 系统与现代化的 Instrumentation(埋点/仪表化) 系统。前者面向高层钩子(如 LLM 响应、工具调用、检索事件)的轻量订阅;后者提供细粒度的强类型事件分发,便于接入 OpenTelemetry、Langfuse、AgentOps、...

章节 相关页面

继续阅读本节完整说明和来源证据。

章节 核心抽象

继续阅读本节完整说明和来源证据。

章节 Token 计量

继续阅读本节完整说明和来源证据。

章节 Dispatcher 与事件流

继续阅读本节完整说明和来源证据。

概述与设计目标

在 LlamaIndex 中,可观测性(Observability) 由两条互补的子系统共同实现:传统的 Callback(回调) 系统与现代化的 Instrumentation(埋点/仪表化) 系统。前者面向高层钩子(如 LLM 响应、工具调用、检索事件)的轻量订阅;后者提供细粒度的强类型事件分发,便于接入 OpenTelemetry、Langfuse、AgentOps、W&B 等第三方平台。两条路径通过全局 Dispatcher 解耦,使业务代码无需感知底层上报实现。资料来源:llama-index-core/llama_index/core/callbacks/__init__.py:1-30llama-index-core/llama_index/core/instrumentation/dispatcher.py:1-40

在 v0.14 系列中,可观测能力被显著增强:v0.14.16 新增 LLM 与 Embedding 的 token-bucket 限流(v0.14.16 Release Notes),v0.14.12 引入异步 Tool Spec 事件支持(v0.14.12 Release Notes)。同时社区已出现第三方治理埋点(如 TealTiger #21882),证明该子系统是可扩展的安全与合规接入点。

回调系统(Callback System)

核心抽象

CallbackManager 是回调子系统的入口;它持有一组 BaseCallbackHandler 实例,并在框架关键节点触发 on_event_* 系列方法。资料来源:llama-index-core/llama_index/core/callbacks/base.py:1-80

最常用的内置实现包括:

Handler用途
LlamaDebugHandler打印每条事件的耗时与载荷,便于本地调试
TokenCountingHandler累计 prompt / completion / embedding token 用量
WandbCallbackHandler将轨迹同步到 W&B(见 llama-index-callbacks-wandb
AgentOpsCallbackHandler上报至 AgentOps 平台

Token 计量

TokenCountingHandler 通过订阅 llm_token_countembedding_token_count 事件聚合各模型调用开销,常用于成本看板与配额控制。资料来源:llama-index-core/llama_index/core/callbacks/token_counting.py:1-60

from llama_index.core.callbacks import CallbackManager, TokenCountingHandler
from llama_index.core import Settings

token_handler = TokenCountingHandler()
Settings.callback_manager = CallbackManager([token_handler])

# ... 执行查询 ...

print(token_handler.total_llm_token_count)

仪表化系统(Instrumentation)

Dispatcher 与事件流

InstrumentationDispatcher 维护一个进程级单例:组件在关键路径调用 dispatcher.event(EventType(...)),由 Dispatcher 路由到所有已注册的 EventHandler。该设计把"事件定义"与"处理逻辑"解耦,新增埋点无需修改业务代码。资料来源:llama-index-instrumentation/src/llama_index_instrumentation/dispatcher.py:1-90

LLM 事件示例

llama_index.core.instrumentation.events.llm 模块定义了 LLMStartEventLLMEndEventLLMStreamStartEvent 等强类型事件,承载 promptresponseusage 等字段,供 OpenTelemetry 等 Exporter 直接映射为 Span。资料来源:llama-index-core/llama_index/core/instrumentation/events/llm.py:1-80

flowchart LR
  A[LLM/Agent/Retriever] -->|dispatcher.event| B(InstrumentationDispatcher)
  B --> C[EventHandler: OTel]
  B --> D[EventHandler: Langfuse]
  B --> E[EventHandler: Custom]
  F[CallbackManager] -->|on_event_*| G[Token/LlamaDebug/W&B]

注册自定义 Handler

from llama_index.core.instrumentation import get_dispatcher
from llama_index.core.instrumentation.event_handlers import BaseEventHandler

class MyHandler(BaseEventHandler):
    def handle(self, event):
        if "LLMEnd" in event.class_name():
            print(event.response)

get_dispatcher().add_event_handler(MyHandler())

选型指引与常见误区

  • 调试与轻量监控 → 优先使用 CallbackManager + LlamaDebugHandler/TokenCountingHandler,无额外依赖。
  • 生产级 Tracing/可观测 → 使用 InstrumentationDispatcher + 官方 Exporter(如 llama-index-callbacks-agentops),事件粒度更细。
  • 重复计量:同时挂载多个 Token 计数 Handler 时,应检查是否被重复累加——同一事件在两条子系统都会被触发。
  • 异步路径:自 v0.14.12 起异步 Tool Spec 已纳入事件流,旧版回调若仅监听同步方法可能丢失事件(v0.14.12 Release Notes)。
  • 限流观测:v0.14.16 引入的 token-bucket 限流也会发出对应事件,可与 TokenCountingHandler 协同监控配额(v0.14.16 Release Notes)。

参见

  • LlamaIndex 官方文档(Agent Workflows / Observability)
  • llama-index-callbacks-wandbllama-index-callbacks-agentops 集成包
  • Issue #21882:TealTiger 治理埋点提案
  • Issue #21883:外部 ToolSpec 集成规范

来源:https://github.com/run-llama/llama_index / 项目说明书

Tools, Tool Specs, Extractors & Customization Patterns

LlamaIndex 是一个围绕大语言模型(LLM)构建数据框架与智能体(Agent)编排能力的开源项目。在其 v0.14.x 系列中(最新发布为 v0.14.22),项目通过统一的 ToolSpec 模式、Reader 读取器抽象 与 ReAct 智能体模板 提供可扩展的工具与定制化能力。任何第三方服务(如 Wikipedia、AgentQL、Seltz、Parallel...

章节 相关页面

继续阅读本节完整说明和来源证据。

章节 2.1 核心约定

继续阅读本节完整说明和来源证据。

章节 2.2 生态示例

继续阅读本节完整说明和来源证据。

章节 2.3 浏览器协同模式

继续阅读本节完整说明和来源证据。

1. 概览:LlamaIndex 中的工具与定制化体系

LlamaIndex 是一个围绕大语言模型(LLM)构建数据框架与智能体(Agent)编排能力的开源项目。在其 v0.14.x 系列中(最新发布为 v0.14.22),项目通过统一的 ToolSpec 模式Reader 读取器抽象ReAct 智能体模板 提供可扩展的工具与定制化能力。任何第三方服务(如 Wikipedia、AgentQL、Seltz、Parallel Web Systems、ServiceNow、Confluence)都可以通过 ToolSpec 接口封装成 Agent 可调用的工具,或者通过 Reader 抽象封装为数据加载器。

资料来源:llama-index-integrations/tools/llama-index-tools-wikipedia/README.md

项目本身支持将工具集成以两种形态发布:作为仓库内的 monorepo 包(如 llama-index-tools-wikipedia),或作为遵循 CONTRIBUTING.md 外部集成指南的独立 PyPI 包(如社区贡献的 llama-index-tools-bocha-search)。

2. ToolSpec 模式与工具生态

2.1 核心约定

所有官方与社区工具包都遵循同一个模式:实现一个 XxxToolSpec 类,并通过 to_tool_list() 方法将自身方法暴露为 Agent 可识别的工具列表。Wikipedia 工具是典型示例:

from llama_index.tools.wikipedia import WikipediaToolSpec
from llama_index.core.agent.workflow import FunctionAgent
from llama_index.llms.openai import OpenAI

tool_spec = WikipediaToolSpec()
agent = FunctionAgent(
    tools=tool_spec.to_tool_list(), llm=OpenAI(model="gpt-4.1")
)
print(await agent.run("Who is Ben Afflecks spouse?"))

其内部暴露 load_data(按页加载)与 search_data(搜索后加载匹配页)两个工具方法。资料来源:llama-index-integrations/tools/llama-index-tools-wikipedia/README.md:10-25

2.2 生态示例

下表展示了几种典型 ToolSpec 及其能力差异(资料来源:各工具 README):

工具包主要能力认证方式
llama-index-tools-wikipedia维基百科搜索与页面加载无需 API Key
llama-index-tools-agentql通过 AgentQL 查询或自然语言提取结构化 Web 数据AGENTQL_API_KEY 环境变量
llama-index-tools-seltz基于 Seltz 的实时 Web 搜索SeltzToolSpec(api_key=...)
llama-index-tools-parallel-web-systems面向目标的网页内容提取ParallelWebSystemsToolSpec(api_key=...)
llama-index-tools-python-file从 Python 文件自动提取函数签名仅传入文件路径

例如 Seltz 工具的参数化设计包含 querymax_documentscontextprofile 等字段,便于在 Agent 中调用时进行细粒度控制。资料来源:llama-index-integrations/tools/llama-index-tools-seltz/README.md:20-35

Parallel Web Systems 工具则内置容错处理:API 调用失败时返回空列表,失败 URL 会以 error_type 元数据形式出现在结果中,使 Agent 可以降级继续。资料来源:llama-index-integrations/tools/llama-index-tools-parallel-web-systems/README.md:55-75

2.3 浏览器协同模式

部分工具(如 AgentQL)依赖 Playwright 浏览器实例:

from llama_index.tools.playwright.base import PlaywrightToolSpec
async_browser = await PlaywrightToolSpec.create_async_playwright_browser()

此时 extract_web_data_from_browserget_web_element_from_browser 两个工具都必须在已激活的浏览器上下文中调用。资料来源:llama-index-integrations/tools/llama-index-tools-agentql/README.md:30-50

3. Function Tools 与 ReAct 智能体模板

3.1 从 Python 函数到 Tool

llama-index-tools-python-file 提供了一个独特的"代码自省"能力:它读取一个 .py 文件并自动提取所有函数名、参数与 docstring,将它们转换为 FunctionAgent 可调用的工具集。这为"自动从已有 Python 代码派生工具"提供了零样板路径。资料来源:llama-index-integrations/tools/llama-index-tools-python-file/README.md:5-15

类似地,llama-index-readers-docstring-walker 通过 Python 的 ast 模块遍历本地代码目录,仅提取 docstring 而不消耗 token 读取代码本身,将函数说明转换为 LlamaIndex Document,适合构建"代码伴侣"问答或自动文档生成。资料来源:llama-index-integrations/readers/llama-index-readers-docstring-walker/README.md:1-15

3.2 ReAct 提示词模板

Agent 之所以能够"工具选择 → 调用 → 观察 → 推理"循环,依赖于统一的 ReAct 提示词模板。模板要求模型以如下格式输出:

Thought: <推理>
Action: <tool name>
Action Input: <JSON kwargs>

并强调:必须始终以 Thought 开头、严禁用 markdown 代码块包裹整个响应、ActionAction Input 必须成对出现。资料来源:llama-index-core/llama_index/core/agent/react/templates/system_header_template.md:1-30

3.3 整体工具流转

下面用 Mermaid 图展示一个典型 Agent 调用 ToolSpec 的数据流:

flowchart LR
    U[User Query] --> A[FunctionAgent]
    A -->|ReAct 模板| L[LLM 推理]
    L -->|Action: tool| T[ToolSpec.to_tool_list]
    T -->|方法调用| API[外部服务/本地函数]
    API -->|Observation| L
    L -->|Final Answer| U

4. Reader、Extractor 与定制化模式

4.1 Reader 读取器抽象

与 ToolSpec 并列的另一条扩展轴是 Reader(数据读取器)。它继承 BaseReader 并实现 load_data 方法,将异构数据源转为 Document 列表。Wikipedia Reader 是最简形式:

from llama_index.readers.wikipedia import WikipediaReader
reader = WikipediaReader()
documents = reader.load_data(pages=["Page Title 1", "Page Title 2"])

资料来源:llama-index-integrations/readers/llama-index-readers-wikipedia/README.md:10-20

更复杂的 Reader 通过元数据丰富文档内容:例如 ObsidianReader 从笔记中抽取 wikilinksbacklinks 列表并存入 metadata,便于后续做知识图谱关联。资料来源:llama-index-integrations/readers/llama-index-readers-obsidian/README.md:5-25

4.2 多格式与文档结构感知

llama-index-readers-markitdown 借助 Microsoft MarkItDown 把 PPTX、DOCX、PDF、HTML、CSV、ZIP 等统一转为 Markdown,简化了多源数据接入。资料来源:llama-index-integrations/readers/llama-index-readers-markitdown/README.md:1-15

llama-index-readers-docling 则更进一步,提供 Markdown 与 Docling 原生 JSON 两种导出模式;JSON 模式必须搭配 Docling Node Parser 才能正确解析。资料来源:llama-index-integrations/readers/llama-index-readers-docling/README.md:15-35

llama-index-readers-docugami 走另一条路线:它把文档解析为带有层级语义标签的 XML 树,并为每块 chunk 标注结构属性(标题、段落、表格等)与跨文档一致的语义标签(如合同中的"Landlord"或"Renewal Date"),适合长文档与高精度 QA 场景。资料来源:llama-index-integrations/readers/llama-index-readers-docugami/README.md:1-25

4.3 自定义解析器注入

对于企业系统 Reader(如 ServiceNow、Confluence),项目不内置具体文件解析器,而是要求用户提供继承 BaseReader 的自定义解析器:

class DocxParser(BaseReader):
    def load_data(self, file_path, **kwargs):
        result = self.markitdown.convert(source=file_path)
        return [Document(text=result.markdown,
                         metadata={"file_path": str(file_path)})]

ConfluenceReader 与 SnowKBReader 通过 custom_parsers 字典接收用户为不同文件类型(DOCUMENT、PDF、HTML、CSV 等)注入的解析器。资料来源:llama-index-integrations/readers/llama-index-readers-service-now/README.md:30-55llama-index-integrations/readers/llama-index-readers-confluence/README.md:10-30

ConfluenceReader 还提供两个回调钩子:

  • process_attachment_callback(media_type, file_size) -> (bool, reason):控制是否处理某个附件。
  • process_document_callback(page_id) -> bool:控制是否处理某个页面。

资料来源:llama-index-integrations/readers/llama-index-readers-confluence/README.md:25-40

4.4 社区扩展与治理

社区近期围绕"工具与查询安全"与"自学习记忆"形成了多个新方向:通过 callback/instrumentation handler 在工具调用与查询执行前评估确定性安全策略(参考 issue #21882 的 TealTiger 集成),以及通过替换 base URL 即获得持久行为记忆的 Agent Magnet 集成提案(issue #21880)。这些都说明 LlamaIndex 的工具与定制化体系正在向"可观测 + 可治理 + 可记忆"的智能体基础设施演进。

5. 总结

LlamaIndex 通过统一的 ToolSpec 模式to_tool_list)、ReAct 模板(标准化的 Thought/Action/Observation 协议)、Reader + BaseReader 抽象(异构数据源接入)、custom_parsers 与 callback 钩子(企业级定制)四条主线,为构建可扩展的 LLM 应用与智能体提供了完整的扩展点。开发新工具时只需遵循:实现 XxxToolSpec、暴露方法、提供必要的认证配置与 README 即可被 Agent 直接消费。

See Also

资料来源:llama-index-integrations/tools/llama-index-tools-wikipedia/README.md

失败模式与踩坑日记

保留 Doramagic 在发现、验证和编译中沉淀的项目专属风险,不把社区讨论只当作装饰信息。

high 来源证据:[Question]: How to make multi_agents have separate Memoreis while share the same Context?

可能增加新用户试用和生产接入成本。

medium 失败模式:installation: feat: Governance instrumentation handler for tool/query security (TealTiger integration)

Developers may fail before the first successful local run: feat: Governance instrumentation handler for tool/query security (TealTiger integration)

medium 失败模式:installation: v0.14.12

Upgrade or migration may change expected behavior: v0.14.12

medium 失败模式:installation: v0.14.15

Upgrade or migration may change expected behavior: v0.14.15

Pitfall Log / 踩坑日志

项目:run-llama/llama_index

摘要:发现 23 个潜在踩坑项,其中 1 个为 high/blocking;最高优先级:配置坑 - 来源证据:[Question]: How to make multi_agents have separate Memoreis while share the same Context?。

1. 配置坑 · 来源证据:[Question]: How to make multi_agents have separate Memoreis while share the same Context?

  • 严重度:high
  • 证据强度:source_linked
  • 发现:GitHub 社区证据显示该项目存在一个配置相关的待验证问题:[Question]: How to make multi_agents have separate Memoreis while share the same Context?
  • 对用户的影响:可能增加新用户试用和生产接入成本。
  • 证据:community_evidence:github | https://github.com/run-llama/llama_index/issues/21888 | 来源讨论提到 python 相关条件,需在安装/试用前复核。

2. 安装坑 · 失败模式:installation: feat: Governance instrumentation handler for tool/query security (TealTiger integration)

  • 严重度:medium
  • 证据强度:source_linked
  • 发现:Developers should check this installation risk before relying on the project: feat: Governance instrumentation handler for tool/query security (TealTiger integration)
  • 对用户的影响:Developers may fail before the first successful local run: feat: Governance instrumentation handler for tool/query security (TealTiger integration)
  • 证据:failure_mode_cluster:github_issue | https://github.com/run-llama/llama_index/issues/21882 | feat: Governance instrumentation handler for tool/query security (TealTiger integration)

3. 安装坑 · 失败模式:installation: v0.14.12

  • 严重度:medium
  • 证据强度:source_linked
  • 发现:Developers should check this installation risk before relying on the project: v0.14.12
  • 对用户的影响:Upgrade or migration may change expected behavior: v0.14.12
  • 证据:failure_mode_cluster:github_release | https://github.com/run-llama/llama_index/releases/tag/v0.14.12 | v0.14.12

4. 安装坑 · 失败模式:installation: v0.14.15

  • 严重度:medium
  • 证据强度:source_linked
  • 发现:Developers should check this installation risk before relying on the project: v0.14.15
  • 对用户的影响:Upgrade or migration may change expected behavior: v0.14.15
  • 证据:failure_mode_cluster:github_release | https://github.com/run-llama/llama_index/releases/tag/v0.14.15 | v0.14.15

5. 安装坑 · 失败模式:installation: v0.14.19

  • 严重度:medium
  • 证据强度:source_linked
  • 发现:Developers should check this installation risk before relying on the project: v0.14.19
  • 对用户的影响:Upgrade or migration may change expected behavior: v0.14.19
  • 证据:failure_mode_cluster:github_release | https://github.com/run-llama/llama_index/releases/tag/v0.14.19 | v0.14.19

6. 安装坑 · 失败模式:installation: v0.14.21

  • 严重度:medium
  • 证据强度:source_linked
  • 发现:Developers should check this installation risk before relying on the project: v0.14.21
  • 对用户的影响:Upgrade or migration may change expected behavior: v0.14.21
  • 证据:failure_mode_cluster:github_release | https://github.com/run-llama/llama_index/releases/tag/v0.14.21 | v0.14.21

7. 安装坑 · 失败模式:installation: v0.14.22

  • 严重度:medium
  • 证据强度:source_linked
  • 发现:Developers should check this installation risk before relying on the project: v0.14.22
  • 对用户的影响:Upgrade or migration may change expected behavior: v0.14.22
  • 证据:failure_mode_cluster:github_release | https://github.com/run-llama/llama_index/releases/tag/v0.14.22 | v0.14.22

8. 安装坑 · 来源证据:[Feature Request]: Add Agent Magnet as a self-learning memory integration

  • 严重度:medium
  • 证据强度:source_linked
  • 发现:GitHub 社区证据显示该项目存在一个安装相关的待验证问题:[Feature Request]: Add Agent Magnet as a self-learning memory integration
  • 对用户的影响:可能增加新用户试用和生产接入成本。
  • 证据:community_evidence:github | https://github.com/run-llama/llama_index/issues/21880 | 来源类型 github_issue 暴露的待验证使用条件。

9. 配置坑 · 失败模式:configuration: External Bocha Web Search ToolSpec package for LlamaIndex

  • 严重度:medium
  • 证据强度:source_linked
  • 发现:Developers should check this configuration risk before relying on the project: External Bocha Web Search ToolSpec package for LlamaIndex
  • 对用户的影响:Developers may misconfigure credentials, environment, or host setup: External Bocha Web Search ToolSpec package for LlamaIndex
  • 证据:failure_mode_cluster:github_issue | https://github.com/run-llama/llama_index/issues/21883 | External Bocha Web Search ToolSpec package for LlamaIndex

10. 配置坑 · 失败模式:configuration: v0.14.13

  • 严重度:medium
  • 证据强度:source_linked
  • 发现:Developers should check this configuration risk before relying on the project: v0.14.13
  • 对用户的影响:Upgrade or migration may change expected behavior: v0.14.13
  • 证据:failure_mode_cluster:github_release | https://github.com/run-llama/llama_index/releases/tag/v0.14.13 | v0.14.13

11. 配置坑 · 失败模式:configuration: v0.14.14

  • 严重度:medium
  • 证据强度:source_linked
  • 发现:Developers should check this configuration risk before relying on the project: v0.14.14
  • 对用户的影响:Upgrade or migration may change expected behavior: v0.14.14
  • 证据:failure_mode_cluster:github_release | https://github.com/run-llama/llama_index/releases/tag/v0.14.14 | v0.14.14

12. 能力坑 · 能力判断依赖假设

  • 严重度:medium
  • 证据强度:source_linked
  • 发现:README/documentation is current enough for a first validation pass.
  • 对用户的影响:假设不成立时,用户拿不到承诺的能力。
  • 证据:capability.assumptions | github_repo:560704231 | https://github.com/run-llama/llama_index | README/documentation is current enough for a first validation pass.

13. 维护坑 · 维护活跃度未知

  • 严重度:medium
  • 证据强度:source_linked
  • 发现:未记录 last_activity_observed。
  • 对用户的影响:新项目、停更项目和活跃项目会被混在一起,推荐信任度下降。
  • 证据:evidence.maintainer_signals | github_repo:560704231 | https://github.com/run-llama/llama_index | last_activity_observed missing
  • 严重度:medium
  • 证据强度:source_linked
  • 发现:no_demo
  • 证据:downstream_validation.risk_items | github_repo:560704231 | https://github.com/run-llama/llama_index | no_demo; severity=medium

15. 安全/权限坑 · 存在评分风险

  • 严重度:medium
  • 证据强度:source_linked
  • 发现:no_demo
  • 对用户的影响:风险会影响是否适合普通用户安装。
  • 证据:risks.scoring_risks | github_repo:560704231 | https://github.com/run-llama/llama_index | no_demo; severity=medium

16. 安全/权限坑 · 来源证据:External Bocha Web Search ToolSpec package for LlamaIndex

  • 严重度:medium
  • 证据强度:source_linked
  • 发现:GitHub 社区证据显示该项目存在一个安全/权限相关的待验证问题:External Bocha Web Search ToolSpec package for LlamaIndex
  • 对用户的影响:可能影响授权、密钥配置或安全边界。
  • 证据:community_evidence:github | https://github.com/run-llama/llama_index/issues/21883 | 来源讨论提到 python 相关条件,需在安装/试用前复核。

17. 安全/权限坑 · 来源证据:feat: Governance instrumentation handler for tool/query security (TealTiger integration)

  • 严重度:medium
  • 证据强度:source_linked
  • 发现:GitHub 社区证据显示该项目存在一个安全/权限相关的待验证问题:feat: Governance instrumentation handler for tool/query security (TealTiger integration)
  • 对用户的影响:可能影响授权、密钥配置或安全边界。
  • 证据:community_evidence:github | https://github.com/run-llama/llama_index/issues/21882 | 来源讨论提到 python 相关条件,需在安装/试用前复核。

18. 运行坑 · 失败模式:performance: [Feature Request]: Add Agent Magnet as a self-learning memory integration

  • 严重度:low
  • 证据强度:source_linked
  • 发现:Developers should check this performance risk before relying on the project: [Feature Request]: Add Agent Magnet as a self-learning memory integration
  • 对用户的影响:Developers may hit a documented source-backed failure mode: [Feature Request]: Add Agent Magnet as a self-learning memory integration
  • 证据:failure_mode_cluster:github_issue | https://github.com/run-llama/llama_index/issues/21880 | [Feature Request]: Add Agent Magnet as a self-learning memory integration

19. 运行坑 · 失败模式:performance: v0.14.16

  • 严重度:low
  • 证据强度:source_linked
  • 发现:Developers should check this performance risk before relying on the project: v0.14.16
  • 对用户的影响:Upgrade or migration may change expected behavior: v0.14.16
  • 证据:failure_mode_cluster:github_release | https://github.com/run-llama/llama_index/releases/tag/v0.14.16 | v0.14.16

20. 运行坑 · 失败模式:performance: v0.14.18

  • 严重度:low
  • 证据强度:source_linked
  • 发现:Developers should check this performance risk before relying on the project: v0.14.18
  • 对用户的影响:Upgrade or migration may change expected behavior: v0.14.18
  • 证据:failure_mode_cluster:github_release | https://github.com/run-llama/llama_index/releases/tag/v0.14.18 | v0.14.18

21. 维护坑 · issue/PR 响应质量未知

  • 严重度:low
  • 证据强度:source_linked
  • 发现:issue_or_pr_quality=unknown。
  • 对用户的影响:用户无法判断遇到问题后是否有人维护。
  • 证据:evidence.maintainer_signals | github_repo:560704231 | https://github.com/run-llama/llama_index | issue_or_pr_quality=unknown

22. 维护坑 · 发布节奏不明确

  • 严重度:low
  • 证据强度:source_linked
  • 发现:release_recency=unknown。
  • 对用户的影响:安装命令和文档可能落后于代码,用户踩坑概率升高。
  • 证据:evidence.maintainer_signals | github_repo:560704231 | https://github.com/run-llama/llama_index | release_recency=unknown

23. 维护坑 · 失败模式:maintenance: v0.14.20

  • 严重度:low
  • 证据强度:source_linked
  • 发现:Developers should check this maintenance risk before relying on the project: v0.14.20
  • 对用户的影响:Upgrade or migration may change expected behavior: v0.14.20
  • 证据:failure_mode_cluster:github_release | https://github.com/run-llama/llama_index/releases/tag/v0.14.20 | v0.14.20

来源:Doramagic 发现、验证与编译记录