groupultra telegram-search is a new Telegram user chat history search tool.
Some recommendations:
- Telegram group management bot @CSUBOT: Can send private messages to new users, send CloudFlare web verification codes to perform group entry verification, to verify whether users applying to join the group are real humans. It will not disturb other group members.
- Query the public network IP of this machine to access different websites, which can detect proxy shunting configurations and avoid being blocked by AI tools. You can view the IP used by users to access Chinese websites, internationally renowned AI websites, blocked international websites, and allowed international websites.
Project Features
According to the official documentation, Telegram Search provides the following core functions:
- Semantic search: Not only can it search for keywords, but it can also understand the context and meaning of messages
- Vector matching: Based on OpenAI’s embedded vector technology, it achieves similarity search
- Efficient retrieval: More accurate and intelligent retrieval experience than Telegram’s native search
- Multi-platform support: Provides a web interface and desktop application
Dissuasion
First, list some content that is quite different from user expectations, as well as some existing problems, to dissuade some users who are not suitable for this project. And give advice on using other mature projects.
The difference between this project and other traditional projects that do not use AI is semantic search (not only can it search for keywords, but it can also understand the context and meaning of messages). However, I have tried several queries, regardless of whether the “search content” setting item in the search box is checked, basically question sentences cannot be used to search (only one sentence is possible); synonym queries are not possible. Only messages that share common words with the query can be found. I’m not sure if it’s an embedding model problem.
The commands that are often used for front-end and back-end deployment and running need to be compiled. For users who are accustomed to programming languages that do not require pre-compilation and those who are accustomed to programming languages with fast compilation speeds, the waiting time for this project is a bit long.
When you open the front-end for use, and then refresh it after a while, the front-end will show a blank screen, as shown below. Each time you need to restart, pnpm run dev:frontend
, you have to wait for compilation. Deploying it on the server, you have to connect to the server to compile it every time you use it, or before each query, which is really troublesome.

The above problems can be summarized as: groupultra telegram-search, as a project for searching telegram historical messages, is currently not as good as other mature traditional projects to use. Other recommended projects:
落絮 lilydjwg/luoxu: A Telegram userbot to index Chinese and Japanese group contents. — A Telegram userbot to index Chinese and Japanese group contents. , developed by Yiyun from the archlinux cn community, the project has been running stably for many years, see the actual effect: Public group message record search page . Project features:
- The project mainly uses python and does not need to wait for compilation. Although some components need to be compiled, they only need to be compiled once.
- The search string does not distinguish between simplified and traditional Chinese (OpenCC will be used for automatic conversion)
- The search string supports some search syntax
- Running it takes up less resources than groupultra/telegram-search
Luoxu’s problem:
- Installation and deployment may be more troublesome than the groupultra/telegram-search project. (This is a comparison of my actual deployment of two projects. Since I deployed luoxu on the Linux arm32 system, all the dependencies I deployed for luoxu are completely compiled and installed, including PostgreSQL: Linux Compile and Install PostgreSQL 17.4 )
- The default code can only index group and channel messages written in the configuration file. Of course, you can manually modify the code.
Deployment prerequisites and requirements
- AI that can be used, such as Google Gemini, OpenAI, etc.
- Node.js: 20.0 or higher
- RAM: At least 100 MB
- A network that can access the international internet
This tutorial uses completely free Google Gemini, and the online API does not occupy local computing resources. Application introduction: Gemini API KEY application and usage
I am deploying it on a Linux amd64 international server and I am not using Docker. Other operating system environments are for reference only.
When operating according to this tutorial, please pay attention to comparing the official documentation.
Quick start
According to the official documentation, the basic process of using Telegram Search is as follows:
- Installation and configuration: Install the application and configure the necessary APIs
- Connect Telegram account: Log in to your Telegram account
- Synchronize chat history: Select the chat history to be searched and synchronize it
- Start searching: Use the semantic search function to find messages
Installation and configuration
Install Node.js
Visit the Node.js official website to view the documentation and install it. It is recommended to use the latest LTS version. After installation, use the following two commands to confirm the version:
node -v
v22.16.0
npm --version
10.9.2
Because the project uses pnpm, install it. Official documentation: Installation | pnpm , current actual command:
curl -fsSL https://get.pnpm.io/install.sh | sh -
According to the prompt
source /home/opc/.bashrc
Install PostgreSQL database and pgvector plugin
Note that you must install PostgreSQL and the pgvector plugin. Please note that the content of this section may be incomplete.
Note that CentOS and other redhat systems use these installation commands. Be sure to refer to other articles and AI suggestions during operation.
Install the PostgreSQL official YUM repository configuration package
sudo yum install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-9-x86_64/pgdg-redhat-repo-latest.noarch.rpm
The version I chose is 13, you can choose a newer version. Because I have installed PostgreSQL 13 before, the specific command is uncertain. Now
Search the YUM source for available packages related to pgvector
sudo yum search pgvector
Install
sudo yum install -y pgvector_13
sudo systemctl status postgresql-13
Initialize the PostgreSQL 13 data directory (must be executed after the first installation).
sudo /usr/pgsql-13/bin/postgresql-13-setup initdb
Restart the PostgreSQL 13 service to make the changes take effect.
sudo systemctl restart postgresql-13
Switch to the postgres
database administrator user.
sudo -i -u postgres
Start the PostgreSQL command line client.
psql
Set the login password for the postgres
user.
ALTER USER postgres WITH PASSWORD 'Your database password';
Connect to PostgreSQL as the postgres
user via the local host and prompt for a password.
psql -U postgres -h localhost --password
Exit psql
exit
Then return to the initial system user,
exit
Try to enter the database
psql -U postgres -h localhost --password
CREATE DATABASE tg_1;
CREATE EXTENSION IF NOT EXISTS vector;
Configure the project and start it
Because the Google Gemini API has rate limits, I made a little modification:
git clone -b rate https://github.com/cjh0613/groupultra-telegram-search.git
Note that this current rate branch was modified by me entirely on the Github webpage, and no local tests were performed.
The rate limit modification that can be successfully run on my machine is based on this release: v1.0.0-beta.10, commit: c60ac6416dcac6543d2623c49179681ed859e26f, and can only ensure that the code can run without errors. If your code does not run, please try reverting the modifications to the official project after this commit.
If the API you are using does not have rate limits, you can directly use the official repository.
git clone https://github.com/groupultra/telegram-search.git
Copy the configuration file config\config.example.yaml
to the file config\config.yaml
in the same directory.
Refer to the following format to directly modify the configuration file, and refer to the default configuration file description for other parts.
Applying for a telegram api requires a high-quality ip. If you can’t apply, use the author’s. No modification is required. This is for third-party clients, not telegram robots.
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: 'Your database password'
database: tg_1
api:
embedding:
# Embedding provider (openai or ollama) # Do not change this to Gemini here
provider: openai
# Embedding model
model: models/text-embedding-004
# gemini-embedding-exp-03-07
# API key for provider
apiKey: <Your obtained Gemini API KEY>
# Gemini embedding-001 defaults to 3072 dimensions, and the dimensions cannot be customized
dimension: 768
# Optional, for custom API providers
apiBase: 'https://generativelanguage.googleapis.com/v1beta/openai/'
# Start the backend service
pnpm run dev:server
# Start the frontend interface in another terminal window
pnpm run dev:frontend
Check whether the front-end can be accessed successfully:
curl http://localhost:3333/
If it is a local machine, open the browser and visit http://localhost:3333
to use the application.
If it is a remote device, you only need to open the port of the front-end for access. However, it cannot be directly exposed to the public network for public access, otherwise anyone can manipulate your telegram account. You need to configure access permissions yourself. There are many solutions for this.
In addition, for domain name access, you may need to modify apps\frontend\vite.config.ts
to add
allowedHosts: ['The domain name you are visiting']
For other content, please refer to the official documentation.
Other versions of this webpage
This article has versions in multiple languages.
If you would like to leave a comment, please visit the following webpages:
These webpages are view-only, you cannot post comments or messages, but they offer more language options and load faster:
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