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 集成以实现可观测性。
典型工作流程
- 加载 –
wdoc --path <source> --filetype <type>下载/解析来源并将其分割成片段。 - 嵌入 – 使用选定的嵌入模型对每个片段进行嵌入。
- 检索 – 多查询检索器提取前 k 个最相似的片段。
- 过滤 – 便宜的 LLM 判断每个检索到的片段的相关性。
- 回答 – 强大的 LLM 从相关片段中提取信息,为每个片段产生一个答案。
- 合并 – 答案按语义聚类并分层合并为单一附有来源的 markdown 答案。
- (可选)摘要 – 同一流程可以在摘要模式下运行,以产生整份文档的详细大纲。
如何使用
- 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 和更深入的私有模式保证的路线图。
相关
- 项目
- 项目
- 项目
- 项目
- 项目