GitHub - poorwym/WebRAG

WebRAG 是一个基于 RAG (Retrieval-Augmented Generation) 的网页内容检索和问答系统。该系统能够自动抓取、处理和存储网页内容,并通过向量检索和 LLM 生成来回答用户问题。

功能特性

  • 自动网页内容抓取和处理
  • 多线程并行爬取和下载
  • 智能内容提取和向量化
  • 基于向量检索的文档查询
  • 大语言模型驱动的问答系统
  • 模块化设计,易于扩展

系统架构

系统主要包含两个核心模块:

1. 数据库模块

负责网页内容的抓取、处理和向量化存储,包含以下组件:

  • 链接提取器:从指定网站提取相关链接
  • 下载器:异步下载网页内容
  • 内容整理器:将 HTML 转换为 Markdown
  • 向量化器:将文本转换为向量并存储
  • 数据库初始化:创建必要的目录结构

2. 节点模块

负责处理用户查询和生成回答,包含以下节点:

  • LLM节点:调用大语言模型生成回答
  • API查询节点:分析用户查询中的 API 相关描述
  • Embedding节点:将文本转换为向量表示
  • 向量数据库节点:检索相似文档
  • 检索器节点:处理和格式化检索结果
  • 输出节点:格式化最终输出

安装说明

  1. 克隆项目:
git clone https://github.com/poorwym/WebRAG.git
cd WebRAG
  1. 安装依赖:
conda env create -f configs/environments.yml
conda activate webrag
python src/setup.py
  1. 添加环境变量: 在configs/目录下创建.env文件。 内容如下:
OPENAI_API_KEY=your-api-key

默认的base_url为https://api.chatanywhere.tech/v1,购买方法详见GPT_API_free.

使用方法

  1. 从url构建database
python src/build_db.py --db-name {db_name} --file-path {file_path} --required-prefix {required_prefix}

url提取采取嵌套提取,深度限制为3. 参数说明:

  • db_name: 你的知识库名称
  • file_path: 存放你需要提取的url目录,项目自带cesium参考文档入口作为示例。
  • required_prefix: 用于筛选的url前缀,默认为空

示例:

python src/build_db.py --db-name cesium --file-path ./websites.txt --required-prefix https://cesium.com/learn/
  1. CLI交互
  1. GUI交互

注意事项

  1. 确保已安装所有必要的依赖包
  2. 配置正确的 API 密钥和基础 URL
  3. 注意爬取频率,避免对目标网站造成压力
  4. 定期备份重要数据
  5. 监控错误日志,及时处理异常情况

许可证

MIT License