HyperTag 为您的所有文件提供了富有表现力的标签系统和强大的语义搜索引擎。使用标签表达您的想法。使用文本文档(是的,甚至是 PDF)和图像的语义搜索来查找您要查找的内容。 HyperTag 不像其他现有文件组织工具那样引入专有文件格式,而是平滑地分层在现有文件之上,没有任何麻烦。
目标:最大限度地缩短思考和访问所有相关文件之间的时间。
目录
在 PyPI 上可用
$ pip install hypertag
(仅支持 CPU 和 CUDA 加速执行!)
通过 Twitter @SeanPedersen96 联系我
HyperTag 提供了一个灵活的 CLI,但更重要的是它创建了一个名为HyperTagFS
的目录,这是一个基于文件系统的文件系统,使用符号链接和目录表示文件和标签。
HyperTag WebApp(实验) :一个灵活的 HTML+JS 客户端。由 HyperTag 引擎提供支持,可在几秒钟内可视化、构建和搜索您的个人文件。
目录导入:使用$ hypertag import path/to/directory
导入现有的目录层次结构。 HyperTag 使用元标记将其自动转换为标签层次结构。
语义文本和图像搜索(实验性) :通过简单的文本查询搜索图像(jpg、png)和文本文档(是的,甚至是 PDF)内容。文本搜索由出色的 Sentence Transformers 库提供支持。文本到图像搜索由 OpenAI 的 CLIP 模型提供支持。目前仅支持英文查询。
HyperTag Daemon(实验性) :监视添加到自动导入列表中的HyperTagFS
和目录以了解用户更改(请参阅下面的“启动 HyperTag Daemon”部分)。还生成 DaemonService,它可以显着加快语义搜索速度(警告:守护进程占用 RAM 约 2GB)。
模糊匹配查询:HyperTag 使用模糊匹配来最大限度地减少拼写错误的情况下的摩擦。
文件类型组:HyperTag 自动创建包含常见文件的文件夹(例如图像:jpg、png 等,文档:txt、pdf 等,源代码:py、js 等),这些文件可以在HyperTagFS
中找到。
HyperTag Graph :快速了解您的 HyperTag Graph! HyperTag 可视化每次更改的元标签图并将其保存在HyperTagFS/hypertag-graph.pdf
中。
为在 localhost:23236 上运行的 HyperTag Web 客户端生成 HTTP 服务器
$ python3 -m hypertag.webapi
导入带有从现有目录层次结构推断的标签的文件。
$ hypertag import path/to/directory
$ hypertag add path/to/file https://github.com/SeanPedersen/HyperTag
手动标记文件。快捷方式: $ hypertag t
$ hypertag tag humans/*.txt with human "Homo Sapiens"
向文件的标签添加值:
$ hypertag tag sean.txt with name="Sean Pedersen"
手动从文件中删除标签。
$ hypertag untag humans/*.txt with human "Homo Sapiens"
用于创建标签层次结构的元标签。快捷方式: $ hypertag tt
$ hypertag metatag human with animal
将标签 A 的所有关联(文件和标签)合并到标签 B 中。
$ hypertag merge human into "Homo Sapiens"
打印与查询匹配的结果集的文件名。查询由标签(带有值)和操作数组成。为了方便起见,标签是模糊匹配的。目前不支持嵌套,查询从左到右进行评估。
快捷方式: $ hypertag q
使用通配符查询值: $ hypertag query name="Sean*"
打印路径: $ hypertag query human --path
打印模糊匹配标签: $ hypertag query man --verbose
禁用模糊匹配: $ hypertag query human --fuzzy=0
默认操作数为 AND(交集):
$ hypertag query human name="Sean*"
相当于$ hypertag query human and name="Sean*"
或(联合):
$ hypertag query human or "Homo Sapiens"
减(差异):
$ hypertag query human minus "Homo Sapiens"
只能搜索索引文件。
$ hypertag index
要解析甚至无法解析的 PDF,请安装 tesseract: # pacman -S tesseract tesseract-data-eng
仅索引图像文件: $ hypertag index --image
仅索引文本文件: $ hypertag index --text
一种将语义与标记匹配搜索相结合的自定义搜索算法。打印按匹配分数排序的文本文件名。运行 HyperTag 守护程序可大大提高性能。
快捷方式: $ hypertag s
$ hypertag search "your important text query" --path --score --top_k=10
打印按匹配分数排序的图像文件名。运行 HyperTag 守护程序可大大提高性能。
快捷方式: $ hypertag si
文本转图像: $ hypertag search_image "your image content description" --path --score --top_k=10
图像到图像: $ hypertag search_image "path/to/image.jpg" --path --score --top_k=10
启动具有三重功能的守护进程:
HyperTagFS
目录中的用户更改Search Images
或Search Texts
中创建目录时:将名称解释为语义搜索查询(添加 top_k=42 以限制结果大小)并自动用结果填充它$ hypertag daemon
$ hypertag tags filename1 filename2
$ hypertag metatags tag1 tag2
$ hypertag show
打印名称: $ hypertag show files
打印路径: $ hypertag show files --path
可视化元标签图层次结构(保存在 HyperTagFS 根目录下)。
$ hypertag graph
指定布局算法(默认:fruchterman_reingold):
$ hypertag graph --layout=kamada_kawai
使用符号链接和目录生成基于文件系统的文件和标签表示。
$ hypertag mount
添加到自动导入列表的目录将由守护程序监视是否有新文件或更改。
$ hypertag add_auto_import_dir path/to/directory
默认是用户的主目录。
$ hypertag set_hypertagfs_dir path/to/directory
pyproject.toml
中列出)~/.config/hypertag/hypertag.db
)~/.config/hypertag/web_pages
中,其他 URL 保存在~/.config/hypertag/downloads
中$ git clone https://github.com/SeanPedersen/HyperTag.git
$ cd HyperTag/
$ poetry install
$ poetry shell
$ pytest -v
$ black hypertag/
$ flake8
$ mypy hypertag --no-namespace-packages
$ bandit --exclude tests/ -r .
$ python -m hypertag
HyperTag存在的意义是什么?
HyperTag 提供了许多独特的功能,例如导入、语义搜索、图形和模糊匹配功能,使其使用起来非常方便。与 TMSU(Go 中>10,000 LOC)和 SuperTag(Rust 中>25,000 LOC)等类似项目相比,HyperTag 的代码库相对较小,小于 2000 LOC,因此很容易被攻击。
语义搜索替代方案