[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"learning-part-12-llamaindex":3,"learning-all":13},{"id":4,"slug":5,"title":6,"description":7,"level":8,"topic":9,"url":10,"content":11,"sortOrder":12},10,"part-12-llamaindex","Part 12 · LlamaIndex","站 5~7 你用了 LangChain 做 RAG。LlamaIndex 是另一条专攻\"数据 + LLM\"的路线。","ADVANCED","LlamaIndex",null,"# Part 10 · LlamaIndex\n\n\n---\n\n## Section 1 · LlamaIndex 是什么 + 装环境\n\n**Subsection 1 · 概念**\n```\nLlamaIndex = 专为\"让 LLM 读懂你的数据\"设计的框架\n  - 加载各种数据（PDF\u002F网页\u002FDB\u002FAPI）\n  - 建索引（Index）\n  - 用查询引擎（Query Engine）问答\n一句话：LangChain 重\"链\u002FAgent 编排\"，LlamaIndex 重\"数据接入\u002F索引检索\"\n```\n\n**Subsection 2 · 装库**\ncmd：`pip install llama-index`\n\n**Subsection 3 · 跑最小例**\n新建 `li_first.py`：\n```python\nimport os\nfrom dotenv import load_dotenv\n\nload_dotenv()\nos.environ[\"OPENAI_API_KEY\"] = os.getenv(\"DEEPSEEK_API_KEY\")\nos.environ[\"OPENAI_API_BASE\"] = \"https:\u002F\u002Fapi.deepseek.com\"\nos.environ[\"OPENAI_MODEL\"] = \"deepseek-chat\"\n\nfrom llama_index.core import VectorStoreIndex, SimpleDirectoryReader\n\n# 读文件夹里的文档\ndocs = SimpleDirectoryReader(\"rag_data\").load_data()\nindex = VectorStoreIndex.from_documents(docs)\nquery_engine = index.as_query_engine()\nprint(query_engine.query(\"迟到会怎么样？\"))\n```\n- ✅ 预期看到：基于 company.md 的回答。\n- 💡 注意：LlamaIndex 通过 OPENAI_ 环境变量兼容 DeepSeek（OpenAI 兼容协议）。\n\n**过关**：最小例跑通 = Section 1 完成。\n\n---\n\n## Section 2 · 理解 Index（索引）\n\n**Subsection 1 · 跑并打印索引结构**\n新建 `li_index.py`：\n```python\nimport os\nfrom dotenv import load_dotenv\n\nload_dotenv()\nos.environ[\"OPENAI_API_KEY\"] = os.getenv(\"DEEPSEEK_API_KEY\")\nos.environ[\"OPENAI_API_BASE\"] = \"https:\u002F\u002Fapi.deepseek.com\"\nos.environ[\"OPENAI_MODEL\"] = \"deepseek-chat\"\n\nfrom llama_index.core import VectorStoreIndex, SimpleDirectoryReader\nfrom llama_index.core.node_parser import SimpleNodeParser\n\ndocs = SimpleDirectoryReader(\"rag_data\").load_data()\nprint(\"原始文档数:\", len(docs))\n\n# LlamaIndex 把文档切成\"节点 Node\"（它叫法不同，本质=chunk）\nnodes = SimpleNodeParser.from_defaults(chunk_size=200).get_nodes_from_documents(docs)\nprint(\"切出的节点数:\", len(nodes))\nfor n in nodes[:3]:\n    print(\"-\", n.get_text()[:30])\n```\n- ✅ 预期看到：文档被切成节点列表。\n- 💡 LlamaIndex 术语：**Document → Node（带索引）→ VectorStoreIndex**。\n\n**过关**：能说出 Document\u002FNode\u002FIndex 关系 = Section 2 完成。\n\n---\n\n## Section 3 · 查询引擎与检索器\n\n**Subsection 1 · 拆开看查询流程**\n新建 `li_query.py`：\n```python\nimport os\nfrom dotenv import load_dotenv\n\nload_dotenv()\nos.environ[\"OPENAI_API_KEY\"] = os.getenv(\"DEEPSEEK_API_KEY\")\nos.environ[\"OPENAI_API_BASE\"] = \"https:\u002F\u002Fapi.deepseek.com\"\nos.environ[\"OPENAI_MODEL\"] = \"deepseek-chat\"\n\nfrom llama_index.core import VectorStoreIndex, SimpleDirectoryReader\n\nindex = VectorStoreIndex.from_documents(SimpleDirectoryReader(\"rag_data\").load_data())\n\n# 1) 只用检索器，看召回什么\nretriever = index.as_retriever(similarity_top_k=2)\nnodes = retriever.retrieve(\"迟到怎么处理\")\nprint(\"召回节点:\")\nfor n in nodes:\n    print(\"-\", n.node.get_text()[:40], f\"分:{n.score:.3f}\")\n\n# 2) 完整问答\nprint(\"\\n回答:\", index.as_query_engine().query(\"迟到怎么处理\").response)\n```\n- ✅ 预期看到：先召回相关节点，再给出回答。\n- 💡 和Part 5 一样：**检索 → 生成**，只是 LlamaIndex 把索引\u002F检索封装得更\"数据友好\"。\n\n**过关**：能拆出\"检索器 + 问答\"两步 = Section 3 完成。\n\n---\n\n## Section 4 · 换数据源（PDF \u002F 网页）\n\n**Subsection 1 · 加载 PDF**\ncmd：`pip install pypdf`\n新建 `li_pdf.py`：把任意一个 PDF 放到 `rag_data` 里，然后：\n```python\nimport os\nfrom dotenv import load_dotenv\n\nload_dotenv()\nos.environ[\"OPENAI_API_KEY\"] = os.getenv(\"DEEPSEEK_API_KEY\")\nos.environ[\"OPENAI_API_BASE\"] = \"https:\u002F\u002Fapi.deepseek.com\"\nos.environ[\"OPENAI_MODEL\"] = \"deepseek-chat\"\n\nfrom llama_index.core import VectorStoreIndex, SimpleDirectoryReader\n\ndocs = SimpleDirectoryReader(\"rag_data\", required_exts=[\".pdf\"]).load_data()\nindex = VectorStoreIndex.from_documents(docs)\nprint(index.as_query_engine().query(\"这份PDF讲了什么？\").response)\n```\n- ✅ 预期看到：能回答 PDF 内容。\n- 💡 LlamaIndex 支持几十种数据源（PDF\u002F网页\u002FNotion\u002F数据库），换数据源几乎不改代码。\n\n**过关**：PDF 问答跑通 = Section 4 完成。\n\n---\n\n## Section 5 · 对比 + 站 10 验收\n\n**Subsection 1 · 写对比笔记**\n```\n                LangChain              LlamaIndex\n擅长            链\u002FAgent\u002F编排           数据加载\u002F索引\u002F检索\n学习曲线        陡（概念多）             平（面向数据）\n生态            最大                    专注 RAG\n选谁            要 Agent\u002F工具 → 它       纯数据问答\u002F知识库 → 它\n结论            两者可混用，不必二选一\n```\n\n**Subsection 2 · Part 12 验收勾选**\n- [ ] li_first.py 跑通\n- [ ] 能说出 Document \u002F Node \u002F Index 关系\n- [ ] 能拆出\"检索器 + 问答\"\n- [ ] PDF 数据源问答跑通\n- [ ] 对比笔记写完\n\n**全勾选 = Part 12 通过** → 进入下一站 Part 13 · Transformer 深入，10 天，手写注意力）。\n\n\n\n",12,[14,21,27,33,40,46,52,58,63,69,74,80,81,87,93,99,105,111,117,123,129],{"id":15,"slug":16,"title":17,"description":18,"level":19,"topic":20,"url":10,"content":10,"sortOrder":15},1,"part-1-llm-basics","Part 1 · 大模型基础认知","小白零基础友好。这一站不写代码，只建立\"大模型到底是什么\"的骨架。","BEGINNER","大模型认知",{"id":22,"slug":23,"title":24,"description":25,"level":19,"topic":26,"url":10,"content":10,"sortOrder":22},2,"part-2-llm-principles","Part 2 · 大模型原理 · 入门实操","这一站不卷数学，只把\"理解模型所需的知识\"讲透。；站 2A 解决\"理解模型\"，站 2B 解决\"面试能答\"。；这一层是\"有余力再做\"，不做也不影响你进入站 3。","大模型原理",{"id":28,"slug":29,"title":30,"description":31,"level":19,"topic":26,"url":10,"content":10,"sortOrder":32},100,"part-3-llm-principles-deep","Part 3 · 大模型原理 · 面试深入","数学基础、机器学习、神经网络、词向量、思维链等面试必考原理",3,{"id":34,"slug":35,"title":36,"description":37,"level":38,"topic":26,"url":10,"content":10,"sortOrder":39},101,"part-4-llm-principles-advanced","Part 4 · 大模型原理 · 进阶可选","从零写迷你模型、RLHF、PPO、分布式训练实操等进阶内容","INTERMEDIATE",4,{"id":32,"slug":41,"title":42,"description":43,"level":19,"topic":44,"url":10,"content":10,"sortOrder":45},"part-5-prompt-engineering","Part 5 · Prompt 提示词工程","从这里开始，你每天都要真的调大模型 API。","提示工程",5,{"id":39,"slug":47,"title":48,"description":49,"level":19,"topic":50,"url":10,"content":10,"sortOrder":51},"part-6-llm-api","Part 6 · 大模型 API 调用","站 3 你已经调通了 API。这一站把\"调用\"做成专业水准：","API 工程",6,{"id":45,"slug":53,"title":54,"description":55,"level":38,"topic":56,"url":10,"content":10,"sortOrder":57},"part-7-rag","Part 7 · RAG 检索增强生成","这一站是\"能落地\"的关键：让模型回答**你的私有知识**。","RAG",7,{"id":51,"slug":59,"title":60,"description":61,"level":38,"topic":56,"url":10,"content":10,"sortOrder":62},"part-8-rag-optimization","Part 8 · RAG 优化与评估","站 5 你做出了\"能跑\"的 RAG。这一站把它做到\"能打\"：",8,{"id":57,"slug":64,"title":65,"description":66,"level":38,"topic":67,"url":10,"content":10,"sortOrder":68},"part-9-langchain","Part 9 · LangChain 框架","目标：用 LangChain 把\"模型、提示词、检索、记忆、工具\"串成可复用的链和 Agent。","LangChain",9,{"id":62,"slug":70,"title":71,"description":72,"level":38,"topic":73,"url":10,"content":10,"sortOrder":4},"part-10-agent","Part 10 · Agent 基础","让模型从\"会聊天\"变成\"能干活\"：自己拆任务、调工具、看结果、再行动。","Agent",{"id":68,"slug":75,"title":76,"description":77,"level":8,"topic":78,"url":10,"content":10,"sortOrder":79},"part-11-multi-agent","Part 11 · 多 Agent 与 Agent IDE","从\"单个 Agent\"升级到\"多 Agent 协作\"，并掌握 AutoGen \u002F LangGraph \u002F GPTs \u002F Coze \u002F Dify 五个工具。","多 Agent",11,{"id":4,"slug":5,"title":6,"description":7,"level":8,"topic":9,"url":10,"content":10,"sortOrder":12},{"id":79,"slug":82,"title":83,"description":84,"level":8,"topic":85,"url":10,"content":10,"sortOrder":86},"part-13-transformer","Part 13 · Transformer 深入","站 2A 建立了直觉，这一站把手写代码跑通——从\"懂概念\"到\"写得出\"。","Transformer",13,{"id":12,"slug":88,"title":89,"description":90,"level":8,"topic":91,"url":10,"content":10,"sortOrder":92},"part-14-open-models","Part 14 · 开源模型与私有化部署","目标：把主流开源模型在本地\u002F服务器跑通，理解服务化工程（显存、量化、并发）。","模型部署",14,{"id":86,"slug":94,"title":95,"description":96,"level":8,"topic":97,"url":10,"content":10,"sortOrder":98},"part-15-finetuning","Part 15 · 模型微调 Fine-Tuning","目标：理解\"什么时候必须微调、怎么选基座、怎么备数据\"，并完整跑通一次业务微调。","微调",15,{"id":92,"slug":100,"title":101,"description":102,"level":8,"topic":103,"url":10,"content":10,"sortOrder":104},"part-16-peft-lora","Part 16 · PEFT 参数高效微调","重点吃透 **LoRA**：用极少量可训练参数微调大模型（消费级显卡就能跑）。","PEFT\u002FLoRA",16,{"id":98,"slug":106,"title":107,"description":108,"level":8,"topic":109,"url":10,"content":10,"sortOrder":110},"part-17-quantization","Part 17 · 模型量化","目标：理解\"为什么量化、主流算法各自思路\"，能动手量化并评估效果。","量化",17,{"id":104,"slug":112,"title":113,"description":114,"level":8,"topic":115,"url":10,"content":10,"sortOrder":116},"part-18-data-evaluation","Part 18 · 训练数据与模型评估","数据决定模型上限，评估决定你\"能不能交付\"。","数据与评估",18,{"id":110,"slug":118,"title":119,"description":120,"level":8,"topic":121,"url":10,"content":10,"sortOrder":122},"part-19-multimodal","Part 19 · 多模态应用","让 AI 同时\"看得懂图、听得了音、说得出话\"。","多模态",19,{"id":116,"slug":124,"title":125,"description":126,"level":8,"topic":127,"url":10,"content":10,"sortOrder":128},"part-20-projects-career","Part 20 · 项目实战 + 求职备战","把 0→1 到 1→100 学到的全部收敛成**能展示、能讲、能面试**的项目。","项目与求职",20,{"id":130,"slug":131,"title":132,"description":133,"level":8,"topic":134,"url":10,"content":10,"sortOrder":135},102,"extra-2026-ai-tech","额外篇 · 2026 年 AI 应用开发必学的 5 项成熟技术","从近半年爆发的技术里，挑出已经过了尝鲜期、能真正用在项目里的 5 项：推理模型、MCP、多模态、GraphRAG、AI 编程工具链，每项都给到能跑通的代码。","AI 工程实践",21]