groupultra telegram-search - це новий інструмент для пошуку історії чатів користувачів telegram.

Деякі рекомендації:

  • Telegram-бот для керування групами @CSUBOT : може надсилати приватні повідомлення новим користувачам, надсилати коди підтвердження веб-сторінки CloudFlare, щоб перевірити, чи є користувачі, які подають заявку на вступ до групи, реальними людьми. Не заважатиме іншим учасникам групи.
  • Перевірте загальнодоступну IP-адресу вашого пристрою для доступу до різних веб-сайтів , може перевірити конфігурацію проксі-сервера, щоб уникнути блокування інструментами штучного інтелекту. Можна переглянути IP-адреси, які використовуються користувачами для доступу до китайських веб-сайтів, відомих міжнародних веб-сайтів зі штучним інтелектом, заблокованих міжнародних веб-сайтів та доступних міжнародних веб-сайтів

Особливості проєкту

Згідно з офіційною документацією, Telegram Search пропонує наступні основні функції:

  • Семантичний пошук: може шукати не лише ключові слова, але й розуміти контекст і значення повідомлень
  • Векторне зіставлення: на основі технології векторного вбудовування OpenAI для реалізації пошуку за схожістю
  • Ефективний пошук: більш точний і розумний досвід пошуку, ніж власний пошук Telegram
  • Підтримка багатьох платформ: надає веб-інтерфейс і настільний застосунок

Відмова від відповідальності

Перш за все, наведу деякий вміст, який значно відрізняється від очікувань користувачів, а також деякі проблеми, щоб відмовити частину користувачів, які не підходять для цього проєкту. І надайте пропозиції щодо використання інших зрілих проєктів.

Відмінність цього проєкту від інших традиційних проєктів, які не використовують штучний інтелект, полягає в семантичному пошуку (може шукати не лише ключові слова, але й розуміти контекст і значення повідомлень). Однак зараз я спробував кілька запитів, незалежно від того, чи встановлено прапорець у полі пошуку «Зміст пошуку», в основному неможливо шукати за допомогою запитань (можливо лише одне речення); неможливо шукати синоніми. Можна знайти лише повідомлення, у яких результат і запит мають спільні слова. Не впевнений, чи це проблема моделі вбудовування.

Команди, які часто використовуються для запуску розгортання інтерфейсу та серверної частини, потрібно компілювати, що займає багато часу для користувачів, які звикли до мов програмування, які не потребують попередньої компіляції, і мов програмування, які звикли до швидкої компіляції.

Під час відкриття інтерфейсу та подальшого оновлення, інтерфейс відображатиме білий екран, як показано нижче. Кожного разу потрібно перезапускати, pnpm run dev:frontend , щоб дочекатися компіляції. Розгортання на сервері, кожного разу, коли використовуєте його, або, інакше кажучи, кожного разу перед запитом, потрібно підключитися до сервера та скомпілювати його один раз, що справді клопітно.

groupultra/telegram-search Проблема білого екрану інтерфейсу проєкту

Підсумовуючи вищезазначені проблеми, groupultra telegram-search, як проєкт для пошуку історії повідомлень telegram, зараз не такий зручний у використанні, як інші зрілі традиційні проєкти. Інші рекомендовані проєкти:

Luoxu lilydjwg/luoxu: A Telegram userbot to index Chinese and Japanese group contents. — Бот користувача Telegram для індексування вмісту китайських і японських груп. , розроблений archlinux cn community Yiyun, проєкт стабільно працює багато років, перегляньте фактичний ефект: Сторінка пошуку загальнодоступних записів повідомлень групи . Особливості проєкту:

  • Проєкт в основному використовує python, не потрібно чекати компіляції. Хоча деякі компоненти потрібно компілювати, їх потрібно компілювати лише один раз
  • Пошук рядків не розрізняє спрощену та традиційну китайську (автоматично перетворюватиме за допомогою OpenCC)
  • Пошук рядків підтримує деякий синтаксис пошуку
  • Займає менше ресурсів під час роботи, ніж groupultra/telegram-search

Проблеми Luoxu:

  • Встановлення та розгортання може бути дещо клопітним, ніж проєкт groupultra/telegram-search. (Це моє фактичне порівняння розгортання двох проєктів. Оскільки я розгортаю luoxu в системі Linux arm32, усі залежності, які я розгортаю для luoxu, повністю скомпіловані та встановлені, включаючи PostgreSQL: Linux Компіляція та встановлення PostgreSQL 17.4 )
  • Код за замовчуванням може індексувати лише повідомлення групи та каналу, записані у файлі конфігурації, звичайно, ви можете змінити код вручну

Передумови та вимоги до розгортання

  • Штучний інтелект, який можна використовувати, наприклад Google Gemini, OpenAI тощо.
  • Node.js: версія 20.0 або вище
  • RAM: щонайменше 100 МБ
  • Мережа, яка може отримати доступ до міжнародного Інтернету

У цьому підручнику використовується повністю безкоштовний Google Gemini, онлайн API не займає локальні обчислювальні ресурси. Вступ до застосування: Заявка на отримання ключа Gemini API та використання

Я розгорнув його на міжнародному сервері 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 використовують ці команди встановлення. Під час роботи обов’язково зверніться до інших статей в Інтернеті та порад штучного інтелекту.

Встановіть офіційний пакет конфігурації репозиторію YUM PostgreSQL

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 було встановлено раніше, конкретна команда не визначена. Зараз

Знайдіть доступні пакети, пов’язані з pgvector у джерелі YUM

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 'Ваш пароль бази даних';

Підключіться до PostgreSQL як користувач postgres через локальний хост і введіть пароль.

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 була змінена мною на веб-сторінці Github, і локально не було проведено жодних тестів.

Обмеження швидкості, яке може успішно працювати на моїй машині, базується на цьому випуску: v1.0.0-beta.10, commit: c60ac6416dcac6543d2623c49179681ed859e26f, який просто гарантує, що код може працювати без повідомлень про помилки. Якщо ваш код не працює, спробуйте скасувати зміни офіційного проєкту після цього 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>
    # 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