Pathway:Python API + Rust引擎的实时流处理与RAG框架深度解析

GitHub 60k星的Pathway是一个独特的流处理框架:Python写业务逻辑,Rust引擎跑执行。底层基于Differential Dataflow实现增量计算——只处理数据变化部分,天然适合实时场景。架构核心是声明式范式(define-then-run):开发者用Python定义完整计算图,系统在pw.run()时做全局优化再执行。内存处理+有状态操作(join/window/sort)确保低延迟高吞吐。对RAG场景的支持是一大亮点:内置实时向量索引,文档变更时自动增量更新embedding,无需额外向量数据库。支持300+数据源连接器(Kafka、PostgreSQL...)

Pathway:Python API + Rust引擎的实时流处理与RAG框架深度解析

为什么 Pathway 值得关注

在实时数据处理领域,Flink 和 Spark Streaming 长期占据主流地位。然而 Pathway 正在以一种非常不同的方式挑战这个格局——它用 Python 写逻辑,用 Rust 跑执行,用 Differential Dataflow 做增量计算。截至 2026 年初,Pathway 在 GitHub 上已积累超过 6 万颗星,成为近年来增长最快的数据处理框架之一。

本文将深入解析 Pathway 的核心架构、技术选型背后的取舍、与 Flink/Spark 的对比,以及其在 RAG 和 AI Pipeline 场景中的独特优势。

---

架构核心:Rust引擎 + Differential Dataflow

双层架构设计

Pathway 采用了一种典型的"前端/后端分离"架构:

  • **前端(Python API)**:开发者使用熟悉的 Python 语法编写数据变换、聚合、连接等操作。Pathway 的 Table API 风格类似 pandas,但具备流处理语义。
  • **后端(Rust Engine)**:所有 Python 代码最终被翻译成 Rust 执行计划,由 Rust 引擎负责调度和执行。

这一设计的核心优势在于:Python 不再是瓶颈。传统 Python 数据处理受制于 GIL(全局解释器锁),无法真正并行。Pathway 彻底规避了这个问题——Python 只用于"定义"计算图,真正的执行由无 GIL 约束的 Rust 完成,天然支持多线程、多进程和分布式计算。

Differential Dataflow:增量计算的数学基础

Differential Dataflow 是 Pathway 底层最关键的技术组件,由微软研究院的 Frank McSherry 在其关于 Naiad 系统的研究中提出并发展。其核心思想是:

> 不重新计算整个结果集,只传播和处理数据的"差异(difference)"。

具体来说,每条数据记录携带一个时间戳和一个权重(+1 表示插入,-1 表示删除)。当数据流发生变化时,系统只需处理"增量"部分,并将变化沿计算图传播,直到所有下游算子的输出也完成更新。

这对流处理意味着什么?

  • **天然处理乱序数据**:Differential Dataflow 的时间模型允许数据以任意顺序到达,系统会自动在正确的时间窗口内进行修正。
  • **状态一致性保证**:有状态操作(如 join、groupby、window)的中间状态始终保持一致,不需要复杂的检查点机制。
  • **内存效率高**:只存储状态增量,而非完整状态快照。

声明式范式(Define-then-Run)

Pathway 采用 `define-then-run` 的执行模型:

import pathway as pw

# Step 1: 定义数据源(此时没有数据流动)
orders = pw.io.kafka.read(
rdkafka_settings={"bootstrap.servers": "kafka:9092"},
topic="orders",
schema=OrderSchema
)

# Step 2: 定义变换(构建计算图,仍无执行)
enriched = orders.join(
products, pw.left.product_id == pw.right.id
).select(
order_id=pw.left.id,
product_name=pw.right.name,
amount=pw.left.quantity * pw.right.price
)

# Step 3: 定义输出
pw.io.postgres.write(enriched, pg_settings, "enriched_orders")

# Step 4: 触发执行(全局优化后启动)
pw.run()

`pw.run()` 之前的所有操作只是在构建计算图(DAG)。调用 `pw.run()` 时,Pathway 引擎会对整个图做全局优化(算子融合、计划重排等),然后启动 Rust 执行引擎。这与 Spark 的 lazy evaluation 理念相似,但执行层完全不同。

---

与 Flink/Spark 的核心对比

| 维度 | Pathway | Apache Flink | Spark Streaming |

|------|---------|-------------|-----------------|

| 编程语言 | Python(执行层Rust) | Java/Scala/Python | Python/Scala/R |

| 执行引擎 | Rust + Differential Dataflow | JVM | JVM |

| 增量计算 | 原生支持(核心特性) | 需要手动状态管理 | 微批次(非真增量) |

| 乱序处理 | 自动(数学保证) | Watermark机制 | 批次边界处理 |

| 部署复杂度 | 低(单进程/Docker/K8s) | 高(集群必须) | 高(集群必须) |

| RAG/LLM支持 | 原生内置 | 第三方集成 | 第三方集成 |

| 一致性模型 | At-least-once(免费)/ Exactly-once(企业版) | Exactly-once | Exactly-once |

| 批流统一 | 完全统一(同一套API) | 部分统一(DataStream + Table API) | 需要切换API |

| 学习曲线 | 低(Python-native) | 高 | 中 |

Pathway 的主要优势:适合 Python 生态重度用户、AI/ML Pipeline 场景、中小规模实时应用。

Flink 的主要优势:超大规模生产环境、复杂 CEP、极致的 Exactly-once 保证。

Spark Streaming 的主要优势:已有 Spark 生态、批流一体分析场景。

---

RAG 实时索引方案

传统 RAG 的痛点

传统 RAG(Retrieval-Augmented Generation)架构中,文档更新流程通常是:

1. 文档变更 → 触发批量重建 → 重新生成 embedding → 写入向量数据库

这个流程存在明显缺陷:延迟高(分钟到小时级)、资源消耗大(全量重建)、实时性差。

Pathway 的解法:增量向量索引

Pathway 内置了 `pathway.stdlib.indexing` 模块,提供实时增量向量索引能力:

import pathway as pw
from pathway.stdlib.indexing import VectorStoreServer
from pathway.xpacks.llm.embedders import OpenAIEmbedder

# 读取文档(支持 Google Drive、SharePoint、本地文件等)
documents = pw.io.gdrive.read(
object_id="your-folder-id",
mode="streaming"
)

# 自动解析、分块
parsed = documents.select(
text=parse_document(pw.this.data),
metadata=pw.this.metadata
)

# 构建实时向量索引
vector_server = VectorStoreServer(
parsed,
embedder=OpenAIEmbedder(model="text-embedding-3-small"),
)

# 启动服务(同时监听文档变更 + 响应查询)
vector_server.run_server(host="0.0.0.0", port=8666)

当 Google Drive 里的文件发生变化时:

1. Pathway 的 streaming connector 检测到变更

2. 只有变更的文档被重新解析和 embedding

3. 向量索引增量更新(Differential Dataflow 保证一致性)

4. 后续查询立即命中最新内容

整个过程**无需重建整个索引**,延迟降至秒级。

支持的 RAG 模式

  • **Standard RAG**:文档检索 → LLM 生成
  • **Adaptive RAG**:根据查询复杂度自动选择检索策略
  • **Multimodal RAG**:支持 GPT-4V 等多模态模型
  • **Private RAG**:Ollama + 本地模型(无数据出境)

---

350+ 连接器生态

Pathway 的连接器生态覆盖了几乎所有主流数据源:

消息队列:Kafka、Redpanda、AWS Kinesis、Google Pub/Sub

数据库:PostgreSQL、MySQL、MongoDB(通过 Airbyte CDC)

云存储:AWS S3、Google Cloud Storage、Azure Blob Storage

协作工具:Google Drive(实时监听变更)、SharePoint(需许可证)

文件系统:本地文件、SFTP、FTP(支持 streaming 模式)

API/网络:HTTP、WebSocket

通过 Airbyte:300+ 额外数据源(一行代码集成)

Airbyte 集成是一个亮点——只需配置 connector 名称和参数,Pathway 会自动处理 CDC(变更数据捕获)和数据同步:

# 通过 Airbyte 连接任意 300+ 数据源
data = pw.io.airbyte.read(
source_config={
"sourceType": "salesforce",
"client_id": "...",
"client_secret": "...",
},
streams=["Account", "Opportunity"]
)

---

生产部署方式

单进程部署

对于中小规模应用,Pathway 可以作为单个 Python 进程运行:

pip install pathway
python my_pipeline.py

Docker 部署

Pathway 提供官方 Docker 镜像,所有依赖开箱即用:

FROM pathwaycom/pathway:latest
COPY . /app
WORKDIR /app
CMD ["python", "pipeline.py"]

Kubernetes 部署

Pathway 内置 K8s 编排支持,并兼容 OpenTelemetry 监控:

  • 支持水平扩展(多进程/多节点)
  • 内置 Prometheus metrics 暴露
  • 持久化状态支持(故障重启后快速恢复)

持久化与容错

Pathway 提供 persistence API,将计算状态快照到磁盘:

pw.run(
persistence_config=pw.persistence.Config(
backend=pw.persistence.Backend.filesystem("/data/state"),
persistence_mode=pw.PersistenceMode.PERSISTING,
)
)

重启后,Pathway 从最近一次快照恢复,避免全量重播数据流。

---

许可证与商业版

Pathway 采用 **BSL(Business Source License)**许可证:

  • **免费版**:完整核心功能,At-least-once 一致性,社区支持
  • **企业版**:Exactly-once 一致性、SharePoint 高级连接器、企业级监控、SLA 支持

获取免费许可证 Key 只需在官网注册,解锁部分高级功能(如监控仪表盘)。

---

总结

Pathway 代表了流处理框架的一个新方向:**让 AI/ML 工程师能用熟悉的 Python 范式构建生产级实时管道,同时不牺牲性能**。

核心价值点:

1. **Python-native,无 JVM 负担**:告别 Java/Scala 的学习成本

2. **Differential Dataflow 增量计算**:优雅地解决乱序和状态一致性问题

3. **批流完全统一**:开发时用批数据测试,生产上直接切换到流

4. **RAG 原生集成**:实时向量索引让 LLM 应用始终基于最新数据

5. **350+ 连接器**:接入任何数据源,几行代码搞定

对于 Python 生态的数据工程师和 AI 工程师来说,Pathway 是一个值得认真评估的选择——尤其是当你需要构建实时 AI Pipeline 而不想引入 JVM 体系的时候。