groupultra telegram-search est un nouvel outil de recherche dans l’historique des conversations des utilisateurs Telegram.

Quelques recommandations :

  • Robot de gestion de groupe Telegram @CSUBOT : permet d’envoyer des messages privés aux nouveaux utilisateurs et d’envoyer un code de vérification de page CloudFlare pour effectuer une vérification d’entrée de groupe, afin de vérifier si les utilisateurs qui demandent à entrer dans le groupe sont de véritables êtres humains. Cela ne dérangera pas les autres membres du groupe.
  • Vérifier l’IP publique de la machine locale accédant à différents sites Web : permet de détecter la configuration du partage de proxy, afin d’éviter d’être banni par les outils d’IA. Permet de visualiser l’IP utilisée par les utilisateurs pour accéder aux sites Web chinois, aux sites Web d’IA de renommée internationale et aux sites Web internationaux bloqués.

Caractéristiques du projet

Selon la documentation officielle, Telegram Search offre les fonctionnalités principales suivantes :

  • Recherche sémantique : ne se contente pas de rechercher des mots clés, mais comprend également le contexte et la signification des messages.
  • Correspondance vectorielle : basée sur la technologie de vecteurs d’intégration d’OpenAI, pour une recherche de similarité.
  • Récupération efficace : une expérience de récupération plus précise et plus intelligente que la recherche native de Telegram.
  • Prise en charge multiplateforme : offre une interface Web et une application de bureau.

Mise en garde

Tout d’abord, énumérons certains contenus qui diffèrent considérablement des attentes des utilisateurs, ainsi que certains problèmes existants, afin de dissuader certains utilisateurs qui ne conviennent pas à ce projet. Et donnez des suggestions pour l’utilisation d’autres projets matures.

La différence entre ce projet et d’autres projets traditionnels qui n’utilisent pas l’IA réside dans la recherche sémantique (ne se contente pas de rechercher des mots clés, mais comprend également le contexte et la signification des messages). Cependant, pour le moment, j’ai essayé plusieurs requêtes, que la case à cocher “Rechercher le contenu” soit cochée ou non, il est pratiquement impossible de rechercher avec une question (une seule fonctionne) ; impossible de rechercher des synonymes. Seuls les messages avec des mots en commun avec la requête peuvent être trouvés. Je ne sais pas si c’est un problème avec le modèle d’intégration.

Les commandes fréquemment utilisées pour le déploiement et l’exécution du frontend et du backend doivent être compilées. Pour les utilisateurs habitués aux langages de programmation qui n’ont pas besoin d’être compilés à l’avance et aux langages de programmation avec une vitesse de compilation rapide, le temps d’attente pour ce projet est un peu long.

Lorsque le frontend est ouvert, puis actualisé après un certain temps, l’écran devient blanc, comme indiqué ci-dessous. Chaque fois, il faut redémarrer, pnpm run dev:frontend et attendre la compilation. Déployer sur un serveur, il faut recompiler à chaque utilisation, ou plutôt avant chaque requête, ce qui est vraiment pénible.

groupultra/telegram-search Problème d’écran blanc de l’interface frontend du projet

En résumé, groupultra telegram-search, en tant que projet de recherche d’anciens messages Telegram, n’est pas aussi bon que d’autres projets traditionnels matures. Autres projets recommandés :

落絮 lilydjwg/luoxu : Un robot utilisateur Telegram pour indexer le contenu des groupes chinois et japonais. — A Telegram userbot to index Chinese and Japanese group contents. , développé par Yiyun de la communauté archlinux cn, le projet fonctionne de manière stable depuis de nombreuses années, voir les résultats réels : Page Web de recherche publique des enregistrements de messages de groupe . Caractéristiques du projet :

  • Le projet utilise principalement Python et n’a pas besoin d’attendre la compilation. Bien que certains composants doivent être compilés, ils ne doivent être compilés qu’une seule fois.
  • La chaîne de recherche ne fait pas de distinction entre les caractères simplifiés et traditionnels (OpenCC sera utilisé pour la conversion automatique).
  • La chaîne de recherche prend en charge certaines syntaxes de recherche.
  • L’exécution consomme moins de ressources que groupultra/telegram-search.

Problèmes de Luoxu :

  • L’installation et le déploiement peuvent être plus difficiles que le projet groupultra/telegram-search. (C’est ma comparaison réelle du déploiement des deux projets. Étant donné que je déploie luoxu sur un système Linux arm32, toutes mes dépendances pour le déploiement de luoxu sont entièrement compilées et installées, y compris PostgreSQL : Compilation et installation de PostgreSQL 17.4 sur Linux)
  • Le code par défaut ne peut indexer que les messages de groupes et de canaux écrits dans le fichier de configuration, bien sûr, vous pouvez modifier le code manuellement.

Prérequis et exigences de déploiement

  • IA utilisable, comme Google Gemini, OpenAI, etc.
  • Node.js : version 20.0 ou supérieure
  • RAM : au moins 100 Mo
  • Un réseau capable d’accéder à l’Internet international

Ce didacticiel utilise Google Gemini, entièrement gratuit, l’API en ligne n’occupe pas de ressources de calcul locales. Demande de présentation : Demande et utilisation de la clé API Gemini

Je suis déployé sur un serveur international Linux amd64, je n’utilise pas Docker, les autres environnements de système d’exploitation sont donnés à titre indicatif uniquement.

Veuillez comparer avec la documentation officielle lorsque vous suivez ce didacticiel.

Démarrage rapide

Selon la documentation officielle, le processus de base d’utilisation de Telegram Search est le suivant :

  1. Installation et configuration : installez l’application et configurez les API nécessaires.
  2. Connexion au compte Telegram : connectez-vous à votre compte Telegram.
  3. Synchronisation de l’historique de conversation : sélectionnez l’historique de conversation à rechercher pour la synchronisation.
  4. Démarrer la recherche : utilisez la fonction de recherche sémantique pour trouver des messages.

Installation et configuration

Installer Node.js

Consultez la documentation sur le site Web de Node.js pour l’installation. Il est recommandé d’utiliser la dernière version LTS, et d’utiliser les deux commandes suivantes pour confirmer la version après l’installation :

node -v
v22.16.0

npm --version
10.9.2

Étant donné que le projet utilise pnpm, installez-le. Documentation officielle : Installation | pnpm , commande actuelle réelle :

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

Selon l’invite

source /home/opc/.bashrc

Installer la base de données PostgreSQL et le plugin pgvector

Notez qu’il est nécessaire d’installer PostgreSQL et le plugin pgvector. Notez que le contenu de cette section peut être incomplet.

Notez que CentOS et les autres systèmes Redhat utilisent ces commandes d’installation. Lors de l’utilisation, veillez à vous référer à d’autres articles sur Internet et aux suggestions de l’IA.

Installer le paquet de configuration du référentiel YUM officiel de PostgreSQL

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

La version que j’ai choisie est 13, vous pouvez choisir une version plus récente. Car j’avais déjà installé PostgreSQL 13 auparavant, la commande spécifique n’est pas certaine. maintenant

Rechercher les paquets disponibles liés à pgvector dans la source YUM

sudo yum search pgvector

Installer

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

Initialiser le répertoire de données PostgreSQL 13 (doit être exécuté après la première installation).

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

Redémarrer le service PostgreSQL 13 pour que les modifications prennent effet.

sudo systemctl restart postgresql-13

Passer à l’utilisateur administrateur de la base de données postgres.

sudo -i -u postgres

Démarrer le client de ligne de commande PostgreSQL.

psql

Définir le mot de passe de connexion de l’utilisateur postgres.

ALTER USER postgres WITH PASSWORD 'Votre mot de passe de base de données';

Se connecter à PostgreSQL en tant qu’utilisateur postgres via l’hôte local, et être invité à entrer le mot de passe.

psql -U postgres -h localhost --password

Quitter psql

exit

Puis revenir à l’utilisateur système initial,

exit

Essayer d’entrer dans la base de données

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

Configurer le projet et démarrer

Étant donné que l’API Google Gemini a une limite de débit, j’ai apporté une petite modification :

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

Notez que cette branche de débit actuelle a été entièrement modifiée sur la page Web Github et qu’aucun test local n’a été effectué.

La modification de la limite de débit qui peut être exécutée avec succès sur ma machine est basée sur cette version : v1.0.0-beta.10, commit : c60ac6416dcac6543d2623c49179681ed859e26f, mais elle peut seulement s’assurer que le code peut fonctionner sans erreur. Si votre code ne peut pas fonctionner, essayez de rétablir la modification du projet officiel après ce commit.

Si l’API que vous utilisez n’a pas de limite de débit, vous pouvez utiliser directement le référentiel officiel.

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

Copiez le fichier de configuration config\config.example.yaml dans le même répertoire config\config.yaml.

Modifiez directement le fichier de configuration en vous référant au format suivant, et reportez-vous aux instructions du fichier de configuration par défaut pour les autres parties.

La demande d’API Telegram nécessite une IP de bonne qualité. Si vous ne pouvez pas la demander, utilisez celle de l’auteur, pas besoin de la modifier. Ceci est utilisé pour les clients tiers, pas pour les robots 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: 'Votre mot de passe de base de données'
  database: tg_1

api:
  embedding:
    # Embedding provider (openai or ollama) # Ne changez pas ceci en Gemini
    provider: openai
    # Embedding model
    model: models/text-embedding-004
    # gemini-embedding-exp-03-07
    # API key for provider
    apiKey: <Votre clé API Gemini obtenue>
    # Gemini embedding-001 génère par défaut 3072 dimensions, ne peut pas personnaliser les dimensions
    dimension: 768
    # Optional, for custom API providers
    apiBase: 'https://generativelanguage.googleapis.com/v1beta/openai/'
# Démarrer le service backend
pnpm run dev:server

# Démarrer l'interface frontend dans une autre fenêtre de terminal
pnpm run dev:frontend

Vérifiez si l’interface frontend peut être consultée avec succès :

curl http://localhost:3333/

Si c’est une machine locale, ouvrez le navigateur et accédez à http://localhost:3333 pour utiliser l’application

S’il s’agit d’un appareil distant, il vous suffit d’ouvrir le port de l’interface frontend pour y accéder. Mais ne l’exposez pas directement sur le réseau public pour le rendre public, sinon n’importe qui peut contrôler votre compte Telegram. Vous devez configurer vous-même les autorisations d’accès, il existe de nombreuses solutions.

De plus, pour l’accès au domaine, vous devrez peut-être modifier apps\frontend\vite.config.ts pour ajouter

 allowedHosts: ['Votre nom de domaine d'accès']

Pour le reste, veuillez consulter la documentation officielle.

Autres versions de cette page Web

Cet article existe en plusieurs langues.

Si vous souhaitez publier un commentaire, veuillez visiter les pages Web suivantes :

ZH EN ZH-TW JA

Ces pages Web prennent uniquement en charge la navigation et ne permettent pas de publier des commentaires ou des messages, mais elles offrent davantage d’options linguistiques et des temps de chargement plus courts :

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