フォルダを自動でインデックス化し、Elasticsearch APIに対応するRust製ローカルAI検索エンジン
run-llama/semtools
文書のMarkdown変換、ローカルの意味検索、AIエージェントによるファイルへの質問に使えるCLIツール。
- スター
- 1,878
- フォーク
- 153
- 未解決の Issue
- 6
- 最終コミット
- 7 か月前
これは何?
SemToolsは、parse、search、ask、workspaceの4つのサブコマンドを備えたRust製CLIツールキットです。parseコマンドはPDFやDOCXなどの文書をMarkdownに変換し、デフォルトではLlamaParse APIを使用します。searchコマンドは、多言語対応のmodel2vec埋め込みを使って完全にローカルで意味検索を行い、設定可能な距離しきい値に基づいて、一致した行とその前後の文脈を返します。
askコマンドは、searchツールとreadツールを使って、複数のファイルに関する質問に答えるAIエージェントを実行します。デフォルトではOpenAIのモデルを使用しますが、設定ファイルで指定すれば、任意のOpenAI互換エンドポイントを利用できます。workspaceコマンドは計算済みの埋め込みを~/.semtools/workspaces/に保存します。そのため、大量のファイルを繰り返し検索する際に結果を再利用でき、変更されたファイルは自動的に再埋め込みされます。
すべてのツールはUnixの慣習に沿っており、stdinから入力を受け取りstdoutに出力するため、grep、xargs、findと組み合わせて使えます。parseとaskにはAPIキーが必要ですが、searchとworkspaceはオフラインで動作します。
主な機能
- 01LlamaParseを使って、PDF、DOCX、PPTXなどの文書をMarkdownに変換します。
- 02多言語対応のmodel2vec埋め込みを使ってローカルで意味検索を行い、行ごとに前後の文脈を返します。
- 03AIエージェントを使ってファイルに関する質問に回答できます。OpenAI互換APIに対応しています。
- 04埋め込みをworkspaceにキャッシュし、ファイルの変更時には再埋め込みします。
- 05stdinとstdoutに対応しており、シェルパイプラインで利用できます。
ユースケース
- テキストや変換済みレポートのフォルダから、完全一致のキーワードではなく概念をもとに情報を検索する。
- 検索やLLMでの利用に先立ち、PDFをMarkdownに変換する。
- ターミナルから、複数の研究論文やメモについて質問する。
- パイプラインを通じて、解析した文書の内容をコーディングエージェントに渡す。
クイックスタート
- 1
npmでsemtoolsをインストールする
npm i -g @llamaindex/semtools - 2
テキストファイルを対象にローカルでキーワード検索を実行する
semtools search "some keywords" *.txt --max-distance 0.3 --n-lines 5 - 3
ドキュメントをMarkdownに解析する(LlamaIndex Cloud APIキーが必要)
semtools parse my_dir/*.pdf
使う前に知っておきたいこと
- parseコマンドとaskコマンドには外部APIキーが必要です。解析にはLlamaParse、askにはOpenAIのAPIキーが必要です。
- npm経由でインストールする際、利用可能なビルド済みバイナリがない場合はRustバイナリがローカルでビルドされるため、RustとCargoが必要になることがあります。
トピック
よくある質問
- semtools とは?
- 文書のMarkdown変換、ローカルの意味検索、AIエージェントによるファイルへの質問に使えるCLIツール。 SemToolsは、parse、search、ask、workspaceの4つのサブコマンドを備えたRust製CLIツールキットです。parseコマンドはPDFやDOCXなどの文書をMarkdownに変換し、デフォルトではLlamaParse APIを使用します。searchコマンドは、多言語対応のmodel2vec埋め込みを使って完全にローカルで意味検索を行い、設定可能な距離しきい値に基づいて、一致した行とその前後の文脈を返します。
- semtools は無料で使えますか?ライセンスは?
- semtools は MIT ライセンスのオープンソースです。商用製品で使う前にライセンス条件を確認してください。
- semtools は今もメンテナンスされていますか?
- 半年以上コミットなし。semtools の最終コミットは 2026年3月11日 です。
- semtools は何に使えますか?
- テキストや変換済みレポートのフォルダから、完全一致のキーワードではなく概念をもとに情報を検索する。 検索やLLMでの利用に先立ち、PDFをMarkdownに変換する。 ターミナルから、複数の研究論文やメモについて質問する。 パイプラインを通じて、解析した文書の内容をコーディングエージェントに渡す。
- semtools のインストール方法は?
- npmでsemtoolsをインストールする: npm i -g @llamaindex/semtools テキストファイルを対象にローカルでキーワード検索を実行する: semtools search "some keywords" *.txt --max-distance 0.3 --n-lines 5 ドキュメントをMarkdownに解析する(LlamaIndex Cloud APIキーが必要): semtools parse my_dir/*.pdf
- semtools はどこで入手できますか?
- ソースコードとインストール手順は GitHub にあります:https://github.com/run-llama/semtools
概要はプロジェクトの README をもとに AI が生成しています。GitHub の数値は毎日更新されます。
関連プロジェクト
OpenAI互換APIで各種モデルを提供する、セルフホスト型推論サーバー
PDF、DOCX、PPTX、XLSX、画像、URLをOCRと構造化フィールド抽出によりMarkdown、JSON、CSV、HTMLに変換するPythonライブラリとWeb UI。
AIコーディングエージェントに届く前にシェルコマンドの出力を絞り込み、圧縮するCLIプロキシ。トークン消費を削減します。
よく使うディレクトリを学習し、主要なシェルから数回のキー入力で移動できる、賢いcdコマンド。