V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
nfksuk
V2EX  ›  程序员

开源 部署了一个 AI 版 rss 阅读器 接入 AI 优化 向量搜索 自定义抓取规则 支持 AI 整理

  •  
  •   nfksuk · 9 小时 53 分钟前 · 889 次点击
    一个功能完善的 RSS 订阅管理器,支持多用户、分类管理、定时抓取、自定义抓取规则以及 AI 翻译和摘要功能。

    github: https://github.com/inspoaibox/RSS-feed-manager

    ![]( https://telegraph-image-92x.pages.dev/file/8384ad8a1b5bdf291764f-7767f7ae8dfd15a4d7.png)

    ![]( https://telegraph-image-92x.pages.dev/file/c2021908651f43e59c121-9a254d668e9da19559.png)

    ![]( https://telegraph-image-92x.pages.dev/file/22193a747d4b489b699c6-66edfc0c9e8d47459d.png)

    ![]( https://telegraph-image-92x.pages.dev/file/676d1e8ca26b7a856b3c8-168aaf8991b0d9949c.png)

    ![]( https://telegraph-image-92x.pages.dev/file/b7e93b3740e6733d752d9-fa5d3855afe90c68d6.png)

    ![]( https://telegraph-image-92x.pages.dev/file/5c58615b17fec9039a64b-3ef641bde5d81c4ef1.png)

    ![]( https://telegraph-image-92x.pages.dev/file/12e9affa6e78c662896e6-038a85072b06e928bb.png)

    ![]( https://telegraph-image-92x.pages.dev/file/a116db02d21531fbea854-7c7330673cd66c8300.png)


    ## 功能特性

    - 📰 RSS/Atom 订阅源管理
    - 📁 分类管理
    - 📖 文章阅读(已读/未读、收藏)
    - 🔍 全文搜索和排序
    - ⏰ 定时自动抓取(可设置 1 分钟 - 24 小时间隔)
    - 🌐 Playwright 浏览器模式(支持 Cloudflare 保护的网站)
    - 🤖 AI 自动翻译和整理(支持 OpenAI 、Gemini 及兼容 API )
    - 🧠 **AI 智能内容分析**(语义搜索 + AI 总结)
    - 🕷️ 自定义抓取规则
    - 📦 OPML 导入导出
    - 💾 配置备份恢复

    ## 技术栈

    | 后端 | 前端 |
    |------|------|
    | Python 3.11+ | React 18 |
    | FastAPI | TypeScript |
    | SQLAlchemy 2.0 | TailwindCSS |
    | Celery + Redis | React Query |
    | PostgreSQL + pgvector | Zustand |

    ## 快速开始

    ### 方式一:生产环境部署( Docker 一键启动,推荐)

    只需安装 Docker ,几条命令启动所有服务:

    ```bash
    # 1. 启动所有服务
    docker compose -f docker-compose.prod.yml up -d

    # 2. 初始化数据库(首次部署必须执行)
    docker exec -it rss_manager_backend alembic upgrade head
    ```

    启动后访问: http://localhost:5666

    包含的服务:
    - PostgreSQL 数据库
    - Redis 缓存
    - 后端 API
    - Celery 定时任务(自动抓取订阅源)
    - 前端界面

    停止服务:
    ```bash
    docker compose -f docker-compose.prod.yml down
    ```

    **更新代码后重新部署:**
    ```bash
    # 拉取最新代码后,重建并重启所有服务
    docker compose -f docker-compose.prod.yml up -d --build

    # 如果有数据库结构变更,执行迁移
    docker exec -it rss_manager_backend alembic upgrade head
    ```

    > ⚠️ 如果只重建单个服务(如 `--build backend`),需要同时重启 frontend ,否则 nginx 会因 DNS 缓存连接失败:
    > ```bash
    > docker compose -f docker-compose.prod.yml up -d --build backend
    > docker restart rss_manager_frontend
    > ```

    ### 方式二:开发环境( SQLite ,无需 Docker )

    适合本地开发调试,不支持定时抓取功能和 AI 语义搜索(会自动回退到关键词搜索)。

    **后端设置:**
    ```bash
    cd backend
    python -m venv venv
    .\venv\Scripts\activate # Linux/Mac: source venv/bin/activate
    pip install -e ".[dev]"
    copy .env.sqlite .env # Linux/Mac: cp .env.sqlite .env
    alembic upgrade head
    uvicorn app.main:app --reload
    ```

    **前端设置(新终端):**
    ```bash
    cd frontend
    npm install
    npm run dev
    ```

    访问: http://localhost:5173

    ### 方式三:开发环境 + 定时抓取(需要 Docker )

    使用 Docker 运行 PostgreSQL 和 Redis ,本地运行代码。

    **1. 启动数据库:**
    ```bash
    docker compose up -d postgres redis
    ```

    **2. 后端设置:**
    ```bash
    cd backend
    python -m venv venv
    .\venv\Scripts\activate
    pip install -e ".[dev]"
    copy .env.postgres .env
    alembic upgrade head
    uvicorn app.main:app --reload
    ```

    **3. 启动定时任务(新终端):**
    ```bash
    cd backend
    .\venv\Scripts\activate
    celery -A app.tasks.celery_app worker --loglevel=info --pool=solo
    ```

    **4. 启动调度器(新终端):**
    ```bash
    cd backend
    .\venv\Scripts\activate
    celery -A app.tasks.celery_app beat --loglevel=info
    ```

    **5. 前端设置(新终端):**
    ```bash
    cd frontend
    npm install
    npm run dev
    ```

    > Windows 上 Celery Worker 需要 `--pool=solo` 参数

    ## AI 智能内容分析

    AI 分析功能允许你使用自然语言查询订阅的文章内容,系统会通过语义搜索找到相关文章,并生成 AI 分析总结。

    ### 功能特点

    - 🔍 **语义搜索**:基于 pgvector 向量数据库,理解查询意图而非简单关键词匹配
    - 📊 **AI 分析总结**:自动生成主题分类、关键点提取、趋势识别
    - 📈 **相关度排序**:按语义相似度排序,最相关的文章优先展示
    - 📝 **查询历史**:保存最近 10 条查询,支持快速重新执行
    - 🔄 **智能回退**:当语义搜索不可用时,自动回退到关键词搜索

    ### 使用方法

    1. 在侧边栏点击「 AI 分析」进入分析页面
    2. 在搜索框输入自然语言查询,例如:
    - "Python 相关的技术文章"
    - "最近的 AI 发展趋势"
    - "前端框架对比"
    3. 点击「分析」按钮,等待 AI 处理
    4. 查看 AI 生成的分析总结和相关文章列表

    ### 技术要求

    - **数据库**:需要使用 PostgreSQL + pgvector (生产环境 Docker 配置已包含)
    - **AI 服务**:需要配置 OpenAI 或兼容的 AI 服务(用于生成 embedding 和分析)
    - **注意**:SQLite 开发模式不支持语义搜索,会自动回退到关键词搜索

    ### 配置 Embedding 模型

    1. 进入「设置 → AI 设置」
    2. 在「 Embedding 模型」区域选择 AI 渠道
    3. 输入 embedding 模型名称(如 `text-embedding-3-small`)
    4. 点击「保存 Embedding 配置」

    常用 Embedding 模型:
    - `text-embedding-3-small` - OpenAI 推荐,性价比高
    - `text-embedding-3-large` - 更高精度
    - `text-embedding-ada-002` - 旧版模型

    ### Embedding 生成

    文章的向量嵌入( embedding )通过 Celery 后台任务异步生成:
    - 需要先配置 Embedding 模型才能生成
    - 批量生成任务:`generate_embeddings_batch`(通过 Celery 调用)
    - embedding 生成失败不会影响文章保存,会自动回退到关键词搜索

    ## 定时任务说明

    | 任务 | 执行频率 | 说明 |
    |------|---------|------|
    | 订阅源刷新 | 每分钟检查 | 根据每个订阅源设置的同步间隔自动抓取 |
    | 自定义规则 | 每分钟检查 | 根据规则设置的间隔执行 |
    | 旧文章清理 | 每天凌晨 3 点 | 清理 90 天前的非收藏文章 |

    ## 默认配置

    **开发环境 (docker-compose.yml):**
    - PostgreSQL: 用户 `rss_manager`,密码 `rss_manager_password`
    - Redis: 无密码

    **生产环境 (docker-compose.prod.yml):**
    - PostgreSQL: 用户 `rss_manager`,密码 `rss_manager_prod_2024`
    - Redis: 密码 `redis_prod_2024`
    - JWT 密钥: `rss_manager_secret_key_2024_production`

    > 部署到公网服务器时,建议通过环境变量修改默认密码

    ## 注意事项

    ### 部署相关
    - 项目可以安装在任意目录,没有路径限制
    - 端口 5666 需要可用,如需修改请编辑 `docker-compose.prod.yml` 中的端口映射
    - 首次部署必须执行数据库迁移:`docker exec -it rss_manager_backend alembic upgrade head`
    - 首个注册的用户将自动成为管理员

    ### 更新部署
    - 修改后端代码(包括 Celery 任务)需要重建对应容器:
    ```bash
    # 重建所有服务(推荐)
    docker compose -f docker-compose.prod.yml up -d --build

    # 或只重建特定服务
    docker compose -f docker-compose.prod.yml up -d --build backend celery_worker celery_beat
    ```
    - 只重建 `backend frontend` 不会更新 Celery 定时任务
    - **数据库结构变更时**,必须执行迁移:
    ```bash
    docker exec -it rss_manager_backend alembic upgrade head
    ```

    ### 从旧版本升级(添加 AI 分析功能)
    如果你是从不支持 AI 分析的旧版本升级,需要执行以下步骤:
    ```bash
    # 1. 备份数据库(可选但推荐)
    docker exec rss_manager_postgres pg_dump -U rss_manager rss_manager > backup.sql

    # 2. 拉取最新代码
    git pull

    # 3. 重建所有服务( PostgreSQL 镜像已更换为支持 pgvector 的版本)
    docker compose -f docker-compose.prod.yml up -d --build

    # 4. 执行数据库迁移(添加 embedding 列和查询历史表)
    docker exec -it rss_manager_backend alembic upgrade head
    ```
    > 数据不会丢失,pgvector 镜像与原 PostgreSQL 镜像完全兼容

    ### 安全建议
    - 公网部署时务必修改默认密码(通过环境变量设置)
    - 建议使用反向代理(如 Nginx )并配置 HTTPS
    - 可以关闭注册功能(管理员在设置页面操作)

    ## 访问地址

    | 服务 | 地址 |
    |------|------|
    | 前端界面(生产) | http://localhost:5666 |
    | 前端界面(开发) | http://localhost:5173 |

    ## 项目结构

    ```
    ├── backend/ # Python FastAPI 后端
    │ ├── app/
    │ │ ├── api/ # API 路由
    │ │ ├── core/ # 核心配置
    │ │ ├── models/ # 数据模型
    │ │ ├── repositories/ # 数据访问层
    │ │ ├── schemas/ # Pydantic 模式
    │ │ ├── services/ # 业务逻辑
    │ │ ├── tasks/ # Celery 后台任务
    │ │ └── utils/ # 工具函数
    │ └── alembic/ # 数据库迁移
    ├── frontend/ # React 前端
    │ └── src/
    │ ├── components/ # UI 组件
    │ ├── pages/ # 页面组件
    │ ├── services/ # API 服务
    │ ├── stores/ # 状态管理
    │ └── types/ # TypeScript 类型
    ├── docker-compose.yml # 开发环境 Docker 配置
    └── docker-compose.prod.yml # 生产环境 Docker 配置
    ```
    目前尚无回复
    关于   ·   帮助文档   ·   自助推广系统   ·   博客   ·   API   ·   FAQ   ·   Solana   ·   916 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 21ms · UTC 21:01 · PVG 05:01 · LAX 13:01 · JFK 16:01
    ♥ Do have faith in what you're doing.