超越简单 RAG:使用 Next.js、Python 和 Supabase 构建 Agentic 工作流

发布: (2025年12月25日 GMT+8 03:51)
4 分钟阅读
原文: Dev.to

Source: Dev.to

超越简单 RAG:使用 Next.js、Python 和 Supabase 构建智能工作流的封面图片

RAG 应用的流程图

问题:“Chat with PDF” 成为新的 Hello World

构建一个基本的 RAG 应用如今很容易。你上传一个 5 页的 PDF,将其拆分成 1,000 字符的块,它就能工作。

当我尝试用 500 页的大学教材 时,标准流水线崩溃了。我不想要一个聊天机器人;我想要一个导师。所以我创建了 Learneazy.io

秘密酱料:三层语义索引

大多数 RAG 应用把文档视为一个巨大的文本块。然而,教科书有自然的层次结构(索引 → 章节 → 内容)。我在数据库中使用 Python (Flask) 微服务和 PyMuPDF 镜像了这种结构。

第 1 层 – “骨架”(目录)

目的: 快速的高级结构查询。

第 2 层 – “容器”(按章节划分的块)

目的: 上下文感知搜索。当你询问“第 4 章的热力学”时,只会搜索第 4 章。

第 3 层 – “深度挖掘”(细粒度块)

目的: 回答每个细微差别都重要的具体深度问题。

大脑:代理路由

层级索引如果没有决定查询哪一层的机制就毫无用处。我实现了一个配备了每层自定义工具的 LangChain Agent。该代理充当路由器:

  • 用户: “有多少章节?” → 代理: 调用 Index Tool(快速、低成本)。
  • 用户: “总结第 3 章。” → 代理: 调用 Chapter Tool(高上下文)。
  • 用户: “解释 X 的公式。” → 代理: 调用 Deep Dive Tool(高精度)。

这种路由逻辑将 token 使用量降低了约 40 %,并显著提升了准确性。

超越聊天:闪卡引擎

最困难的技术挑战是让用户能够说:“为第5章生成10张闪卡”。AI 不能仅仅猜测;它需要一个有依据的工作流。

  1. 主题提取: 扫描 Chapter Layer 以识别关键主题(例如,“线粒体”,“克雷布斯循环”)。
  2. 上下文检索:Deep Dive Layer 中针对这些主题执行向量搜索,以获取精确定义。
  3. 合成: 使用 LLM(Google Gemini)将有依据的事实格式化为严格的问答对。

结果:闪卡是从用户的特定材料生成的,而不是通用的互联网知识。

技术栈:为何采用微服务?

组件技术理由
前端Next.js 16 (React 19)快速、响应式的用户界面
处理服务Python (Flask)卓越的 PDF 处理和分块逻辑
嵌入Cohere (embed-english-v3.0)针对 RAG 检索质量进行微调,在此用例中优于 OpenAI
数据库Supabase (PostgreSQL + pgVector)将向量与用户数据(认证、元数据)一起存储,实现简化的后端
源代码github.com/Abhinav-Sriharsha/Learneazy
Back to Blog

相关文章

阅读更多 »