当前位置: 首页 > news >正文

【RAG】【retrievers09】Pathway检索器:实时数据索引与检索

案例目标

本案例展示如何使用Pathway框架构建实时数据索引与检索系统,实现动态数据源的持续监控和实时更新。Pathway是一个开源的数据处理框架,允许开发人员轻松构建处理实时数据源和变化数据的数据转换管道和机器学习应用程序。

通过PathwayRetriever,我们可以连接到实时更新的数据索引,获取最新的检索结果,而无需手动重新构建索引。这对于需要处理频繁变化数据的应用场景(如文档协作、实时数据流等)特别有价值。

技术栈与核心依赖

llama-index-retrievers-pathway

pathway

llama-index-embeddings-openai

llama-index-core

llama-index-llms-openai

环境配置

# 安装必要的依赖
pip install llama-index-retrievers-pathway pathway
pip install llama-index-embeddings-openai

# 设置API密钥
import os
os.environ["OPENAI_API_KEY"] = "your_openai_api_key"

案例实现

1. 使用公共演示管道

步骤 1

连接到Pathway提供的公共演示管道:

from llama_index.retrievers.pathway import PathwayRetriever

# 连接到公共演示管道
retriever = PathwayRetriever(
url="https://demo-document-indexing.pathway.stream"
)

# 执行检索
results = retriever.retrieve("what is pathway")
for result in results:
print(f"Score: {result.score}, Text: {result.text[:100]}...")

2. 构建自定义数据处理管道

步骤 2

定义数据源:

import pathway as pw

# 定义数据源列表
data_sources = []

# 添加本地文件系统数据源
data_sources.append(
pw.io.fs.read(
"./data",
format="binary",
mode="streaming",
with_metadata=True,
)
)

# 可以添加更多数据源,如Google Drive、SharePoint等
# data_sources.append(
# pw.io.gdrive.read(
# object_id="your_folder_id",
# service_user_credentials_file="credentials.json",
# with_metadata=True
# )
# )

步骤 3

创建文档索引管道:

from pathway.xpacks.llm.vector_store import VectorStoreServer
from llama_index.embeddings.openai import OpenAIEmbedding
from llama_index.core.node_parser import TokenTextSplitter

# 初始化嵌入模型
embed_model = OpenAIEmbedding(embed_batch_size=10)

# 定义转换管道
transformations_example = [
TokenTextSplitter(
chunk_size=150,
chunk_overlap=10,
separator=" ",
),
embed_model,
]

# 创建向量存储服务器
processing_pipeline = VectorStoreServer.from_llamaindex_components(
*data_sources,
transformations=transformations_example,
)

# 定义服务器主机和端口
PATHWAY_HOST = "127.0.0.1"
PATHWAY_PORT = 8754

# 运行服务器
processing_pipeline.run_server(
host=PATHWAY_HOST,
port=PATHWAY_PORT,
with_cache=False,
threaded=True
)

步骤 4

连接到自定义管道:

# 连接到自定义管道
retriever = PathwayRetriever(host=PATHWAY_HOST, port=PATHWAY_PORT)

# 执行检索
results = retriever.retrieve("what is pathway")
for result in results:
print(f"Score: {result.score}, Text: {result.text[:100]}...")

3. 在查询引擎中使用

步骤 5

创建查询引擎:

from llama_index.core.query_engine import RetrieverQueryEngine

# 创建查询引擎
query_engine = RetrieverQueryEngine.from_args(retriever)

# 执行查询
response = query_engine.query("Tell me about Pathway")
print(str(response))

案例效果

Pathway检索器提供了实时数据索引和检索能力,具有以下优势:

🔄实时更新

数据源中的任何更改都会自动反映在索引中,无需手动重建索引

📊多源集成

可以同时监控多个数据源,如本地文件、云存储、Google Drive等

⚡高效处理

使用流式处理模式,高效处理数据变化和更新

🔧灵活配置

支持自定义数据转换管道和嵌入模型

案例实现思路

Pathway检索器的核心思路是通过流式数据处理管道实现实时索引更新:

  1. 数据源监控:使用Pathway的连接器持续监控各种数据源的变化
  2. 实时处理:当检测到数据变化时,自动触发数据处理管道
  3. 增量更新:只处理变化的数据部分,而不是重建整个索引
  4. 向量存储:将处理后的数据转换为向量并存储在向量数据库中
  5. 检索接口:提供标准检索接口,与LlamaIndex生态系统无缝集成

这种实时索引方法特别适用于需要处理频繁变化数据的应用场景,如协作文档、实时数据流、动态内容网站等。通过Pathway框架,开发人员可以构建复杂的数据处理管道,包括SQL类操作、时间窗口分组、数据源连接等,同时保持实时更新的能力。

扩展建议

  • 多模态数据处理:扩展到处理图像、音频等多模态数据
  • 高级数据转换:集成更复杂的数据转换和预处理逻辑
  • 分布式部署:将Pathway管道部署到分布式环境,提高处理能力
  • 缓存策略:实现智能缓存策略,提高检索性能
  • 安全与权限:添加数据访问控制和权限管理
  • 监控与告警:集成监控系统,跟踪管道性能和数据质量
  • 自定义连接器:开发特定数据源的连接器,扩展支持范围

总结

Pathway检索器为LlamaIndex生态系统带来了实时数据处理能力,解决了传统静态索引在处理动态数据时的局限性。通过流式数据处理管道,Pathway能够自动监控数据源变化并实时更新索引,确保检索结果始终反映最新的数据状态。

这种实时索引方法对于需要处理频繁变化数据的应用场景特别有价值,如协作文档平台、实时数据分析、动态内容网站等。随着企业对实时数据处理需求的增长,Pathway检索器将在构建智能、响应迅速的RAG应用中发挥越来越重要的作用。

http://www.zskr.cn/news/1342665.html

相关文章:

  • 【RHCA+】info命令(模块化的命令帮助文档)
  • AI 术语通俗词典:LSTM
  • 仪式感,从来与你无关
  • Pure Live:3大平台聚合,打造你的专属纯净直播空间
  • VGG16猫狗二分类
  • 数采网关的应用与特点
  • 慢驴效应(懒驴效应)
  • 算法28,前缀和,寻找数组中的中心下标
  • 11.三层网络VXLAN
  • 【SSD】闪存1
  • 2026年工业胶粘材料国产化趋势白皮书:PI 金手指胶带的高温性能与应用突破
  • 学Simulink——多路输出反激式开关电源(SMPS)交叉调整率改善仿真
  • 手把手教你学Simulink——高频隔离型双向 DC-DC 变换器的软开关(ZVS/ZCS)实现仿真
  • 鸿蒙中的自由流转
  • 2026年4月钢边止水带企业推荐分析,聚乙烯闭孔泡沫板/聚乙烯泡沫棒/钢边止水带/橡胶止水带,钢边止水带生产厂家找哪家 - 品牌推荐师
  • 中画幅风格仅限Pro订阅者可用?不!3个未公开API参数+本地化--seed锁定技巧,让免费账户稳定输出中画幅质感
  • 输出函数print
  • 几十万买的数字孪生低代码平台集体落灰?被隐瞒的落地真相,终于说透了
  • 408 每日一题 Day 2:二叉树的重构与遍历
  • leetcode思路-236 二叉树的最近公共祖先
  • 分布式团队的代码协作规范:从分支策略到提交信息格式
  • Cell Host Microbe | 西奈山伊坎医学院房刚团队揭示肠道微生物的表观遗传“押注对冲“策略
  • 远程技术面试的潜规则:摄像头角度可能影响你的录用
  • VisionPro 中 验证工具 ID Verfiction
  • 用Claude Code做了一件事,现在AI比我还了解我?
  • 对比直接使用厂商API与通过Taotoken调用的体验差异
  • 告别被封号!这款30项检测全过的“隐形浏览器”火了
  • 通宵降AI率?10款降AI工具亲测:哪个神器一次过,哪个白花钱
  • Spec-Kit + Superpowers 实战:Go语言博客论坛系统的规范驱动开发
  • 微波遥感杂谈五(微波辐射计)