构建 Unravel:通过可视化学习 RAG
Source: Dev.to
介绍
当我开始学习 Retrieval‑Augmented Generation (RAG) 时,我很快遇到了障碍。并不是因为缺少文档或教程,而是因为我看不清楚底层到底在发生什么。
RAG 系统现在随处可见:
- 能够回答文档相关问题的聊天机器人
- 能够理解上下文的搜索引擎
- 在生成回复之前检索相关信息的助手
理解 它们是如何工作的——以及不同方法之间的权衡——出乎意料地困难。
大多数 RAG 教程的问题
典型的教程遵循以下模式:
- 安装向量数据库。
- 对文档进行切块。
- 生成嵌入向量。
- 查询索引。
代码能够运行,你得到结果,但仍有关键问题未得到解答:
- 切块 – 为什么我的策略返回了 15 个切块而不是 20 个?
- 重叠 – 我的切块之间有多少重叠,这真的有帮助吗?
- 嵌入空间 – 它是什么样的?相似的文档是否聚集在一起?
- 语义搜索 – 为什么它为我的查询返回了这些特定的切块?
- 稀疏检索 vs. 密集检索 – BM25 与密集检索之间的结果有多大差异?
这些并非学术上的好奇心。每一个决定——切块大小、重叠比例、嵌入模型、检索策略——都会产生权衡,影响 准确性、速度和可靠性。然而大多数框架将这些细节抽象化,导致你在调参时并不了解其影响。
我的解决方案:Unravel
Instead of just implementing RAG pipelines, I built Unravel, a tool that visualizes every step of the pipeline in real‑time. As I learned each concept, I added it to the visualization. When I discovered a new retrieval strategy, I implemented it and compared it visually against the others.
Unravel 展示的内容
| 阶段 | 可视化 | 关键洞察 |
|---|---|---|
| 文档摄取 | PDF → 结构化元素(标题、段落、表格、图像) | 准确查看 RAG 系统所看到的内容;可切换 OCR,使扫描文本可搜索。 |
| 分块 | 每个块的卡片,附带元数据(标记数、章节面包屑、来源页、重叠) | 并排比较层次式与混合式分块。 |
| 嵌入 | 3D UMAP 投影,k-means 颜色编码,异常点高亮 | 悬停即可预览块;观察查询向量出现并连接到结果。 |
| 检索 | BM25、稠密、混合(加权求和 / 逆序融合)、查询扩展、cross‑encoder 重排序 | 比较相似度得分、来源位置以及返回的精确块。 |
| 导出 | 可直接投入生产的 Python 代码,已内置所有设置 | 可直接集成到您的应用中。 |
Unravel 改变我理解的方式
- Chunk overlap 并非免费 – 重叠提升上下文连贯性,但会增加存储、嵌入成本以及检索噪声。可视化的重叠高亮让这种权衡变得直观。
- Embedding models 表现各异 – 有些模型产生紧凑、分离良好的簇;而另一些则生成弥散、重叠的嵌入。3D 视图让你在执行任何查询之前就能挑选出最佳模型。
- Hybrid retrieval 并非总是更好 – 密集检索在语义细微差别上表现突出;BM25 在关键词密集的查询上更胜一筹。并排的可视化比较展示了何时适合使用各自的方法。
- Local LLMs 可行 – 在本地使用 Unravel 运行 Ollama 证明了构建高效 RAG 流水线不一定需要云 API;性能差距正在缩小。
Unravel 适合谁?
- 学习者 想要了解 RAG 的机制,而不是仅仅复制粘贴代码。
- 实验者 比较文档解析、嵌入模型或检索策略。
- 开发者 需要快速原型并导出可投入生产的流水线。
所有处理均在 本地 完成:
- 文档永不离开你的机器。
- 向量存储在本地 Qdrant 实例中。
- 你可以选择云端 LLM API 或 通过 Ollama 或 LM Studio 使用本地模型。
Source: …
未来路线图
虽然 Unravel 目前侧重于教育和实验,但我设想它将演变为一个完整的 RAG 评估平台。计划中的扩展包括:
- 系统化评估指标 – 精确率、召回率、MRR、NDCG。
- 真实数据集 与自动化基准测试。
- 性能分析 – 延迟、吞吐量、每次查询成本。
- 全栈 RAG 支持 – 语义缓存、HyDE、高级重排序、多向量检索。
- 对比分析 跨嵌入模型、分块策略和检索方法。
目标:提供一个单一工具,帮助您 设计、调试、评估和部署 RAG 系统,充满信心。
想了解您的 RAG 流水线内部到底在发生什么吗?立即尝试 Unravel 吧。
Unravel – 可视化、测试和优化检索增强生成(RAG)
Unravel 帮助你 不仅了解 RAG,还能严格评估并优化你的实现,以用于生产环境。它是开源的,随时可用。
安装
pip install unravel
unravel
运行 unravel 会在浏览器中启动一个 Web 应用。
应用功能
界面会引导你完成五个步骤:
- 文档上传 – 添加你自己的文件或使用提供的示例。
- 块(Chunk)可视化 – 查看文档是如何被拆分成块的。
- 嵌入探索 – 检查向量表示及其相似度。
- 查询测试 – 对索引数据运行查询并查看结果。
- 代码导出 – 生成可直接运行的 Python 代码,用于你的流水线。
随意尝试不同的配置,观察更改如何在整个流水线中传播。
适用人群
- 学习者 – 获得 RAG 概念和权衡的更清晰认识。
- 构建者 – 基于证据做出明智决策,而不是凭猜测。
源码托管在 GitHub,欢迎贡献。期待了解你是如何使用 Unravel 的!
链接
- GitHub:
- PyPI:
关于作者
一位通过构建可视化工具学习 RAG 的开发者,决定分享他的旅程。