#pdf-document #search #dms #management #command-line-tool #local #postgresql

app dmslite

本地快速文档管理系统 CLI 工具,用于存储和搜索 PDF 文档

3 个版本

0.1.2 2024 年 3 月 9 日
0.1.1 2024 年 3 月 9 日
0.1.0 2024 年 3 月 9 日

#822 in 命令行工具

MIT 许可证

29KB
520

crates.io

DMSLite

DMSLite 是一个安全且轻量级的文档管理命令行工具。它提供高效的文档索引、搜索和基于 AI 的分类,确保即使在大文档量下也能保持快速的性能,同时将所有操作完全本地化在您的机器上,以实现最大限度的隐私和安全。

用法

如果您的根 bin 文件夹位于 $PATH 中,您可以在任何地方输入 dmslite

  1. 消费文档:将文档添加到指定的文件夹以进行处理。(例如,使用命令 c
  2. 搜索文档:使用 CLI 通过内容、标题或创建日期(模糊词相似度搜索)搜索文档。(例如,使用命令 s 后跟搜索短语)
  3. 打开文档:直接从 CLI 工具使用默认应用程序打开搜索到的文档。(例如,使用命令 o 后跟之前搜索到的 id)
  4. 删除文档:通过其 id 删除搜索到的文档。(例如,使用命令 d 后跟之前搜索到的 id。)

安装和设置

cargo安装 dmslite

先决条件

  1. PostgreSQL 数据库
  2. Tesseract 安装在您的本地语言中
  3. Ollama 配置了本地模型。
  4. pdftoppm(通过 sudo apt install poppler-utils 安装)
  5. xdg-open。能够在终端中直接打开文档。

PostgreSQL 数据库设置

  1. CREATE USER dmslite WITH PASSWORD 'dmslite';
  2. 作为 psql 超级用户,创建 PostgreSQL 数据库和模式
    psql -U postgres
    CREATE DATABASE dmslite OWNER dmslite;
    CREATE SCHEMA dmslite;
  1. 将密码写入 src/settings.rs 中的 String PSQL_PASSWD
  2. 作为 dmslite 用户,创建搜索索引、主表和文档内容表
    CREATE EXTENSION pg_trgm;
    
    -- create indices
    CREATE INDEX idx_content_trgm ON document_content USING gin (content gin_trgm_ops);
    CREATE INDEX idx_summary_trgm ON document_content USING gin (summary    gin_trgm_ops);
    CREATE INDEX idx_buzzwords_trgm ON document_content USING gin (buzzwords gin_trgm_ops);
    
    -- create tables
    CREATE TABLE dmslite.main_table (
        id SERIAL PRIMARY KEY,
        upload_date DATE,
        filepath VARCHAR(255),
        title TEXT
    );
    
    CREATE TABLE dmslite.document_content (
        id SERIAL PRIMARY KEY,
        -- Other columns in table2
        content TEXT,
        summary TEXT,
        buzzwords TEXT,
        -- Add more columns as needed
        FOREIGN KEY (id) REFERENCES main_table(id) ON DELETE CASCADE
    );
    

Ollama 自定义模型设置

Build custom Ollama models:
For Memory restricted machines the gemma:2b Model is recommended (Default).
Otherwise Choose llama2.
Set this inside the Modelfiles as the FROM <model> Command. 
```
ollama create doc_buzzword_generator -f doc_buzzword_generator
ollama create doc_summarizer -f doc_summarizer
ollama create doc_title_generator -f doc_title_generator
```

设置

  1. 创建一个用于消费文档的文件夹。
  2. 创建一个用于索引存储文档的文件夹。
  3. 将这两个绝对路径字符串写入文件 src/settings.rs 中的 CONSUME_PATHSTORAGE_PATH
    它们必须是 绝对 路径,以 /home/<user>/... 开头。
  4. 将字符串 TESSERACT_LANG 设置为您的 tesseract 语言标志。例如:“eng” 或 “deu”。

卸载/删除

Postgres

DROP TABLE document_content;
DROP TABLE main_table;
DROP INDEX IF EXISTS idx_content_trgm;
DROP INDEX IF EXISTS idx_summary_trgm;
DROP INDEX IF EXISTS idx_buzzwords_trgm;
DROP FUNCTION fuzzy_search_document_content;

Ollama

ollama rm doc_buzzword_generator
ollama rm doc_summarizer
ollama rm doc_title_generator

依赖项

~11–25MB
~386K SLoC