groupultra telegram-search 是一款新的 telegram 用戶聊天記錄搜索工具。
一些推薦:
- Telegram 群組管理機器人 CSUBOT :可以私信新用戶,發送 CloudFlare 的網頁驗證碼,以此來進行入群審核,用於驗證申請進入群組的用戶是否是真實人類。不會打擾到群組內的其他群友。
- 查詢本機訪問不同網站的公網 IP ,可以檢測代理分流配置,避免被 AI 工具封號。可以查看用戶訪問 中國網站,國際知名 AI 網站,被封的國際網站,可以的國際網站 所使用的 IP
項目特點#
據官方文檔, Telegram Search 提供以下核心功能:
- 語義搜索:不僅可以搜索關鍵詞,還能理解消息的上下文和含義
- 向量匹配:基於 OpenAI 的嵌入向量技術,實現相似度搜索
- 高效檢索:比 Telegram 原生搜索更精準、更智能的檢索體驗
- 多平台支持:提供 Web 界面和桌面應用程序
勸退#
首先,先羅列一些和用戶期望相差比較大的內容,以及一些存在的問題,勸退一部分不適合的這個項目的用戶。並給出使用其他成熟項目的建議。
這個項目與其他不使用 AI 的傳統項目的區別在於語義搜索(不僅可以搜索關鍵詞,還能理解消息的上下文和含義)。然而目前我嘗試若干查詢,無論是否勾選搜索框的設置項 “搜索內容”,基本上均無法用問句搜索(只有一句可以);無法近義詞查詢。只能查詢到結果和查詢有共用詞的消息。不確定是不是 embedding model 的問題。
經常要使用的前端、後端部署運行的命令,要等編譯,對於習慣了不需要提前編譯的編程語言 和 習慣了編譯速度快的編程語言 的用戶來說,這個項目的等待時間有一些長。
打開前端使用,然後隔一會兒之後,再刷新使用的時候,前端會出現白屏,如下所示。每次需要重新啟動, pnpm run dev:frontend
,要等待編譯。部署在伺服器上,每次使用,或者說每次查詢之前要還要連接伺服器編譯一次,確實麻煩。
以上問題總結起來就是,作為一個搜索 telegram 歷史消息的項目,目前使用起來,不如其他成熟的傳統項目。其他項目推薦:
落絮 lilydjwg/luoxu:一個用於索引中文和日文群組內容的 Telegram 用戶機器人。 --- A Telegram userbot to index Chinese and Japanese group contents. ,由 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 網頁上修改的,本地沒有進行任何測試。
本人機器上可以成功運行的速率限制修改是在這個 release: v1.0.0-beta.10, commit: c60ac6416dcac6543d2623c49179681ed859e26f 的基礎上,只是能確保代碼能跑,沒有報錯。如果您的代碼不能運行的話,請嘗試 revert 這個 commit 之後作者的修改。
如果您使用的 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 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