一个完整的流程,用于下载、处理网页内容并创建提示词的向量嵌入索引。该系统能以革命性的方式将普通网页内容转化为向量嵌入,并以先进的RAG(检索增强生成)技术提供提示词查询功能!
为了帮助您更直观地了解PromptRAG系统的工作原理和使用方法,我们准备了详细的演示视频。视频展示了从网页内容下载、文本处理、向量化到最终提示词检索的完整流程。
视频目录:
- 系统架构概述 (00:15)
- 网页内容采集过程 (01:30)
- 文本预处理与分块技术 (03:45)
- 向量嵌入生成 (05:20)
- 提示词检索示例 (07:15)
- 高级应用场景 (09:30)
视频链接: PromptRAG系统完整演示
提取码: f1jf
注:演示视频与预处理数据集均已上传至百度网盘,便于快速部署和体验系统功能。
- 强大的网页下载器:高效下载指定网站内容
- 精确的内容分块系统:以科学方式将文本分成最优块
- 高性能向量化引擎:生成先进、纯粹的文本嵌入表示
- 优质提示词检索器:使用向量相似度技术寻找相关提示词
- 直观的嵌入可视化:在2D/3D空间中查看嵌入分布
克隆仓库并安装依赖:
git clone https://github.com/2799662352/prompt_rag.git
cd prompt_rag
pip install -r requirements.txt- 在
websites_to_download.txt中添加要下载的网站URL - 下载网页内容:
python downloader.py- 处理和整理内容:
python page_curator.py --input artifacts/downloaded_sites/your-domain-name- 将内容分块:
python chunker.py --input artifacts/curated/your-domain-name --chunk-size 400 --chunk-overlap 20- 生成向量嵌入:
python vectorizer.py --input artifacts/chunks/your-domain-name_chunks_SZ_400_O_20.jsonl- 启动提示词检索服务器:
python ../rag-mcp/prompt_server.py -d ./artifacts/vector_stores/chroma_db -c your-domain-name_chunks_SZ_400_O_20_all-MiniLM-L6-v2- (可选)可视化嵌入:
python visualizer.py --collection your-domain-name_chunks_SZ_400_O_20_all-MiniLM-L6-v2prompt_rag/
├── artifacts/ # 所有生成文件的目录
│ ├── chunks/ # 处理后的文本块
│ ├── curated/ # 整理后的文本文件
│ ├── downloaded_sites/ # 下载的原始HTML
│ ├── vector_stores/ # 向量数据库
│ └── visualizations/ # 嵌入可视化结果
├── chunker.py # 文本分块处理器
├── downloader.py # 网页下载工具
├── page_curator.py # 内容整理工具
├── requirements.txt # 项目依赖清单
├── txt_to_markdown.py # 文本转Markdown工具
├── vectorizer.py # 向量嵌入生成器
├── visualizer.py # 嵌入可视化工具
└── websites_to_download.txt # 要下载的网站列表
从websites_to_download.txt中列出的网站下载HTML内容:
python downloader.py --delay 1.0选项:
--delay/-d: 请求之间的延迟(秒)(默认:1.0)
清理HTML并转换为markdown格式:
python page_curator.py --input artifacts/downloaded_sites/your-domain-name选项:
--input/-i: 包含下载HTML的输入目录
将markdown文件分割成可管理的块:
python chunker.py --input artifacts/curated/your-domain-name --chunk-size 400 --chunk-overlap 20选项:
--input/-i: 包含markdown文件的输入目录--chunk-size/-s: 块的最大字符大小(默认:400)--chunk-overlap/-v: 块之间的重叠字符数(默认:20)
生成嵌入并存储在ChromaDB中:
python vectorizer.py --input artifacts/chunks/your-domain-name_chunks_SZ_400_O_20.jsonl选项:
-
--input/-i: 包含文本块的JSONL文件 -
--db/-d: ChromaDB向量数据库目录(默认:artifacts/vector_stores/chroma_db) -
--model/-m: 使用的sentence-transformer模型名称(默认:sentence-transformers/all-MiniLM-L6-v2) -
--batch-size/-b: 嵌入生成的批处理大小(默认:32) -
懒得找预料就直接百度云启动 通过网盘分享的文件:artifacts 链接: https://pan.baidu.com/s/1et5TwKCCwmvoeAXd6e1ojw?pwd=f1jf 提取码: f1jf --来自百度网盘超级会员v1的分享****
使用MCP协议提供提示词检索功能:
python ../rag-mcp/prompt_server.py -d ./artifacts/vector_stores/chroma_db -c your-domain-name_chunks_SZ_400_O_20_all-MiniLM-L6-v2选项:
--chromadb-path/-d: ChromaDB数据库的路径--collection-name/-c: ChromaDB中的集合名称
创建嵌入的交互式2D/3D可视化:
python visualizer.py --collection your-domain-name_chunks_SZ_400_O_20_all-MiniLM-L6-v2选项:
--db/-d: ChromaDB数据库目录(默认:artifacts/vector_stores/chroma_db)--collection/-c: ChromaDB中的集合名称--max-points/-m: 要可视化的最大点数(默认:2000)--seed/-s: 随机种子(默认:42)--clusters/-k: 聚类数量(默认:10)
该项目使用了以下技术:
- Python: 主要编程语言
- ChromaDB: 高性能向量数据库
- Sentence Transformers: 先进的文本嵌入模型
- UMAP: 用于降维和可视化
- BeautifulSoup: HTML内容解析和清理
- LangChain: 文本分块和处理
- Plotly: 交互式2D/3D可视化
.gitignore设置为排除artifacts目录,以避免提交大型文件。- 对于大型网站,建议在
downloader.py中调整延迟以避免速率限制。 - 大型集合的向量嵌入可能需要较大内存。
- 集合名称会自动保存在artifacts/vector_stores/collections.txt中,便于后续使用。
MIT许可