一个功能强大的 Telegram 聊天记录搜索工具,支持向量搜索和语义匹配。基于 OpenAI 的语义向量技术,让你的 Telegram 消息检索更智能、更精准。
git clone https://github.com/GramSearch/telegram-search.git
cd telegram-search
pnpm install
pnpm run stub
cp config/config.example.yaml config/config.yaml
docker compose up -d
pnpm run db:migrate
# 启动后端服务
pnpm run dev:server
# 启动前端界面
pnpm run dev:frontend
访问 http://localhost:3333
即可打开搜索界面。
# 同步文件夹和会话信息
pnpm run dev:cli sync
# 监听指定会话的消息
pnpm run dev:cli watch
# 导入 HTML 格式的消息记录
pnpm run dev:cli import -p <path_to_html_files>
# 跳过向量嵌入
pnpm run dev:cli import -p <path_to_html_files> --no-embedding
# 导出消息(支持 database 格式)
pnpm run dev:cli export
# 处理所有消息的向量嵌入
pnpm run dev:cli embed
# 启动搜索服务
pnpm run dev:cli search
本项目使用 OpenAI 的 text-embedding-3-small 模型将文本转换为 1536 维的向量,并使用余弦相似度计算语义相似度。主要实现流程:
// 向量搜索示例
const queryEmbedding = await embedding.generateEmbeddings([query])
const results = await findSimilarMessages(queryEmbedding[0], options)
使用 gram.js 与 Telegram API 交互,实现消息的采集和同步:
采用 PostgreSQL 数据库进行存储,主要表结构:
messages
:存储消息内容、元数据和向量表示chats
:存储会话信息folders
:存储文件夹信息和配置使用分区表和适当的索引优化查询性能:
我们计划开发一个灵活的 Agent 框架,支持:
基于向量数据库和大语言模型,提供更深入的聊天记录分析能力:
这些规划将逐步实现,并根据用户反馈持续优化和调整。我们期待通过这些功能,将 Telegram Search 打造成为一个集数据挖掘、知识管理和社交分析于一体的强大工具。