Python / Desktop App / RAG

File Tools 本地文件智能检索与问答系统

File Tools

随着本地文件数量快速增长和隐私保护需求增强,开发的一款完全离线运行的智能文件检索工具。结合快速文件索引技术和本地/在线大语言模型,实现高效的文件搜索、内容问答和个性化推荐功能。

FastAPI Pywebview Tantivy HNSWLib llama-cpp-python

技术架构

后端服务

FastAPI 提供 RESTful API,模块化路由设计(搜索、聊天、配置、目录管理相互独立)

桌面端

Pywebview 封装 Web 界面为原生窗口,避免浏览器跨域限制,体验更接近传统软件

检索引擎

Tantivy 负责全文检索(基于 Rust,速度快内存占用低),HNSWLib 处理向量相似度搜索

AI 能力

FastEmbed 生成文档向量,llama-cpp-python 本地加载 GGUF 模型,支持 Phi、Qwen、Llama 等

项目架构

用户界面层
Pywebview + Bootstrap
API 接口层
FastAPI 模块化路由
核心业务层
IndexManager / SearchEngine / RAGPipeline
数据存储层
Tantivy / HNSWLib / SQLite

核心功能

混合检索

关键词检索(Tantivy BM25)+ 语义检索(HNSWLib),按权重融合排序

智能问答

RAG 流程,先检索相关文档片段,再让 LLM 生成答案,带引用溯源

多格式支持

PDF、Word、Excel、PPT、Markdown 等常见办公文档

实时监控

文件增删改自动触发索引增量更新,不用手动重建

设置持久化

前端设置通过 API 保存到 YAML 配置文件,重启后依然有效

会话管理

智能问答支持多会话历史记录,服务器端维护,刷新不丢失

RAG 实现流程

1

检索

用户提问后,先用嵌入模型转成向量,在 HNSW 索引里找 Top-K 相似文档;同时用 Tantivy 做关键词匹配。两个分数按权重(默认 6:4)融合,重排序后取最相关的片段。

2

构造 Prompt

把检索到的文档片段拼进系统提示词,加上对话历史,组成完整的上下文。

3

生成

调用本地 LLM 或 API 生成回答,同时返回引用的源文档,方便用户核对。

安装与启动

# 克隆项目
git clone https://github.com/Dry-U/File-tools.git
cd File-tools

# 安装依赖(推荐 uv)
uv sync

# 启动应用
uv run python main.py
  • 启动后自动打开桌面窗口
  • API 服务运行在 127.0.0.1:8000
  • 支持 Windows / macOS / Linux

快速配置

# config.yaml 示例
ai_model:
  enabled: true
  mode: "api"  # 或 "local"
  api:
    provider: "siliconflow"
    api_key: "your-api-key"
    model_name: "deepseek-ai/DeepSeek-V2.5"

file_scanner:
  scan_paths:
    - "C:/Users/Name/Documents"

开源项目

File Tools 是一个开源项目,欢迎提交 Issue 和 Pull Request!

Dry-U/File-tools