返回首页
🤖 AI / LLM
LlamaIndex Workflow 实战:事件驱动的 RAG 流水线
LlamaIndex Workflow 提供事件驱动的 pipeline 编排。本文演示如何用 Workflow 构建复杂 RAG。
LlamaIndex · Workflow · RAG · LLM · Agent
📰
今日技术简讯
📰 技术简讯 · 2026-05-25
今日聚合 6 条热门技术内容。
🤖 AI / LLM
1. LlamaIndex Workflow 实战
- 链接:https://www.llamaindex.ai/blog/workflow
- 来源:LlamaIndex
- 摘要:LlamaIndex Workflow 提供事件驱动的 RAG pipeline 编排。
🎨 前端 / Web
2. React Router 7 正式发布
- 链接:https://reactrouter.com
- 来源:Remix 团队
- 摘要:React Router 7 整合 Remix 特性,单页应用 + SSR 双模式。
⚙️ 后端 / 架构
3. TimescaleDB 2.18 实战
- 链接:https://www.timescale.com/blog/2-18
- 来源:Timescale
- 摘要:时序数据库新版本,压缩率提升 3 倍,查询性能提升 5 倍。
🚀 独立开发 / OPC
4. Paddle 推出订阅分析仪表盘
- 链接:https://www.paddle.com/dashboard
- 来源:Paddle
- 摘要:可视化订阅分析,MRR / Churn / LTV 一站式。
5. Mercury 推出 Banking 2.0
- 链接:https://mercury.com/banking-2
- 来源:Mercury
- 摘要:Mercury 集成更多支付渠道,全球收款更简单。
6. Lemon Squeezy 推出 Tax Automation
- 链接:https://www.lemonsqueezy.com/tax
- 来源:Lemon Squeezy
- 摘要:自动计算全球销售税,Merchant of Record 模式更完善。
数据来源:掘金 / InfoQ 中文 / HN / GitHub / Dev.to 采集时间:2026-05-25 09:00 (UTC+8)
📝
今日深度文
LlamaIndex Workflow 实战:事件驱动的 RAG 流水线
一句话结论:LlamaIndex Workflow 把"链式 RAG"升级为"事件驱动 pipeline"。复杂场景可读性和可维护性大幅提升。
核心概念
from llama_index.core.workflow import Workflow, StartEvent, StopEvent, step
# Workflow = 一组 step + event
# 每个 step 接收 event,处理后发出新 event
实战:多步 RAG Pipeline
from llama_index.core.workflow import (
Workflow, StartEvent, StopEvent, step, Event,
)
from llama_index.core import VectorStoreIndex
from llama_index.core.retrievers import VectorIndexRetriever
class QueryEvent(Event):
query: str
class RetrievalEvent(Event):
query: str
nodes: list
class RerankEvent(Event):
query: str
nodes: list
class GenerationEvent(Event):
query: str
nodes: list
class RAGWorkflow(Workflow):
@step
async def start(self, ev: StartEvent) -> QueryEvent:
return QueryEvent(query=ev.query)
@step
async def retrieve(self, ev: QueryEvent) -> RetrievalEvent:
retriever = VectorIndexRetriever(index=index, top_k=10)
nodes = retriever.retrieve(ev.query)
return RetrievalEvent(query=ev.query, nodes=nodes)
@step
async def rerank(self, ev: RetrievalEvent) -> RerankEvent:
from sentence_transformers import CrossEncoder
reranker = CrossEncoder("BAAI/bge-reranker-base")
pairs = [[ev.query, n.text] for n in ev.nodes]
scores = reranker.predict(pairs)
ranked = sorted(zip(ev.nodes, scores), key=lambda x: -x[1])[:3]
return RerankEvent(query=ev.query, nodes=[n for n, _ in ranked])
@step
async def generate(self, ev: RerankEvent) -> StopEvent:
context = "\n\n".join([n.text for n in ev.nodes])
response = llm.invoke(
f"基于以下上下文回答:\n{context}\n\n问题:{ev.query}"
)
return StopEvent(result=response)
# 启动
workflow = RAGWorkflow()
result = await workflow.run(query="什么是 RAG?")
print(result.result)
5 个核心优势
1. 可视化
# LlamaIndex 提供 Workflow 可视化
from llama_index.core.workflow import draw_all_possible_flows
draw_all_possible_flows(workflow, filename="workflow.html")
2. 事件驱动
# 多个 step 可以并行
@step
async def parallel_step(self, ev: Event) -> List[Event]:
# 触发多个并行任务
return [EventA(...), EventB(...)]
3. 错误处理
from llama_index.core.workflow import WorkflowTimeoutError
try:
result = await workflow.run(query=query, timeout=30)
except WorkflowTimeoutError:
# 处理超时
pass
4. 状态持久化
# Workflow 内置 context
@step
async def step_with_state(self, ev: StartEvent) -> StopEvent:
self.context.state["key"] = "value"
return StopEvent(result=...)
5. 流式输出
async for event in workflow.stream(query="..."):
print(event)
何时用 Workflow
✅ 适合
- 复杂 RAG(多步检索 / 多 Agent)
- 需要状态管理的 pipeline
- 多模态处理
❌ 不适合
- 简单 RAG(直接用 query_engine)
- 一次性脚本
参考
本文基于 LlamaIndex 0.12。
📚 同主题文章
🤖AI / LLM·
LLM 应用工程化实战:从 Prompt 到 Agent 部署的完整指南
LLM 应用从原型到生产有 10 倍差距。本文从 0 到生产级 LLMOps,含 Prompt 管理 / 评估 / 监控 / 成本优化 / Guardrails 完整链路。
LLMLLMOpsPrompt Engineering
⚙️后端 / 架构·
RAG 2.0 实战:向量数据库选型与生产部署
RAG 是 AI Agent 商用的"最后一公里"。本文对比 6 大向量数据库,含 PostgreSQL 18 原生向量索引实战、4 个真实场景、生产部署清单。
RAG向量数据库pgvector
🤖AI / LLM·
AutoGen 0.4 实战:微软出品的多 Agent 对话框架
AutoGen 是微软推出的多 Agent 对话框架。本文从 0 演示协作式 Agent,含 5 个真实场景 + 与 LangGraph / CrewAI 对比。
AutoGen多 AgentLLM