Project Icon

HyperTag

语义搜索和标签系统集成的智能文件管理工具

HyperTag整合了灵活的标签系统和先进的语义搜索功能,为文件管理提供创新解决方案。这款工具可无缝应用于现有文件结构,支持包括PDF在内的文本文档和图像的智能搜索。通过命令行界面和实验性网页应用,HyperTag旨在优化文件组织和检索流程,显著提升信息访问效率。其核心设计理念是缩短思考到文件获取的时间,为用户带来更智能、高效的文件管理体验。

HyperTag

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守护进程(实验性):监视HyperTagFS和添加到自动导入列表的目录,以检测用户更改(请参阅下面的"启动HyperTag守护进程"部分)。还会启动DaemonService,显著加快语义搜索速度(警告:守护进程占用大量RAM,约2GB)。

模糊匹配查询:HyperTag使用模糊匹配来最小化在不太可能出现拼写错误的情况下的摩擦。

文件类型分组:HyperTag自动创建包含常见文件的文件夹(例如,图像:jpg、png等,文档:txt、pdf等,源代码:py、js等),这些文件夹可以在HyperTagFS中找到。

HyperTag图:快速概览您的HyperTag图!HyperTag在每次更改时都会可视化元标签图,并将其保存在HyperTagFS/hypertag-graph.pdf中。

CLI功能

WebApp(实验性)

在localhost:23236上启动HyperTag Web客户端的HTTP服务器

$ python3 -m hypertag.webapi

递归导入现有目录

导入文件,并根据现有目录层次结构推断标签。

$ hypertag import path/to/directory

手动添加文件或URL

$ 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*"

OR(并集):
$ hypertag query human or "Homo Sapiens"

MINUS(差集):
$ 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

启动HyperTag守护进程

启动具有三重功能的守护进程:

  • 监视HyperTagFS目录的用户更改
    • 将文件(符号链接)和目录删除映射到标签/元标签的移除
    • 在创建目录时:将名称解释为集合理论标签查询,并自动填充结果
    • Search ImagesSearch Texts中创建目录时:将名称解释为语义搜索查询(添加top_k=42以限制结果大小),并自动填充结果
  • 监视自动导入列表中的目录以检测用户更改:
    • 将文件更改(移动和重命名)映射到数据库
    • 在创建文件时:添加新文件并推断标签,并自动索引(如果是支持的文件格式)
  • 启动DaemonService以加载和公开用于语义搜索的模型,显著加快搜索速度

$ hypertag daemon

打印文件的所有标签

$ hypertag tags filename1 filename2

打印标签的所有元标签

$ hypertag metatags tag1 tag2

打印所有标签

$ hypertag show

打印所有文件

打印文件名: $ hypertag show files

打印路径: $ hypertag show files --path

可视化HyperTag图

可视化元标签图层次结构(保存在HyperTagFS根目录)。

$ hypertag graph

指定布局算法(默认:fruchterman_reingold):

$ hypertag graph --layout=kamada_kawai

生成HyperTagFS

基于文件和标签使用符号链接和目录生成文件系统表示。

$ hypertag mount

将目录添加到自动导入列表

添加到自动导入列表的目录将由守护进程监控新文件或更改。

$ hypertag add_auto_import_dir path/to/directory

设置HyperTagFS目录路径

默认为用户的主目录。

$ hypertag set_hypertagfs_dir path/to/directory

架构

  • Python及其充满活力的开源社区为HyperTag提供支持
  • 许多其他优秀的开源项目使HyperTag成为可能(列在pyproject.toml中)
  • SQLite3用作元数据存储引擎(位于~/.config/hypertag/hypertag.db
  • 添加的URL保存在~/.config/hypertag/web_pages(网站)或~/.config/hypertag/downloads(其他)中
  • 使用符号链接创建HyperTagFS目录结构
  • 语义搜索:使用hnswlib进行增强
    • 文本到文本搜索由DistilBERT提供支持
    • 文本到图像和图像到图像搜索由OpenAI的CLIP模型提供支持

开发

  • 在此处查找优先级问题:待办事项列表
  • 选择一个问题,并在开始之前评论你计划如何解决,以确保不浪费开发时间。
  • 克隆仓库:$ git clone https://github.com/SeanPedersen/HyperTag.git
  • $ cd HyperTag/
  • 安装Poetry
  • 安装依赖:$ poetry install
  • 激活虚拟环境:$ poetry shell
  • 运行所有测试:$ pytest -v
  • 运行格式化工具:$ black hypertag/
  • 运行代码检查:$ flake8
  • 运行类型检查:$ mypy hypertag --no-namespace-packages
  • 运行安全检查:$ bandit --exclude tests/ -r .
  • Codacy:仪表板
  • 运行HyperTag:$ python -m hypertag

灵感来源

HyperTag存在的意义是什么? HyperTag提供了许多独特功能,如导入、语义搜索、图形化和模糊匹配功能,使其使用非常方便。同时,HyperTag的代码库保持相对较小,不到2000行代码,与类似项目如TMSU(Go语言超过10,000行代码)和SuperTag(Rust语言超过25,000行代码)相比,更易于修改。

语义搜索替代方案

项目侧边栏1项目侧边栏2
推荐项目
Project Cover

豆包MarsCode

豆包 MarsCode 是一款革命性的编程助手,通过AI技术提供代码补全、单测生成、代码解释和智能问答等功能,支持100+编程语言,与主流编辑器无缝集成,显著提升开发效率和代码质量。

Project Cover

AI写歌

Suno AI是一个革命性的AI音乐创作平台,能在短短30秒内帮助用户创作出一首完整的歌曲。无论是寻找创作灵感还是需要快速制作音乐,Suno AI都是音乐爱好者和专业人士的理想选择。

Project Cover

有言AI

有言平台提供一站式AIGC视频创作解决方案,通过智能技术简化视频制作流程。无论是企业宣传还是个人分享,有言都能帮助用户快速、轻松地制作出专业级别的视频内容。

Project Cover

Kimi

Kimi AI助手提供多语言对话支持,能够阅读和理解用户上传的文件内容,解析网页信息,并结合搜索结果为用户提供详尽的答案。无论是日常咨询还是专业问题,Kimi都能以友好、专业的方式提供帮助。

Project Cover

阿里绘蛙

绘蛙是阿里巴巴集团推出的革命性AI电商营销平台。利用尖端人工智能技术,为商家提供一键生成商品图和营销文案的服务,显著提升内容创作效率和营销效果。适用于淘宝、天猫等电商平台,让商品第一时间被种草。

Project Cover

吐司

探索Tensor.Art平台的独特AI模型,免费访问各种图像生成与AI训练工具,从Stable Diffusion等基础模型开始,轻松实现创新图像生成。体验前沿的AI技术,推动个人和企业的创新发展。

Project Cover

SubCat字幕猫

SubCat字幕猫APP是一款创新的视频播放器,它将改变您观看视频的方式!SubCat结合了先进的人工智能技术,为您提供即时视频字幕翻译,无论是本地视频还是网络流媒体,让您轻松享受各种语言的内容。

Project Cover

美间AI

美间AI创意设计平台,利用前沿AI技术,为设计师和营销人员提供一站式设计解决方案。从智能海报到3D效果图,再到文案生成,美间让创意设计更简单、更高效。

Project Cover

AIWritePaper论文写作

AIWritePaper论文写作是一站式AI论文写作辅助工具,简化了选题、文献检索至论文撰写的整个过程。通过简单设定,平台可快速生成高质量论文大纲和全文,配合图表、参考文献等一应俱全,同时提供开题报告和答辩PPT等增值服务,保障数据安全,有效提升写作效率和论文质量。

投诉举报邮箱: service@vectorlightyear.com
@2024 懂AI·鲁ICP备2024100362号-6·鲁公网安备37021002001498号