地球人

地球人的空间

世上本没有路
tg_channel
mastodon
pleroma

如何运行 groupultra telegram-search 代码

groupultra telegram-search 是一款新的 telegram 用户聊天记录搜索工具。

一些推荐:

  • Telegram 群组管理机器人 CSUBOT :可以私信新用户,发送 CloudFlare 的网页验证码,以此来进行入群审核,用于验证申请进入群组的用户是否是真实人类。不会打扰到群组内的其他群友。
  • 查询本机访问不同网站的公网 IP ,可以检测代理分流配置,避免被 AI 工具封号。可以查看用户访问 中国网站,国际知名 AI 网站,被封的国际网站,可以的国际网站 所使用的 IP

项目特点#

据官方文档, Telegram Search 提供以下核心功能:

  • 语义搜索:不仅可以搜索关键词,还能理解消息的上下文和含义
  • 向量匹配:基于 OpenAI 的嵌入向量技术,实现相似度搜索
  • 高效检索:比 Telegram 原生搜索更精准、更智能的检索体验
  • 多平台支持:提供 Web 界面和桌面应用程序

劝退#

首先,先罗列一些和用户期望相差比较大的内容,以及一些存在的问题问题,劝退一部分不适合的这个项目的用户。并给出使用其他成熟项目的建议。

这个项目与其他不使用 AI 的传统项目的区别在于语义搜索(不仅可以搜索关键词,还能理解消息的上下文和含义)。然而目前我尝试若干查询,无论是否勾选搜索框的设置项 “搜索内容”,基本上均无法用问句搜索(只有一句可以);无法近义词查询。只能查询到结果和查询有共用词的消息。不确定是不是 embedding model 的问题。

经常要使用的前端、后端部署运行的命令,要等编译,对于 习惯了不需要提前编译的编程语言 和 习惯了编译速度快的编程语言 的用户来说,这个项目的等待时间有一些长。

打开前端使用,然后隔一会儿之后,再刷新使用的时候,前端会出现白屏,如下所示。每次需要重新启动, pnpm run dev:frontend ,要等待编译。部署在服务器上,每次使用,或者说每次查询之前要还要连接服务器编译一次,确实麻烦。

groupultra/telegram-search 项目前端白屏问题

以上问题总结起来就是,作为一个搜索 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 的基本流程如下:

  1. 安装与配置:安装应用程序并配置必要的 API
  2. 连接 Telegram 账号:登录你的 Telegram 账号
  3. 同步聊天记录:选择需要搜索的聊天记录进行同步
  4. 开始搜索:使用语义搜索功能查找消息

安装与配置#

安装 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

这些网页仅支持浏览,无法发表评论或留言,但提供了更多语言选项,并且加载时间更短:

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

加载中...
此文章数据所有权由区块链加密技术和智能合约保障仅归创作者所有。