WebRAG 是一个基于 RAG (Retrieval-Augmented Generation) 的网页内容检索和问答系统。该系统能够自动抓取、处理和存储网页内容,并通过向量检索和 LLM 生成来回答用户问题。
- 自动网页内容抓取和处理
- 多线程并行爬取和下载
- 智能内容提取和向量化
- 基于向量检索的文档查询
- 大语言模型驱动的问答系统
- 模块化设计,易于扩展
系统主要包含两个核心模块:
负责网页内容的抓取、处理和向量化存储,包含以下组件:
- 链接提取器:从指定网站提取相关链接
- 下载器:异步下载网页内容
- 内容整理器:将 HTML 转换为 Markdown
- 向量化器:将文本转换为向量并存储
- 数据库初始化:创建必要的目录结构
负责处理用户查询和生成回答,包含以下节点:
- LLM节点:调用大语言模型生成回答
- API查询节点:分析用户查询中的 API 相关描述
- Embedding节点:将文本转换为向量表示
- 向量数据库节点:检索相似文档
- 检索器节点:处理和格式化检索结果
- 输出节点:格式化最终输出
- 克隆项目:
git clone https://github.com/poorwym/WebRAG.git
cd WebRAG- 安装依赖:
conda env create -f configs/environments.yml
conda activate webrag
python src/setup.py- 添加环境变量: 在configs/目录下创建.env文件。 内容如下:
OPENAI_API_KEY=your-api-key默认的base_url为https://api.chatanywhere.tech/v1,购买方法详见GPT_API_free.
- 从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/- CLI交互
python src/flow.py- GUI交互
python src/gui.py- 确保已安装所有必要的依赖包
- 配置正确的 API 密钥和基础 URL
- 注意爬取频率,避免对目标网站造成压力
- 定期备份重要数据
- 监控错误日志,及时处理异常情况