
系列100 天系统学习 AI Agent 开发当前阶段RAG、知识库与工具边界今日目标LlamaIndex 的优势是围绕数据、索引、查询引擎、工具和 Agent 组织知识能力。学框架最容易发生的事API 会了数据链路还是模糊前几天已经把 RAG 拆成资料、切分、metadata、改写和评测。到了 LlamaIndex如果只记住几行初始化代码反而可能把这些边界重新藏回框架里。今天我更想弄明白它在数据与 Agent 之间分别放了哪些抽象每一层解决什么问题。我暂时把 LlamaIndex 看成一套“以数据为中心的组织工具”而不是一个自动提升答案质量的开关。资料不可信、chunk 不完整、权限过滤缺失换框架都不会自然消失。从原始资料到 Agent 动作Documents / 外部资料Nodes / 可检索片段Index / 索引结构Retriever / 召回候选Query Engine / 基于资料回答Tool / 暴露为受限能力Agent / 决定是否调用Workflow / 管理多步过程名称会随版本和具体用法有差异但责任划分很稳定概念我自己的理解不应该期待它自动完成什么Agent根据目标和上下文选择下一步动作不替代权限、重试与业务校验Tool向 Agent 暴露一个描述清晰的能力不应把整个系统做成一个万能工具Workflow显式组织事件、步骤、状态和终止条件不保证每个步骤的内容正确Index/Retriever让资料可以被找到不判断召回片段是否足以支持结论Query Engine把检索与回答组合起来不等同完整任务规划放进学习助手会是什么形状假设资料是 Day 001–016 的 Markdown目标是回答“错误处理和重试有什么区别”。我希望链路中保留这些可检查对象{request:{question:参数缺失应该重试吗,user_id:example-user,allowed_sources:[public-learning-notes]},retrieval:{query:参数缺失 错误分类 重试,filters:{topic:error-handling},top_k:3},response:{answer:null,citations:[],status:not_run}}框架可以帮我连接这些部分但 request 里的权限范围、top_k 的选择、回答状态和引用规则仍要自己定义。尤其不应把 user_id 交给模型自由生成。Agent、Tool、Workflow 怎么选一个实用判断是看“下一步是否确定”已知输入 day查对应学习计划普通函数工具足够用户可能问计划、概念或进度需要选择不同工具交给 Agent 做有限路由导入资料 → 检索 → 判断证据 → 追问/回答 → 保存 trace用 Workflow 明确步骤更合适。如果一个流程每次都是固定顺序硬把每一步都交给 Agent 决策只会增加不确定性、延迟和费用。反过来如果问题类型很多、工具选择确实依赖语义塞满 if/else 也会难维护。框架选择应服务于不确定性的位置。今天只做“概念对照”不假装跑通我会用下面的表检查阅读是否真正落地追问应能回答原始文档在哪一步变成可检索片段文档读取与 Node/chunk 构造阶段谁决定调用知识查询Agent 或明确路由规则谁保证用户只能看允许资料应用与检索层权限过滤检索无结果怎么办Workflow 路由到追问或拒答怎么知道改动变好了固定数据集、召回记录和回答评测等真正接 SDK 时还要以当时的官方文档核对类名、构造参数和异步调用方式。本文刻意不写一段未经安装验证的“完整代码”避免让 API 外形掩盖设计。我对框架的阶段性态度框架最有价值的不是让我少写十行代码而是给数据、工具和流程一个共同语言它最大的风险则是让我误以为抽象存在就等于边界已经设计好。下一篇 FunctionAgent 会缩到一个函数工具看看最小能力该如何写清输入、输出和错误。面试官会追问为什么选 LlamaIndex而不是自己拼 RAG我不会回答“因为封装方便”。更完整的取舍是它在文档加载、节点解析、索引、检索器、Query Engine 和 Agent Workflow 之间提供一致抽象适合数据密集型 Agent代价是抽象层增加性能问题和隐式默认值更难发现。验证框架价值时我会保留一个不依赖框架的基线接口ingest、retrieve、answer、evaluate。然后比较同一数据集下的实现代码量、可观测性、扩展自定义 reranker 的难度与升级成本。框架可以替换评测集和领域接口不能跟着丢。面试加分点是能指出选择框架的依据不是 Star 数而是任务形态、团队熟悉度、可调试性和退出成本。今日检查清单能画出 Document 到 Agent 的完整数据路径Agent、Tool、Workflow 各自承担不同责任权限、版本、重试和评测没有交给框架“默认处理”固定流程优先确定性编排语义选择才用模型真正编码前重新核对当前官方 API