3 个版本
0.1.2 | 2024 年 3 月 9 日 |
---|---|
0.1.1 | 2024 年 3 月 9 日 |
0.1.0 | 2024 年 3 月 9 日 |
#822 in 命令行工具
29KB
520 行
DMSLite
DMSLite 是一个安全且轻量级的文档管理命令行工具。它提供高效的文档索引、搜索和基于 AI 的分类,确保即使在大文档量下也能保持快速的性能,同时将所有操作完全本地化在您的机器上,以实现最大限度的隐私和安全。
用法
如果您的根 bin 文件夹位于 $PATH 中,您可以在任何地方输入 dmslite
- 消费文档:将文档添加到指定的文件夹以进行处理。(例如,使用命令
c
) - 搜索文档:使用 CLI 通过内容、标题或创建日期(模糊词相似度搜索)搜索文档。(例如,使用命令
s
后跟搜索短语) - 打开文档:直接从 CLI 工具使用默认应用程序打开搜索到的文档。(例如,使用命令
o
后跟之前搜索到的 id) - 删除文档:通过其 id 删除搜索到的文档。(例如,使用命令
d
后跟之前搜索到的 id。)
安装和设置
cargo安装 dmslite
先决条件
- PostgreSQL 数据库
- Tesseract 安装在您的本地语言中
- Ollama 配置了本地模型。
- pdftoppm(通过
sudo apt install poppler-utils
安装) - xdg-open。能够在终端中直接打开文档。
PostgreSQL 数据库设置
- CREATE USER dmslite WITH PASSWORD 'dmslite';
- 作为 psql 超级用户,创建 PostgreSQL 数据库和模式
psql -U postgres
CREATE DATABASE dmslite OWNER dmslite;
CREATE SCHEMA dmslite;
- 将密码写入
src/settings.rs
中的 StringPSQL_PASSWD
- 作为 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
```
设置
- 创建一个用于消费文档的文件夹。
- 创建一个用于索引存储文档的文件夹。
- 将这两个绝对路径字符串写入文件
src/settings.rs
中的CONSUME_PATH
和STORAGE_PATH
。
它们必须是 绝对 路径,以/home/<user>/...
开头。 - 将字符串
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