groupultra telegram-search は新しい telegram ユーザーのチャット履歴検索ツールです。
いくつかの推奨:
- Telegram グループ管理ボット CSUBOT :新しいユーザーにプライベートメッセージを送信し、CloudFlare のウェブページの確認コードを送信することで、グループ参加の審査を行い、申請したユーザーが本物の人間であるかを確認します。他のグループメンバーに迷惑をかけることはありません。
- このデバイスから異なるウェブサイトへのパブリック IP を確認する 、プロキシの分流設定を検出し、AI ツールによるアカウント停止を避けることができます。ユーザーが中国のウェブサイト、国際的に有名な AI ウェブサイト、停止された国際的なウェブサイト、利用可能な国際的なウェブサイトで使用されている IP を確認できます。
プロジェクトの特徴#
公式文書によると、Telegram Search は以下のコア機能を提供します:
- セマンティック検索:キーワードだけでなく、メッセージの文脈や意味を理解することができます
- ベクトルマッチング:OpenAI の埋め込みベクトル技術に基づいて、類似度検索を実現します
- 効率的な検索:Telegram のネイティブ検索よりも正確で、よりインテリジェントな検索体験を提供します
- マルチプラットフォームサポート:Web インターフェースとデスクトップアプリケーションを提供します
助言#
まず、ユーザーの期待と大きく異なる内容や存在する問題を列挙し、このプロジェクトに適さないユーザーを退けるための助言を行います。他の成熟したプロジェクトの使用を提案します。
このプロジェクトは、AI を使用しない従来のプロジェクトとは異なり、セマンティック検索(キーワードだけでなく、メッセージの文脈や意味を理解することができる)を特徴としています。しかし、現在いくつかのクエリを試みたところ、検索ボックスの設定項目「検索内容」を選択しても、基本的に質問形式での検索はできません(1 つだけ可能でした);類義語検索もできません。共通の単語を含むメッセージしか結果として得られません。embedding model の問題かもしれません。
頻繁に使用するフロントエンド、バックエンドのデプロイコマンドはコンパイルを待たなければならず、事前にコンパイルを必要としないプログラミング言語や、コンパイル速度が速いプログラミング言語に慣れているユーザーにとって、このプロジェクトの待機時間は少し長いです。
フロントエンドを使用してからしばらくして再度リフレッシュすると、フロントエンドがホワイトスクリーンになることがあります。毎回再起動する必要があり、pnpm run dev:frontend
を実行し、コンパイルを待たなければなりません。サーバーにデプロイされている場合、毎回使用するたび、またはクエリの前にサーバーに接続して再コンパイルする必要があり、本当に面倒です。
以上の問題をまとめると、Telegram の過去のメッセージを検索するプロジェクトとして、現在の使用感は他の成熟した従来のプロジェクトに劣ります。他のプロジェクトの推奨:
落絮 lilydjwg/luoxu:中国語と日本語のグループコンテンツをインデックスするための Telegram ユーザーボット。 、archlinux cn コミュニティの依云によって開発され、プロジェクトは数年間安定して運用されています。実際の効果を確認するには:公開されたグループメッセージ履歴検索ウェブサイト 。プロジェクトの特徴:
- プロジェクトは主に python を使用しており、コンパイルを待つ必要がありません。コンポーネントの中にはコンパイルが必要なものもありますが、一度だけコンパイルすれば済みます
- 検索文字列は簡体字と繁体字を区別しません(OpenCC を使用して自動変換します)
- 検索文字列は一部の検索構文をサポートしています
- 実行時のリソース消費は groupultra/telegram-search よりも少し低いです
Luoxu の問題:
- インストールとデプロイは groupultra/telegram-search プロジェクトよりも少し面倒かもしれません。(これは私が実際に二つのプロジェクトをデプロイした比較です。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 の基本的な流れは以下の通りです:
- インストールと設定:アプリケーションをインストールし、必要な API を設定します
- Telegram アカウントに接続:あなたの Telegram アカウントにログインします
- チャット履歴の同期:検索したいチャット履歴を選択して同期します
- 検索を開始:セマンティック検索機能を使用してメッセージを探します
インストールと設定#
Node.js のインストール#
Node.js 公式サイト を訪れてドキュメントを確認し、インストールします。最新の LTS バージョンを使用することをお勧めします。インストールが完了したら、以下の二つのコマンドでバージョンを確認します:
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 のウェブページ上で変更したもので、ローカルではテストしていません。
私のマシンで成功裏に実行できるレート制限の変更は、このリリース:v1.0.0-beta.10、コミット:c60ac6416dcac6543d2623c49179681ed859e26f の基に行われており、コードが動作することを保証するだけで、エラーは出ません。もしあなたのコードが動作しない場合は、このコミットを元に戻して、作者の変更を試みてください。
もし使用している API にレート制限がない場合は、公式リポジトリを直接使用できます。
git clone https://github.com/groupultra/telegram-search.git
設定ファイル config\config.example.yaml
を同じディレクトリの config\config.yaml
ファイルにコピーします。
以下の形式に従って設定ファイルを直接修正し、他の部分はデフォルト設定ファイルの説明に従って修正します。
telegram api 申請には質の良い IP が必要です。もし申請できない場合は、作者のものを使用し、変更しないでください。これは第三者クライアント用であり、telegram ボットではありません。
database:
# データベースの種類:postgres, pglite
type: postgres
# PostgreSQL の設定(type: postgres の場合に使用)
# URL または別のフィールド設定を使用できます
# url: postgres://postgres:postgres@localhost:5432/tg_search
host: localhost
port: 5432
user: postgres
password: 'あなたのデータベースパスワード'
database: tg_1
api:
embedding:
# 埋め込みプロバイダー(openai または ollama) # ここを Gemini に変更しないでください
provider: openai
# 埋め込みモデル
model: models/text-embedding-004
# gemini-embedding-exp-03-07
# プロバイダー用の API キー
apiKey: <あなたが取得した Gemini API KEY>
# Gemini embedding-001 はデフォルトで 3072 次元を出力し、次元をカスタマイズできません
dimension: 768
# オプション、カスタム API プロバイダー用
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 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