使用 Google Drive 和 Sharepoint 构建一个实时 RAG 聊天机器人

在这篇文章中,我们将讨论如何利用 Google Drive 或 SharePoint 中存储的文件,构建一个实时的可检索问答(RAG)应用。这意味着您的聊天机器人将能够实时访问知识库的最新版本,无需手动更新。本教程将指导您使用 Pathway 和 LlamaIndex 构建一个实时更新的 RAG 聊天机器人。

为什么选择 Pathway?

Pathway 是一个开放的数据处理框架,允许轻松开发数据转换管道和使用实时数据源的机器学习应用程序。Pathway 监听文档的更改、添加和删除,处理加载和索引,无需 ETL。

它提供一个始终是最新的索引解决方案,无需传统的 ETL 管道。它可以监控多个数据源(如文件、S3 文件夹和云存储),向您的 LLM 应用程序提供最新信息,省去了许多繁琐的步骤。

这意味着你无需担心:

  • 检查文件以查看是否有任何更改
  • 解析 PDF、Word 文档或其他文本文件
  • 转换、嵌入文档并将其加载到向量数据库中

一旦对构成你的知识库的文件进行更新,更新的内容将立即重新编制索引------你无需处理重新运行管道。

应用程序概述

此演示由三部分组成。

  1. 使用 Pathway 的向量存储,从知识库文档中获取最新的知识和信息。
  2. LlamaIndex 创建 RAG 管道并提供聊天记录。
  3. Streamlit 提供易于导航的用户界面支持。

先决条件

  • OpenAI API 密钥
  • Pathway 实例(托管版本免费提供用于演示)

1. 向知识库添加数据

Pathway 可以同时监听多个来源,例如本地文件、S3 文件夹、云存储和数据流。在此示例中,您将通过将文件上传到作为来源注册到 Pathway 的 Google Drive 来向您的管道添加示例文档。您还可以查看 Pathway 的 Google Drive 连接器的完整文档

对于此演示,为您提供了一个 Google Drive 文件夹以供您上传文件。为了测试该应用程序,我们将向我们的助手询问有关 Pathway 的问题,它将根据 Google Drive 文件夹中可用的文件进行响应。

请参阅 pathway-io 以获取有关可用连接器和如何实现自定义连接器的更多信息。

2. 构建由 Pathway 提供支持的聊天机器人

检索器

首先,导入应用程序所需的模块。

javascript 复制代码
from llama_index.retrievers import PathwayRetriever
from llama_index.query_engine import RetrieverQueryEngine
from llama_index.chat_engine.condense_question import CondenseQuestionChatEngine
from rag import chat_engine

使用托管的 Pathway 实例初始化检索器并创建查询引擎:

ini 复制代码
PATHWAY_HOST = "api-pathway-indexer.staging.deploys.pathway.com"
PATHWAY_PORT = 80

retriever = PathwayRetriever(host=PATHWAY_HOST, port=PATHWAY_PORT)

聊天引擎

我们使用 CondenseQuestionChatEngine 来使用 LlamaIndex 创建 RAG 聊天机器人。此聊天引擎的一个优点是它使用对话历史记录中提供的上下文来编写搜索查询。这会产生更符合上下文的内容。

为了进一步改进管道,你可以修改聊天引擎类型、提示和其他参数。为了简单起见,我们将使用默认设置。

ini 复制代码
chat_engine = CondensePlusContextChatEngine.from_defaults(
    retriever=retriever,
    verbose=True,
)

3. 使用 Streamlit 创建 UI

为应用程序创建一个标题,并初始化聊天机器人的消息历史记录和聊天引擎的会话状态值。

ini 复制代码
st.title("Pathway + LlamaIndex")

if "messages" not in st.session_state.keys():
    st.session_state.messages = [
        {"role": "assistant", "content": "Hi, ask me a question. My knowledge is always up to date!"}
    ]

    st.session_state.chat_engine = chat_engine

提示用户输入问题,将任何用户输入存储在会话状态中,并打印用户和助手的消息。

css 复制代码
if prompt := st.chat_input("Your question"):
    st.session_state.messages.append({"role": "user", "content": prompt})

for message in st.session_state.messages:
    with st.chat_message(message["role"]):
        st.write(message["content"])

如果最后一条消息来自用户并且助手正在准备回复,则创建一个 st.spinner 小组件。将消息内容和角色添加到消息历史记录中。

vbscript 复制代码
if st.session_state.messages[-1]["role"] != "assistant":
    with st.chat_message("assistant"):
        with st.spinner("Thinking..."):
            response = st.session_state.chat_engine.chat(prompt)
            st.write(response.response)
            message = {"role": "assistant", "content": response.response}
            st.session_state.messages.append(message)

运行应用程序

在 Streamlit 社区云上

该演示托管在 Streamlit 社区云上,网址。此版本的应用程序使用 Pathway 托管的文档管道

在您的本地计算机上

  1. 在本地克隆此存储库
  2. 在根文件夹下创建一个 .env 文件来存储您的 OpenAI API 密钥。此演示使用 OpenAI GPT 模型来回答问题。
  3. 您还需要一个用于向量搜索的 Pathway 实例。有关本地部署,请参阅向量存储指南Pathway 部署
  4. 运行 streamlit run ui.py

恭喜!现在,您可以与您的文档聊天,并且由于 Pathway,您的应用程序将实时反映任何文件更新。

总结

在本教程中,您创建并部署了一个实时 RAG 聊天机器人应用程序。您还了解了如何将 Streamlit、LlamaIndex 和 Pathway 结合使用,这要归功于 LlamaIndex 的 Pathway Retriever。最终结果是一个 RAG 应用程序,它始终可以访问您的知识库的最新版本。

来源:blog.streamlit.io/build-a-rea...

相关推荐
AAA阿giao3 小时前
深入理解 OpenAI AIGC 模型与 Node.js 实战:从零构建歌词生成应用
aigc·openai
CaracalTiger4 小时前
告别云端依赖!ComfyUI本地化视频生成实战教程+cpolar实战
python·gpt·开源·aigc·ai编程·1024程序员节·ai-native
Mintopia4 小时前
🌐 数据合规框架下的 WebAIGC 训练数据处理技术规范
前端·javascript·aigc
DisonTangor5 小时前
PaddleOCR-VL: 通过0.9B超紧凑视觉语言模型增强多语言文档解析
人工智能·计算机视觉·语言模型·自然语言处理·开源·aigc
win4r6 小时前
🚀程序员福音!学习新框架从此不用看文档?Skill Seeker让Claude成为你的技术导师,CrewAI、AutoGen、LangGraph随便上,自动生
aigc·claude·vibecoding
神秘的土鸡15 小时前
从数据仓库到数据中台再到数据飞轮:我的数据技术成长之路
java·服务器·aigc·数据库架构·1024程序员节
墨风如雪17 小时前
Google Skills:AI时代的学习革命,你准备好了吗?
aigc
猫头虎1 天前
大模型训练中的关键技术与挑战:数据采集、微调与资源优化
人工智能·爬虫·数据挖掘·数据分析·网络爬虫·aigc·1024程序员节
Mintopia1 天前
深度伪造检测技术在 WebAIGC 场景中的应用现状
前端·javascript·aigc
DisonTangor1 天前
【2B篇】阿里通义 Qwen3-VL 新增 2B、32B 两个模型尺寸,手机也能轻松运行
人工智能·计算机视觉·语言模型·开源·aigc