thiswillbeyourgithub/wdoc

Summarize and query from a lot of heterogeneous documents. Any LLM provider, any filetype, advanced RAG, advanced summaries, scriptable, etc

wdoc – 为异质文档而生的检索增强生成

功能简介 – wdoc 是一个基于 Python 的 RAG 系统,可以摄取、索引并查询混合文档类型(PDF、EPUB、Word、PowerPoint、音频/视频、YouTube、Anki 单词卡、网页等)。它为片段构建嵌入,使用两阶段 LLM 流程(一个便宜的“评估器”来过滤检索到的片段,然后一个强大的 LLM 来生成附有来源的答案),最后将中间答案合并为单一 markdown 响应。它还提供高质量摘要模式,能产出来源材料的详细、缩进 markdown 大纲。

关键组件

  • LangChain + LiteLLM – 核心检索、分块与 LLM 调用逻辑。
  • 向量存储 – 存储嵌入以进行快速相似性搜索;支持二进制嵌入存储以获得更高压缩率。
  • 两阶段 LLM 工作流程 – Eve(便宜模型)过滤检索到的片段,Anna(强大模型)提取信息,Carl 合并结果;可选的 Raphael 改写查询,Sam 进行摘要。
  • Docker + Gradio UI – 为偏好图形界面而非命令行界面的用户提供的可选网页界面。
  • 广泛的文件类型加载器 – 15+ 内置加载器(PDF、音频、视频、YouTube、Anki、logseq markdown 等)以及递归加载器(DuckDuckGo 网页搜索、JSON 条目、链接文件)。
  • 与供应商无关的 LLM 支持 – 可与任何通过 LiteLLM 暴露的模型搭配运作(OpenAI、Anthropic、Mistral、Ollama、OpenRouter、本地 Ollama 服务器等)。私有模式可以完全离线运行。
  • 缓存与追踪 – LLM/嵌入调用会被缓存;可选的 Langfuse 集成以实现可观测性。

典型工作流程

  1. 加载 – wdoc --path <source> --filetype <type> 下载/解析来源并将其分割成片段。
  2. 嵌入 – 使用选定的嵌入模型对每个片段进行嵌入。
  3. 检索 – 多查询检索器提取前 k 个最相似的片段。
  4. 过滤 – 便宜的 LLM 判断每个检索到的片段的相关性。
  5. 回答 – 强大的 LLM 从相关片段中提取信息,为每个片段产生一个答案。
  6. 合并 – 答案按语义聚类并分层合并为单一附有来源的 markdown 答案。
  7. (可选)摘要 – 同一流程可以在摘要模式下运行,以产生整份文档的详细大纲。

如何使用

  • CLI – uvx wdoc[full] --path <url_or_file> --task query --query "…"(或 summarize)。额外功能([full])会安装所有可选加载器。
  • Docker UI – 运行提供的 Docker compose;Gradio 前端让您上传文件、设置任务并查看 markdown 结果。
  • Python 库 – 导入 wdoc 并调用其高阶 API;仓库附带一个 wdoc‑skill 文件夹,内含完整参考表和示例片段。

为何重要

  • 在单一索引中处理异质语料库,这是大多数现成 RAG 工具难以做到的。
  • 两阶段 LLM 方法在保持高召回率的同时降低成本。
  • 提供附有来源的答案,使信息更容易验证。
  • 可通过插件、自定义加载器和 Open‑WebUI 工具集成进行扩展。

当前状态 – 可用且经过测试,正在积极开发中,并有更多功能、更好的 UI 和更深入的私有模式保证的路线图。

相关

  • 项目
  • 项目
  • 项目
  • 项目
  • 项目