groupultra telegram-search は、新しい telegram ユーザーのチャット履歴検索ツールです。

いくつかのおすすめ:

  • Telegram グループ管理ボット @CSUBOT :新しいユーザーにプライベートメッセージを送信し、CloudFlare のウェブページ検証コードを送信して、グループへの参加審査を行うことができます。これにより、グループへの参加を申請するユーザーが本物の人間であるかどうかを検証します。グループ内の他のメンバーを邪魔することはありません。
  • 本機が異なるウェブサイトにアクセスする際のグローバル IP アドレスを照会 は、プロキシのルーティング構成を検出し、AI ツールによるアカウント停止を回避できます。ユーザーが 中国のウェブサイト、国際的に有名な AI ウェブサイト、ブロックされた国際ウェブサイト、許可された国際ウェブサイト にアクセスする際に使用される IP を確認できます。

プロジェクトの特長

公式ドキュメントによると、Telegram Search は次の主要機能を提供します。

  • セマンティック検索:キーワードを検索できるだけでなく、メッセージのコンテキストと意味を理解できます
  • ベクターマッチング:OpenAI の埋め込みベクター技術に基づいて、類似度検索を実現します
  • 効率的な検索:Telegram のネイティブ検索よりも正確でスマートな検索体験
  • マルチプラットフォームサポート:Web インターフェースとデスクトップアプリケーションを提供します

撤退勧告

まず、ユーザーの期待と大きく異なる内容や、いくつかの問題点を列挙し、このプロジェクトに適さない一部のユーザーに撤退を勧告します。そして、他の成熟したプロジェクトの使用を提案します。

このプロジェクトと AI を使用しない従来のプロジェクトとの違いは、セマンティック検索(キーワードを検索できるだけでなく、メッセージのコンテキストと意味を理解できる)です。しかし、現在、いくつかのクエリを試しましたが、検索ボックスの設定項目「検索内容」をチェックするかどうかにかかわらず、基本的に質問文で検索することはできません(1 つだけ可能)。同義語による検索もできません。クエリと共通の単語を含むメッセージのみを検索できます。embedding model の問題かどうかは不明です。

頻繁に使用するフロントエンド、バックエンドのデプロイおよび実行コマンドは、コンパイルを待つ必要があり、事前にコンパイルする必要のないプログラミング言語やコンパイル速度の速いプログラミング言語に慣れているユーザーにとって、このプロジェクトの待ち時間は少し長いです。

フロントエンドを開いて使用し、しばらくしてからリフレッシュして使用すると、フロントエンドが真っ白になることがあります。毎回再起動する必要があります pnpm run dev:frontend 、コンパイルを待つ必要があります。サーバーにデプロイすると、毎回使用する前、またはクエリを実行する前にサーバーに接続してコンパイルする必要があり、確かに面倒です。

groupultra/telegram-search プロジェクトのフロントエンドのホワイトスクリーンの問題

上記の問題をまとめると、groupultra telegram-search は telegram の過去のメッセージを検索するプロジェクトとして、現在のところ、他の成熟した従来のプロジェクトほど使いやすくありません。他のプロジェクトの推奨事項:

落絮 lilydjwg/luoxu:一个用于索引中文和日文群组内容的 Telegram 用户机器人。 — A Telegram userbot to index Chinese and Japanese group contents. は、archlinux cn コミュニティの依云によって開発され、プロジェクトは長年安定して実行されており、実際の効果を確認するには、 公開されているグループメッセージの検索ウェブページ を参照してください。プロジェクトの特長:

  • プロジェクトは主に python を使用しており、コンパイルを待つ必要はありません。コンパイルが必要なコンポーネントはありますが、コンパイルは 1 回だけで済みます
  • 検索文字列は簡体字と繁体字を区別しません(OpenCC を使用して自動的に変換されます)
  • 検索文字列はいくつかの検索構文をサポートします
  • 実行時に使用するリソースは groupultra/telegram-search よりも少なくなります

Luoxu の問題点:

  • インストールとデプロイは groupultra/telegram-search プロジェクトよりも面倒かもしれません。(これは私が実際に 2 つのプロジェクトをデプロイした比較です。Linux arm32 システムに luoxu をデプロイしたため、luoxu のすべての依存関係は完全にコンパイルしてインストールされており、PostgreSQL も含まれます: Linux で PostgreSQL 17.4 をコンパイルしてインストールする方法
  • デフォルトのコードは、構成ファイルに記述されたグループとチャンネルのメッセージのみをインデックスできます。もちろん、手動でコードを変更することもできます

デプロイの前提条件と要件

  • 使用可能な AI(Google Gemini、OpenAI など)。
  • Node.js:20.0 以降
  • RAM:少なくとも 100 MB
  • 国際インターネットにアクセスできるネットワーク

このチュートリアルでは、完全に無料の Google Gemini を使用し、オンライン API はローカルの計算リソースを占有しません。申請の紹介:Gemini API KEY の申請と使用

私は Linux amd64 の国際サーバーにデプロイしており、Docker は使用していません。他のオペレーティングシステム環境は参考としてのみ提供します。

このチュートリアルに従って操作する場合は、公式ドキュメントと比較してください。

クイックスタート

公式ドキュメントによると、Telegram Search の基本的な流れは次のとおりです。

  1. インストールと構成:アプリケーションをインストールし、必要な API を構成します
  2. Telegram アカウントの接続:Telegram アカウントにログインします
  3. チャット履歴の同期:検索するチャット履歴を選択して同期します
  4. 検索の開始:セマンティック検索機能を使用してメッセージを検索します

インストールと構成

Node.js のインストール

Node.js 公式サイト にアクセスしてドキュメントを確認し、インストールします。最新の LTS バージョンを使用することをお勧めします。インストールが完了したら、次の 2 つのコマンドを使用してバージョンを確認します。

node -v
v22.16.0

npm --version
10.9.2

プロジェクトでは pnpm を使用しているため、インストールを実行します。公式ドキュメント: Installation | pnpm 、現在の実際のコマンド:

curl -fsSL https://get.pnpm.io/install.sh | sh -

プロンプトに従って

source /home/opc/.bashrc

PostgreSQL データベースとプラグイン pgvector のインストール

PostgreSQL とプラグイン pgvector をインストールする必要があることに注意してください。このセクションの内容は不完全である可能性があることに注意してください

CentOS などの redhat システムでは、これらのインストールコマンドを使用することに注意してください。操作を行う際は、必ず他のオンライン記事と AI の推奨事項を参照してください。

PostgreSQL 公式 YUM リポジトリ構成パッケージをインストールします

sudo yum install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-9-x86_64/pgdg-redhat-repo-latest.noarch.rpm

私が選択したバージョンは 13 です。より新しいバージョンを選択することもできます。以前に PostgreSQL 13 をインストールしたことがあるため、具体的なコマンドは不明です。現在

YUM ソースで pgvector に関連する利用可能なパッケージを検索します

sudo yum search pgvector

インストール

sudo yum install -y pgvector_13
sudo systemctl status postgresql-13

PostgreSQL 13 データディレクトリを初期化します(初回インストール後に必ず実行してください)。

sudo /usr/pgsql-13/bin/postgresql-13-setup initdb

PostgreSQL 13 サービスを再起動して、変更を有効にします。

sudo systemctl restart postgresql-13

postgres データベース管理者ユーザーに切り替えます。

sudo -i -u postgres

PostgreSQL コマンドラインクライアントを起動します。

psql

postgres ユーザーのログインパスワードを設定します。

ALTER USER postgres WITH PASSWORD 'あなたのデータベースパスワード';

postgres ユーザーとしてローカルホスト経由で PostgreSQL に接続し、パスワードの入力を求められます。

psql -U postgres -h localhost --password

psql を終了します

exit

次に、初期システムユーザーに戻ります。

exit

データベースへのアクセスを試みます

psql -U postgres -h localhost --password
CREATE DATABASE tg_1;
CREATE EXTENSION IF NOT EXISTS vector;

プロジェクトの構成と起動

Google Gemini API にはレート制限があるため、少し変更を加えました。

git clone -b rate https://github.com/cjh0613/groupultra-telegram-search.git

現在の rate branch ブランチは、私が Github のウェブページ上で完全に修正したものであり、ローカルでは一切テストを行っていません。

私のマシンで正常に実行できるレート制限の修正は、この release: v1.0.0-beta.10, commit: c60ac6416dcac6543d2623c49179681ed859e26f に基づいており、コードが実行可能であることを確認できるだけで、エラーは発生していません。コードが実行できない場合は、この commit を revert した後、公式プロジェクトの変更を試してください。

API にレート制限がない場合は、公式リポジトリを直接使用できます

git clone https://github.com/groupultra/telegram-search.git

構成ファイル config\config.example.yaml を同じディレクトリ config\config.yaml ファイルにコピーします。

次の形式を参照して構成ファイルを直接変更し、他の部分はデフォルトの構成ファイルの説明を参照して変更します。

telegram api の申請には質の高い ip が必要です。申請できない場合は、作者のものを使用してください。修正する必要はありません。これはサードパーティ製クライアント用であり、telegram ボット用ではありません。

database:
  # Database type: postgres, pglite
  type: postgres
  # PostgreSQL configuration (used when type: postgres)
  # Can use URL or separate field configuration
  # url: postgres://postgres:postgres@localhost:5432/tg_search
  host: localhost
  port: 5432
  user: postgres
  password: 'あなたのデータベースパスワード'
  database: tg_1

api:
  embedding:
    # Embedding provider (openai or ollama) # ここは Gemini に変更しないでください
    provider: openai
    # Embedding model
    model: models/text-embedding-004
    # gemini-embedding-exp-03-07
    # API key for provider
    apiKey: <取得した Gemini API KEY>
    # Gemini embedding-001 のデフォルト出力は 3072 次元で、次元をカスタマイズできません
    dimension: 768
    # Optional, for custom API providers
    apiBase: 'https://generativelanguage.googleapis.com/v1beta/openai/'
# バックエンドサービスを起動します
pnpm run dev:server

# 別のターミナルウィンドウでフロントエンドインターフェースを起動します
pnpm run dev:frontend

フロントエンドが正常にアクセスできるかどうかを確認します。

curl http://localhost:3333/

ローカルマシンの場合は、ブラウザを開いて http://localhost:3333 にアクセスするだけでアプリケーションを使用できます

リモートデバイスの場合は、フロントエンドのポートを開放してアクセスするだけです。ただし、パブリックネットワークに直接公開することはできません。そうしないと、誰でもあなたの telegram アカウントを操作できてしまいます。アクセス権限を自分で構成する必要があります。このソリューションはたくさんあります。

また、ドメイン名でアクセスする場合は、apps\frontend\vite.config.ts に次を追加する必要があるかもしれません

 allowedHosts: ['アクセスするドメイン名']

その他の内容については、公式ドキュメントをご覧ください。

本ウェブページのその他のバージョン

この記事には複数の言語バージョンがあります。

コメントを投稿する場合は、次のウェブページにアクセスしてください。

ZH EN ZH-TW JA

これらのウェブページは閲覧のみをサポートしており、コメントやメッセージを投稿することはできませんが、より多くの言語オプションを提供し、ロード時間が短縮されています。

ZH EN ZH-TW JA RU KO CS ES AR FR PT DE TR IT NL SV DA FI PL UK HE RO HU EL HR TH HI BN ID SW VI NO