semantra

GitHub
2.7k 158 简单 1 次阅读 4天前MIT插件开发框架
AI 解读 由 AI 自动生成,仅供参考

Semantra 是一款专为本地文档设计的语义搜索工具,旨在帮助用户突破传统关键词匹配的局限,实现“按含义”而非“按字面”查找信息。无论是面对海量泄露文件、学术论文还是历史档案,用户只需输入自然语言描述,Semantra 就能精准定位到内容相关但措辞不同的段落,轻松解决在大量文本中“大海捞针”的难题。

这款工具特别适合记者、研究人员、学生及历史学者等需要深度处理文档的专业人士,同时也欢迎注重数据隐私的普通用户尝试。Semantra 的最大亮点在于其私密性与便捷性:它完全在本地命令行运行,分析指定的文本或 PDF 文件后,会自动启动一个本地网页服务供交互式查询,确保敏感数据无需上传云端即可被高效检索。首次运行时,它会自动下载轻量级的机器学习模型进行本地化处理,既保证了搜索的智能程度,又兼顾了运行速度与存储效率。通过简单的命令即可构建专属的个人知识库,让文档探索变得直观且高效。

使用场景

一位调查记者需要在截稿前从数百页泄露的 PDF 报告和文本档案中,快速找出所有关于“资金非法转移”的线索,而不仅仅是包含特定关键词的段落。

没有 semantra 时

  • 关键词匹配局限:只能搜索"transfer"或"money"等确切词汇,若文档使用“拨款”、“汇款”或隐喻表达,极易漏掉关键信息。
  • 人工阅读效率低:面对海量文档,必须逐页打开 PDF 肉眼筛选,耗时数小时甚至数天,难以应对紧急截稿压力。
  • 上下文断裂:即使找到关键词,也往往需要手动翻阅前后文才能理解语境,难以快速判断该段落是否真正相关。
  • 隐私风险高:若使用在线搜索工具处理敏感泄露文件,存在数据上传至第三方服务器的安全隐患。

使用 semantra 后

  • 语义理解精准:semantra 能理解“资金非法转移”的含义,即使文档中写的是“隐蔽的资本流动”或未直接提及金钱,也能准确召回相关段落。
  • 秒级响应检索:只需在命令行运行一次索引,随后通过本地网页界面输入自然语言问题,即可在毫秒间遍历所有文档并返回结果。
  • 智能片段定位:搜索结果直接高亮显示最相关的语义片段及其出处,记者可立即确认上下文,无需反复翻页验证。
  • 本地私有部署:所有数据处理和模型推理均在本地完成,确保敏感的调查资料绝不离开记者的电脑,保障信息安全。

semantra 将原本需要数天的地毯式阅读工作压缩为几分钟的语义对话,让创作者真正从海量文本的“大海捞针”中解放出来。

运行环境要求

操作系统
  • Linux
  • macOS
  • Windows
GPU

未说明(默认使用本地 CPU 运行机器学习模型,也可配置使用 OpenAI 外部服务)

内存

未说明(首次运行需下载数百 MB 的模型文件)

依赖
notes推荐使用 pipx 进行安装以实现全局可用;首次运行时会自动下载默认的本地机器学习模型(如 mpnet),耗时数分钟并占用数百 MB 磁盘空间;支持自定义 Huggingface 模型或使用 OpenAI 嵌入模型(需联网及付费);工具启动后会在本地 localhost:8080 运行 Web 服务;不支持生成式模型(如 ChatGPT),仅用于语义搜索。
python3.9+
pipx
Huggingface transformers (隐含)
Annoy (隐含)
Svelte (前端)
semantra hero image

快速开始

Semantra

https://user-images.githubusercontent.com/306095/233867821-601db8b0-19c6-4bae-8e93-720b324dc199.mov

Semantra 是一款用于语义化文档搜索的多功能工具。它通过理解查询的含义来进行搜索,而不仅仅是基于文本匹配。

该工具运行在命令行界面,能够分析您计算机上指定的文本和 PDF 文件,并启动一个本地的 Web 搜索应用,供您交互式地查询这些文件。Semantra 的目标是让运行一个专门的语义搜索引擎变得简单、友好、可配置,并且私密安全。

Semantra 专为那些需要在海量信息中寻找关键线索的人设计——例如:记者在截止日期前梳理泄露文件、研究人员在论文中寻找洞见、学生通过主题查询来深入阅读文献、历史学家跨书籍关联事件等。

资源

  • 教程:轻松入门 Semantra 的指南——从安装工具到实际操作示例,帮助您快速上手。
  • 指南:关于如何更高效使用 Semantra 的实用指导。
  • 概念:解释 Semantra 工作原理的一些核心概念。
  • 使用 Web 界面:Semantra Web 应用的使用参考。

本页面提供了 Semantra 的概览及功能参考。此外,还提供其他语言版本:Semantra en españolSemantra 中文说明

安装

请确保已安装 Python >= 3.9

安装 Semantra 最简便的方式是使用 pipx。如果您尚未安装 pipx,请运行以下命令:

python3 -m pip install --user pipx

或者,如果您已安装 Homebrew,可以直接运行:

brew install pipx

安装完 pipx 后,请执行:

python3 -m pipx ensurepath

打开一个新的终端窗口,以使 pipx 设置的新路径生效。然后运行:

python3 -m pipx install semantra

这将把 Semantra 安装到您的系统路径中。您应该能够在终端中运行 semantra 并看到输出。

注意:如果上述步骤无法正常工作,或者您希望进行更精细的安装,也可以在虚拟环境中安装 Semantra(但请注意,只有在激活虚拟环境时才能使用):

python3 -m venv venv
source venv/bin/activate
pip install semantra

使用

Semantra 处理的是存储在您本地计算机上的文档集合——可以是文本文件或 PDF 文件。

最简单的用法是针对单个文档运行 Semantra:

semantra doc.pdf

您也可以同时处理多个文档:

semantra report.pdf book.txt

Semantra 需要一些时间来处理输入的文档。这一过程仅需对每个文档执行一次,后续再次运行时几乎无需额外时间。

处理完成后,Semantra 将启动一个本地 Web 服务器,默认地址为 localhost:8080。在该网页上,您可以交互式地对传入的文档进行语义查询。

快速提示:

首次运行 Semantra 时,可能需要下载一个本地机器学习模型,这通常会耗费几分钟时间以及数百 MB 的硬盘空间。该模型可用于处理您提供的文档。您可以自定义使用的模型,但默认模型在速度、轻量级和效果之间取得了很好的平衡。

如果您希望快速处理文档,而不占用本地计算资源,并且不介意付费或将数据共享给外部服务,可以使用 OpenAI 的嵌入模型

Web 应用快速导览

首次进入 Semantra 的 Web 界面时,您将看到如下界面:

Semantra Web 界面

在搜索框中输入内容即可开始语义查询。按下 Enter 键或点击搜索图标以执行查询。

搜索结果将按相关性顺序显示在左侧窗格中:

Semantra 搜索结果

黄色评分表示相关性,范围为 0 到 1.00。分数在 0.50 左右表示高度匹配。较浅的棕色高亮区域会覆盖在搜索结果上,突出显示与您的查询最相关的部分。

点击某个搜索结果的文本,即可跳转到对应文档中的相关内容:

文档中的高亮搜索结果

点击搜索结果旁边的加号/减号按钮,可以对该结果进行正向或负向标记。重新运行查询时,这些附加的查询参数将会生效:

对搜索结果进行正向/负向标记

最后,您还可以在查询文本中使用加号/减号来添加或移除关键词,从而精确塑造语义含义:

添加和删除文本查询

如需深入了解 Web 应用的操作流程,请参阅 教程Web 应用参考

核心概念

使用语义搜索引擎与传统的精确文本匹配算法有着本质的不同。

首先,无论查询多么无关紧要,总会返回搜索结果。尽管得分可能很低,但结果永远不会完全消失。这是因为语义搜索结合查询算术,往往能在细微的分数差异中发现有用的信息。搜索结果始终按相关性排序,每份文档仅显示前 10 条结果,因此低分结果会被自动过滤掉。

另一个区别在于,即使您查询的内容直接出现在文档中,Semantra 也不一定会找到精确的文本匹配。从根本上讲,这是因为同一个词语在不同上下文中可能具有不同的含义,例如“leaves”既可以指树叶,也可以表示“离开”。Semantra 所使用的嵌入模型会将您输入的所有文本和查询转换为一串数字序列,以便进行数学比较,而在这种情况下,精确的子字符串匹配并不总是重要的。更多关于嵌入技术的信息,请参阅 嵌入概念文档

命令行参考

semantra [OPTIONS] [FILENAME(S)]...

选项

  • --model [openai|minilm|mpnet|sgpt|sgpt-1.3B]: 预设用于嵌入的模型。更多信息请参阅模型指南(默认:mpnet)
  • --transformer-model TEXT: 自定义 Hugging Face 转换器模型名称,用于嵌入(--model--transformer-model 只能指定其中一个)。更多信息请参阅模型指南
  • --windows TEXT: 要提取的嵌入窗口。以逗号分隔的列表格式为“大小[_偏移量=0][_回溯=0]”。例如,窗口大小为 128、偏移量为 0、回溯为 16(128_0_16)会将文档以 128 个标记的块进行嵌入,这些块之间有 16 个标记的重叠部分。搜索时仅使用第一个窗口。更多信息请参阅窗口概念文档(默认:128_0_16)
  • --encoding: 用于读取文本文件的编码方式 [默认:utf-8]
  • --no-server: 不启动 UI 服务器(仅执行处理)
  • --port INTEGER: 嵌入服务器使用的端口(默认:8080)
  • --host TEXT: 嵌入服务器使用的主机地址(默认:127.0.0.1)
  • --pool-size INTEGER: 请求中最多可聚合的嵌入标记数
  • --pool-count INTEGER: 请求中最多可聚合的嵌入数量
  • --doc-token-pre TEXT: 在转换器模型中每个文档前添加的标记(默认:无)
  • --doc-token-post TEXT: 在转换器模型中每个文档后添加的标记(默认:无)
  • --query-token-pre TEXT: 在转换器模型中每个查询前添加的标记(默认:无)
  • --query-token-post TEXT: 在转换器模型中每个查询后添加的标记(默认:无)
  • --num-results INTEGER: 每个文件的查询结果(邻居)数量(默认:10)
  • --annoy: 使用 Annoy 进行近似 kNN 查询(查询速度更快,但准确性略有降低);若设置为 false,则使用精确的穷举 kNN(默认:True)
  • --num-annoy-trees INTEGER: 使用 Annoy 进行近似 kNN 时的树的数量(默认:100)
  • --svm: 使用 SVM 而不是任何类型的 kNN 进行查询(速度较慢,且仅适用于对称模型)
  • --svm-c FLOAT: SVM 正则化参数;值越高,对错误预测的惩罚越大(默认:1.0)
  • --explain-split-count INTEGER: 用于解释查询时,给定窗口上要进行的分割次数(默认:9)
  • --explain-split-divide INTEGER: 将窗口大小除以该因子,以得到每次分割的长度,用于解释查询(默认:6)
  • --num-explain-highlights INTEGER: 解释查询时要高亮显示的分割结果数量(默认:2)
  • --force: 即使已缓存也强制执行
  • --silent: 不打印进度信息
  • --no-confirm: 处理 OpenAI 数据时,不显示费用并请求确认
  • --version: 打印版本并退出
  • --list-models: 列出预设模型并退出
  • --show-semantra-dir: 打印 Semantra 将用于存储处理文件的目录并退出
  • --semantra-dir PATH: 存储 Semantra 文件的目录
  • --help: 显示此消息并退出

常见问题

它可以使用 ChatGPT 吗?

不可以,这也是设计上的考量。

Semantra 不使用任何生成式模型,如 ChatGPT。它仅用于语义查询文本,不会在基础上添加任何层来尝试解释、总结或合成结果。生成式语言模型有时会产生表面上看似合理但实际上不准确的信息,这会将验证的责任转嫁给用户。Semantra 将原始资料视为唯一的真理来源,并致力于证明,在更简单的嵌入模型之上结合人工参与的搜索体验,对用户来说更为实用。

开发

Python 应用程序位于 src/semantra/semantra.py,并作为标准的 Python 命令行项目,通过 pyproject.toml 进行管理。

本地 Web 应用程序使用 Svelte 编写,并作为标准的 npm 应用程序进行管理。

要开发 Web 应用程序,请进入 client 目录并运行 npm install

要构建 Web 应用程序,运行 npm run build。要在监听模式下构建 Web 应用程序并在发生更改时自动重新构建,运行 npm run build:watch

贡献

该应用程序目前仍处于早期阶段,但我们欢迎贡献。如有任何 bug 或功能请求,请随时提交 issue。

常见问题

相似工具推荐

stable-diffusion-webui

stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面,旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点,将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。 无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师,还是想要深入探索模型潜力的开发者与研究人员,都能从中获益。其核心亮点在于极高的功能丰富度:不仅支持文生图、图生图、局部重绘(Inpainting)和外绘(Outpainting)等基础模式,还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外,它内置了 GFPGAN 和 CodeFormer 等人脸修复工具,支持多种神经网络放大算法,并允许用户通过插件系统无限扩展能力。即使是显存有限的设备,stable-diffusion-webui 也提供了相应的优化选项,让高质量的 AI 艺术创作变得触手可及。

162.1k|★★★☆☆|今天
开发框架图像Agent

everything-claude-code

everything-claude-code 是一套专为 AI 编程助手(如 Claude Code、Codex、Cursor 等)打造的高性能优化系统。它不仅仅是一组配置文件,而是一个经过长期实战打磨的完整框架,旨在解决 AI 代理在实际开发中面临的效率低下、记忆丢失、安全隐患及缺乏持续学习能力等核心痛点。 通过引入技能模块化、直觉增强、记忆持久化机制以及内置的安全扫描功能,everything-claude-code 能显著提升 AI 在复杂任务中的表现,帮助开发者构建更稳定、更智能的生产级 AI 代理。其独特的“研究优先”开发理念和针对 Token 消耗的优化策略,使得模型响应更快、成本更低,同时有效防御潜在的攻击向量。 这套工具特别适合软件开发者、AI 研究人员以及希望深度定制 AI 工作流的技术团队使用。无论您是在构建大型代码库,还是需要 AI 协助进行安全审计与自动化测试,everything-claude-code 都能提供强大的底层支持。作为一个曾荣获 Anthropic 黑客大奖的开源项目,它融合了多语言支持与丰富的实战钩子(hooks),让 AI 真正成长为懂上

140.4k|★★☆☆☆|今天
开发框架Agent语言模型

ComfyUI

ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎,专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式,采用直观的节点式流程图界面,让用户通过连接不同的功能模块即可构建个性化的生成管线。 这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景,也能自由组合模型、调整参数并实时预览效果,轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性,不仅支持 Windows、macOS 和 Linux 全平台,还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构,并率先支持 SDXL、Flux、SD3 等前沿模型。 无论是希望深入探索算法潜力的研究人员和开发者,还是追求极致创作自由度的设计师与资深 AI 绘画爱好者,ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能,使其成为当前最灵活、生态最丰富的开源扩散模型工具之一,帮助用户将创意高效转化为现实。

107.7k|★★☆☆☆|2天前
开发框架图像Agent

NextChat

NextChat 是一款轻量且极速的 AI 助手,旨在为用户提供流畅、跨平台的大模型交互体验。它完美解决了用户在多设备间切换时难以保持对话连续性,以及面对众多 AI 模型不知如何统一管理的痛点。无论是日常办公、学习辅助还是创意激发,NextChat 都能让用户随时随地通过网页、iOS、Android、Windows、MacOS 或 Linux 端无缝接入智能服务。 这款工具非常适合普通用户、学生、职场人士以及需要私有化部署的企业团队使用。对于开发者而言,它也提供了便捷的自托管方案,支持一键部署到 Vercel 或 Zeabur 等平台。 NextChat 的核心亮点在于其广泛的模型兼容性,原生支持 Claude、DeepSeek、GPT-4 及 Gemini Pro 等主流大模型,让用户在一个界面即可自由切换不同 AI 能力。此外,它还率先支持 MCP(Model Context Protocol)协议,增强了上下文处理能力。针对企业用户,NextChat 提供专业版解决方案,具备品牌定制、细粒度权限控制、内部知识库整合及安全审计等功能,满足公司对数据隐私和个性化管理的高标准要求。

87.6k|★★☆☆☆|昨天
开发框架语言模型

ML-For-Beginners

ML-For-Beginners 是由微软推出的一套系统化机器学习入门课程,旨在帮助零基础用户轻松掌握经典机器学习知识。这套课程将学习路径规划为 12 周,包含 26 节精炼课程和 52 道配套测验,内容涵盖从基础概念到实际应用的完整流程,有效解决了初学者面对庞大知识体系时无从下手、缺乏结构化指导的痛点。 无论是希望转型的开发者、需要补充算法背景的研究人员,还是对人工智能充满好奇的普通爱好者,都能从中受益。课程不仅提供了清晰的理论讲解,还强调动手实践,让用户在循序渐进中建立扎实的技能基础。其独特的亮点在于强大的多语言支持,通过自动化机制提供了包括简体中文在内的 50 多种语言版本,极大地降低了全球不同背景用户的学习门槛。此外,项目采用开源协作模式,社区活跃且内容持续更新,确保学习者能获取前沿且准确的技术资讯。如果你正寻找一条清晰、友好且专业的机器学习入门之路,ML-For-Beginners 将是理想的起点。

85k|★★☆☆☆|今天
图像数据工具视频

ragflow

RAGFlow 是一款领先的开源检索增强生成(RAG)引擎,旨在为大语言模型构建更精准、可靠的上下文层。它巧妙地将前沿的 RAG 技术与智能体(Agent)能力相结合,不仅支持从各类文档中高效提取知识,还能让模型基于这些知识进行逻辑推理和任务执行。 在大模型应用中,幻觉问题和知识滞后是常见痛点。RAGFlow 通过深度解析复杂文档结构(如表格、图表及混合排版),显著提升了信息检索的准确度,从而有效减少模型“胡编乱造”的现象,确保回答既有据可依又具备时效性。其内置的智能体机制更进一步,使系统不仅能回答问题,还能自主规划步骤解决复杂问题。 这款工具特别适合开发者、企业技术团队以及 AI 研究人员使用。无论是希望快速搭建私有知识库问答系统,还是致力于探索大模型在垂直领域落地的创新者,都能从中受益。RAGFlow 提供了可视化的工作流编排界面和灵活的 API 接口,既降低了非算法背景用户的上手门槛,也满足了专业开发者对系统深度定制的需求。作为基于 Apache 2.0 协议开源的项目,它正成为连接通用大模型与行业专有知识之间的重要桥梁。

77.1k|★★★☆☆|2天前
Agent图像开发框架