Skip to content

weekend-project-space/ifeed

Repository files navigation

iFeed

信息过载时代,戴上你的视觉降噪眼镜。

这是一个用 AI 过滤低质量信息、只在重要内容出现时主动通知你的内容分发系统、

AI 过滤信息噪音,重要内容才会主动出现。


🚀 项目简介

iFeed 是一个以 AI 驱动 的智能信息流聚合与推荐分发系统,核心特性包括:

  • 智能聚合: 支持 RSS 订阅与自动聚合。
  • 语义检索: 基于 pgvector 的向量检索与语义匹配,超越传统关键词搜索。
  • AI 赋能: 利用 OpenAI 进行内容摘要、自动分类与标签生成。
  • 混合推荐: 结合 TF-IDF 关键词匹配 + 向量相似度 + 新鲜度权重的混合召回算法。
  • 现代架构: 前后端分离,Spring Boot 3.x + Vue 3 技术栈。

架构流程图

┌──────────────┐
│   RSS / 抓取  │
│ (Feed / Web) │
└──────┬───────┘
       │ 原始文章
       ▼
┌────────────────────┐
│ 内容预处理 Pipeline  │
│ - 去噪 / 去重       │
│ - 正文抽取          │
│ - 语言检测          │
│ - 基础元信息         │
└──────┬─────────────┘
       │ 清洗后文本
       ▼
┌───────────────────────────────┐
│ Chat Model(内容理解,一次性)   │
│ - 分类(Category)             │
│ - 标签(Tags)                 │
│ - 摘要(Summary)              │
│ - 实体 / 主题(可选)            │
└──────┬────────────────────────┘
       │ 结构化内容
       ▼
┌─────────────────────────────────────┐
│ Ranker Model(分类内质量评估)         │
│ - 输入:文章 + 分类 + 标签             │
│ - 输出:质量分 / 等级(A/B/C/D)       │
└──────┬──────────────────────────────┘
       │
       ├──────────────———─┐
       │ 高质量内容         │ 低质量内容
       │ (>= 阈值)         │ (< 阈值)
       ▼                  ▼
┌──────────────────┐   ┌────────────────────┐
│Embedding Pipeline│   │ 冷存 / 低频曝光      │
│ - 向量化          │   │ - 搜索兜底          │
│ - 向量索引        │   │ - 长尾内容池         │
└─────────┬────────┘   └────────────────────┘
          │
          ▼
┌──────────────────────┐
│ 向量库 / 内容索引      │
│ (ANN / pgvector 等)  │
└─────────┬────────────┘
          │
 ┌────────┴─────────┐
 │                  │
 ▼                  ▼

分支一:用户主动获取(Pull 推荐流)

┌──────────────────────┐
│ 用户行为采集           │
│ - 点击 / 阅读时长      │
│ - 收藏 / 分享 / 跳过   │
└─────────┬────────────┘
          ▼
┌──────────────────────────────┐
│ 用户画像构建(Chat + 特征)     │
│ - 兴趣主题                    │
│ - 偏好分类                    │
│ - 阅读深度 / 新鲜度偏好         │
└─────────┬────────────────────┘
          ▼
┌──────────────────────────────┐
│ Recall(多路召回)             │
│ ① U2I 向量召回(主路)         │
│ ② TF-IDF / BM25(兜底)       │
│ ③ 新内容 / 热点               │
└─────────┬────────────────────┘
          ▼
┌──────────────────────────────┐
│ 排序 / 混排                   │
│ - 质量分(Ranker)             │
│ - 相似度                      │
│ - 新鲜度 / 多样性              │
│ - 用户偏好权重                 │
└─────────┬────────────────────┘
          ▼
┌──────────────────────┐
│ 信息流展示             │
└──────────────────────┘

分支二:系统主动推送(Push / Webhook)

                  ┌────────────────────┐
                  │ 高质量内容           │
                  │ (已分类 / 已评分)    │
                  └─────────┬──────────┘
                            │
                            ▼
    ┌──────────────────────────────────────┐
    │ 是否命中 Push 条件?                   │
    │ - 分类 / 标签                         │
    │ - 质量 ≥ 阈值                         │
    │ - 关键词 / 实体                       │
    └─────────────┬────────────────────────┘
                  │
        ┌─────────┼─────────┐
        │                   │
       No                  Yes
        │                   │
        ▼                   ▼
┌────────────────┐  ┌─────────────────────┐
│  进入普通内容流  │  │ Webhook 事件生成      │
└────────────────┘  │ - article_ids       │
                    │ - reason            │
                    └──────────┬──────────┘
                               │
                               ▼
                ┌──────────────────────┐
                │ Webhook 分发器        │
                │ - 选择渠道            │
                └──────────┬───────────┘
                    (是否需要 LLM 概要?)
                           │
                ┌──────────┼──────────┐
                │ No                  │ Yes
                ▼                     ▼
┌────────────────────┐  ┌─────────────────────┐
│ 直接分发            │  │ LLM 概要增强流程      │
│ (模板内容)          │  │ - 精炼概要总结        │
│                    │  │ - 关键信息提取        │
│                    │  │ - 引用原文 URL       │
└─────────┬─────────┘   └──────────┬─────────—┘
          │                        │
          └──────────────┬─────────┘
                         │
                         ▼
                ┌────────────────────┐
                │ 通知内容构建         │
                └─────────┬──────────┘
                          │
               ┌──────────┼──────────┬──────────┐
               │                     │          │
               ▼                     ▼          ▼
┌────────────────┐  ┌────────────────┐  ┌────────────────┐
│ 聊天通知        │  │ 邮件通知         │  │ 其它系统        │
│ IM / Bot       │  │ Email          │  │ 搜索 / BI       │
└────────────────┘  └────────────────┘  └────────────────┘

🧩 技术栈

组件 说明
后端框架 Spring Boot 3.x
前端框架 Vue 3 + Vite
数据库 PostgreSQL + pgvector 插件 (结构化数据 & 向量)
NoSQL MongoDB (非结构化数据 & 缓存)
AI 模块 OpenAI Chat / Embedding API
检索算法 TF-IDF + 向量 + 新鲜度 混合召回
连接池 HikariCP
构建工具 Maven (Backend) / npm (Frontend)

🛠️ 部署与运行

本项目支持多种部署方式,包括 Docker Compose 一键部署和手动构建部署。

👉 详细的部署步骤、环境变量配置及数据库初始化脚本,请参阅 部署指南

快速开始 (Docker)

如果您已安装 Docker 可以快速启动体验:

  1. docker run:
   docker run -d \
    --name ifeed-app \
    -p 8080:8080 \
    -e PG=PG\
    -e PG_DATABASE=i_feed \
    -e PG_USERNAME=PG_USERNAME \
    -e PG_PASSWORD=PG_PASSWORD \
    -e MONGO_DB=MONGO_DB \
    -e MONGO_DB_DATABASE=i_feed \
    -e MONGO_DB_USERNAME=MONGO_DB_USERNAME \
    -e MONGO_DB_PASSWORD=MONGO_DB_PASSWORD \
    -e app.ai.provider.api-key=APIKEY \
    -e app.ai.provider.base-url=BASE_URL \
    -e app.ai.provider.reranker.api-key=APIKEY \
    -e app.ai.provider.reranker.base-url=BASE_URL \
    --restart always \
    ifeed/ifeed:latest
  1. 参考 部署指南 配置环境变量和初始化。

🧠 推荐系统说明

iFeed 支持多层次推荐策略,确保推荐内容的准确性与时效性:

  1. 关键词检索:基于 TF-IDF 算法的语义匹配,处理精确查找需求。
  2. 向量召回:利用 OpenAI Embedding + pgvector 实现语义相似度检索,发现潜在相关内容。
  3. 混合策略:融合 TF-IDF 与向量召回结果,并引入时间衰减因子(新鲜度),综合计算最终得分。

数据库表结构示例(向量表):

CREATE EXTENSION IF NOT EXISTS vector;

CREATE TABLE article_embeddings (
    id BIGSERIAL PRIMARY KEY,
    content TEXT,
    metadata JSONB,
    embedding vector(1024)
);
CREATE INDEX ON article_embeddings USING ivfflat (embedding vector_cosine_ops);

📂 目录结构

ifeed/
├── doc/                # 文档资料
├── frontend/           # Vue 前端项目
├── src/                # Spring Boot 后端源码
│   ├── main/
│   │   ├── java/com/ifeed/
│   │   ├── resources/
│   │   │   ├── application.yml
│   │   │   └── static/
│   └── test/
├── pom.xml             # Maven 配置
├── deployment.md       # 部署指南
└── README.md           # 项目说明

💡 TODO

  • RAG 知识库增强
  • 更多数据源采集器支持
  • 多用户系统完善

📜 License

MIT License © weekend-project-space

About

时间有限,保持专注,戴上信息降噪眼镜。 只在重要时,主动通知你

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors